Я пытаюсь выяснить, почему мне не удается правильно установить сборку релиза с помощью Android Studio.Это мой блок buildTypes:
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
release {
shrinkResources false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
, и это мои разновидности продукта:
flavorDimensions "version"
productFlavors {
free {
applicationId "com.example.app.free"
dimension "version"
signingConfig signingConfigs.config
}
paid {
applicationId "com.example.app.paid"
dimension "version"
signingConfig signingConfigs.config
}
}
Когда я устанавливаю отладочную платную или бесплатную версии, все в порядке.Ничего плохого.Когда я пытаюсь установить версии выпуска (платные или бесплатные), я получаю:
'Execution failed for task ':app:transformDexArchiveWithDexMergerForFreeRelease'. com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ... Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes. Program type already present: com.google.android.youtube.player.YouTubeApiServiceUtil'
Мои вопросы таковы: почему исключение повторяющегося класса происходит только во время выпуска, когда междуrelease и отладку buildTypes?
EDIT Я решил проблему, удалив зависимость библиотеки YouTubePlayer в gradle (очевидно, моя реализация службы YT Google привела к созданию внутренней библиотекибыть созданным, поэтому в зависимости от импортируемого был избыточным?).Это все еще оставляет мой вопрос в силе.Почему отладка работала, а не релиз, когда ничего не было объявлено иначе?