我正在试图弄清楚为什么使用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和debug buildTypes之间没有定义任何不同的内容?
编辑:我通过在gradle中删除YouTubePlayer库依赖项来解决了这个问题(因为显然我的google YT服务实现会导致内部库被创建,所以依赖导入的库是多余的?)。这仍然使我的问题成立。为什么调试可以工作,但发布时却不能,而且没有声明任何不同的东西?