Android Studio构建版本问题

时间:2019-05-29 21:09:23

标签: android-studio build.gradle android-build-flavors android-build-type build-variant

我很难让Android Studio构建正确的构建变体,有时甚至根本无法选择一个构建变体。

基本上,我的项目有两个不同的版本,一个是免费版本,另一个是“完整”版本。软件包ID为“ com.mycompany.myproj”和“ com.mycompany.myprojfree”。

一旦我指定了“ myproj”和“ myprojfree”口味以及“ release”和“ debug”构建类型,Android Studio就会在列表中生成四个变体:myprojDebug,myprojfreeDebug,myprojfreeRelease和myprojRelease。

问题是,选择其中一个并不能可靠地选择用于构建,调试等的变体。例如,我将选择myprojDebug,点击Debug,然后将构建myprojfreeDebug(在控制台中可以看到),免费版本将在连接的设备上打开。

此外,有时我什至无法选择构建版本窗格中的一个或多个构建版本。我可以单击它,但它不会改变。但是有时候,如果我先将其更改为 else ,它会让我返回并更改不变的内容。

我看到过一些帖子涉及相似的问题,并且遵循了所有建议-清理,重建,删除.idea,删除构建文件夹,使缓存无效/重新启动,删除app.iml等。有用。

也许值得一提的是,直到昨天,当我从Android Studio 3.1更新到3.4.1时,所有这些都可以正常工作。

这是我的应用程序build.gradle的简化版本:

apply plugin: 'com.android.application'

android {
    defaultConfig {
        versionCode ...
        multiDexEnabled true
        vectorDrawables {
            useSupportLibrary true
        }
        minSdkVersion 15
        targetSdkVersion 28
    }

    compileSdkVersion 28

    signingConfigs {
        myproj {
            keyAlias ...
            keyPassword ...
            storeFile file('...')
            storePassword ...
        }
        myprojfree {
            keyAlias ...
            keyPassword ...
            storeFile file('...')
            storePassword ...
        }
    }

    flavorDimensions "tier"

    productFlavors {
        myproj {
            signingConfig signingConfigs.myproj
            applicationId 'com.mycompany.myproj'
        }
        myprojfree {
            signingConfig signingConfigs.myprojfree
            applicationId 'com.mycompany.myprojfree'
        }
    }

    buildTypes {
        release {
            debuggable false
            buildConfigField "Boolean", "MY_DEBUG_MODE", "false"
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            gradle.projectsEvaluated {
                tasks.withType(JavaCompile) {
                    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
                }
            }
        }
        debug {
            debuggable true
            buildConfigField "Boolean", "MY_DEBUG_MODE", "true"
            gradle.projectsEvaluated {
                tasks.withType(JavaCompile) {
                    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
                }
            }
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE'
    }

    configurations {
        implementation.exclude group: "org.apache.httpcomponents", module: "httpclient"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    ...
}

1 个答案:

答案 0 :(得分:-1)

我很确定问题是由文件和Gradle同步之间的不同步引起的。

更改Build Variant后,“使用Gradle文件进行文件/同步项目”也是如此。 然后清理项目,重建并运行。