我们有一个第 3 方 aar 文件,出于大小考虑,我们决定拆分为一个单独的动态功能(模块)。主应用程序和动态模块com.google.code.gson:gson
在我们删除依赖项的同一个模块中时都在使用gson
,但现在我们的主模块需要它。
项目构建很好,但是当我们尝试构建捆绑包时,我们得到一个
“程序类型已存在:com.google.gson.FieldNamingPolicy$5”错误
我们试图从模块的 gradle 中排除 gson:在依赖项和 android 部分中,但没有运气。这是第 3 方 aar,因此我们无法访问其代码或依赖项。
主要应用程序梯度:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
mavenCentral()
}
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 16
targetSdkVersion 26
versionCode 91
versionName "1.1.91"
multiDexEnabled true
}
buildTypes {
debug {
versionNameSuffix "-D"
matchingFallbacks = ['debug']
}
release {
matchingFallbacks = ['release']
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
packagingOptions {
pickFirst 'META-INF/license.txt'
pickFirst 'META-INF/DEPENDENCIES'
}
dexOptions {
javaMaxHeapSize "2g"
}
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
targetCompatibility JavaVersion.VERSION_1_8
}
flavorDimensions "permissions"
productFlavors {
}
dynamicFeatures = [":dynamic_feature"]
}
dependencies {
implementation files('libs/gcm.jar')
//...
implementation 'com.google.code.gson:gson:2.8.2'
//...
}
apply plugin: 'com.google.gms.google-services'
动态特征梯度:
apply plugin: 'com.android.dynamic-feature'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
configurations {
//DOES NOT RESOLVE THE PROBLEM
all*.exclude group: 'com.google.gson'
all*.exclude group: 'com.google.code.gson'
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':myapp')
//...
implementation files('libs/sdk.3rd-party.aar')
configurations {
//DOES NOT RESOLVE THE PROBLEM
all*.exclude group: 'com.google.gson'
all*.exclude group: 'com.google.code.gson'
}
}
错误:
org.gradle.execution.MultipleBuildFailures:构建完成,有 1 次失败。...引起:java.lang.RuntimeException:com.android.build.api.transform.TransformException:生成主 dex 列表时出错:合并 dex 档案时出错:程序类型已经存在:com.google.gson.FieldNamingPolicy 5 美元