Проблемы с вариантом сборки Android Studio

Мне трудно заставить Android Studio построить правильный вариант сборки — или даже иногда позволить мне выбрать вариант сборки вообще.

По сути, у меня есть две разные версии моего проекта: бесплатная и «полная». Идентификаторы пакетов: «com.mycompany.myproj» и «com.mycompany.myprojfree».

После того как я указал варианты «myproj» и «myprojfree», а также типы сборки «release» и «debug», Android Studio создает в списке четыре варианта: myprojDebug, myprojfreeDebug, myprojfreeRelease и myprojRelease.

Проблема в том, что выбор одного из них не обеспечивает надежного выбора варианта для сборки, отладки и т. д. Например, я выберу myprojDebug, нажму Debug, и myprojfreeDebug соберет (как видно в консоли), а бесплатный версия откроется на подключенном устройстве.

Более того, иногда я даже не могу выбрать один или несколько вариантов сборки на панели вариантов сборки. Я могу нажать на него, но он не меняется. Но иногда, если я сначала изменю его на что-то другое, он позволит мне вернуться и изменить неизменяемый.

Я видел сообщения о похожих проблемах и следовал всем предложениям — очистке, перестройке, удалению .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 {
    ...
}

comment
Ваш конфиг в порядке. Изменение варианта сборки — это то, что не должно происходить часто. Это требует перекомпиляции всех файлов и занимает некоторое время.   -  person Said    schedule 30.05.2019
comment
Это нормально, чего я и ожидал. Это делается только при основном переключении того, какое (под)приложение компилируется и отлаживается. Тем не менее, я также ожидаю, что это сработает.   -  person KT_    schedule 30.05.2019
comment
Привет, такая же проблема, ты решил?   -  person tehmaestro    schedule 27.11.2019
comment
Честно говоря, то, чем я занимался, это просто уборка и строительство, пока все не станет как надо. В остальном стараюсь этого избегать.   -  person KT_    schedule 02.12.2019
comment
Я застрял на этом на несколько часов, иногда это работает... Я предлагаю «Синхронизировать проект с файлами Gradle».   -  person Alexandre Gombert    schedule 20.01.2020
comment
Я застрял на этом на некоторое время. пробовал все, что вы пробовали, но ничего не получалось. затем я удалил проект из студии Android и повторно импортировал его. все работало. источник: stackoverflow.com/a/45950059/5443056   -  person Braden Holt    schedule 07.04.2020


Ответы (1)


Я почти уверен, что проблема возникла из-за несинхронности между файлами и синхронизацией Gradle.

Так что сделайте «Файл/Синхронизировать проект с файлами Gradle» после изменения варианта сборки. Затем очистите проект, перестройте и запустите.

person Alexandre Gombert    schedule 21.01.2020
comment
замените его с: dependencies { classpath 'com.android.tools.build: gradle: 3.2.1' } на мою Android Studio v3.0.1, в моем случае: dependencies { classpath 'com.android.tools.build: gradle: 3.0. 1' } - person saber tabatabaee yazdi; 11.11.2020