Android Studio gradle 风格未正确显示构建变体

问题描述

我无法理解 Android Studio 中的构建变体。我创建了一个空项目并添加了以下产品口味。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsversion "30.0.3"

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    flavorDimensions "version"
    productFlavors {
        demo {
            applicationIdSuffix ".demo"
        }
        full {
            applicationIdSuffix ".full"
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation filetree(dir: 'libs',include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

我将项目与 gradle 文件同步,但我只得到了 demoDebug 变体。根据我的理解,我应该得到,

  • 演示调试
  • 演示发布
  • 完整调试
  • 完整发布

我有没有做错什么?非常感谢任何帮助。

解决方法

像这样指定风味块中每种风味的维度

flavorDimensions "version"
    productFlavors {
        demo {
            dimension 'version'
            applicationIdSuffix ".demo"
        }
        full {
            dimension 'version'
            applicationIdSuffix ".full"
        }
    }
,

尝试手动将您的项目与成绩文件同步。根据您的 Android Studio 版本使用以下任一项:

Tools -> Android -> Sync Project with Gradle Files [对于较旧的 Android Studio 版本]

File -> Sync Project with Gradle Files [适用于较新的 Android Studio 版本]

,

在您的 /gradle/gradle-wrapper.properties 文件中,将以下设置更新为:

distributionUrl=https://services.gradle.org/distributions/gradle-6.1.1-all.zip

现在,转到工具 -> Android -> 同步项目与 Gradle 文件

这将下载 Gradle 的最新发行版,并在完成后自动重新加载您的项目和构建变体。

确保将项目的 build.gradle 文件更新为

依赖项{ 类路径 'com.android.tools.build:gradle:4.0.2' }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...