У нас есть сторонний файл aar, который из соображений размера мы решили разделить на отдельный динамический элемент (модуль).
И основное приложение, и динамический модуль используют com.google.code.gson:gson
когда они были в одном модуле, мы удалили нашу зависимость до gson
, но теперь нашему главному модулю это нужно.
Сборка проекта в порядке, но когда мы пытаемся собрать комплект (ы), мы получаем
"Тип программы уже представлен: com.google.gson.FieldNamingPolicy $ 5"
Ошибка
Мы попытались исключить gson из модуля модуля: как в разделах зависимостей, так и в разделах Android, но безуспешно это сторонний пользователь, поэтому у нас нет доступа к его коду или зависимостям.
Основное приложение gradle:
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