Мне трудно заставить 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 {
...
}