Как исправить ошибку "Тип программы уже присутствует", когда динамическая функция использует внешнюю зависимость aar

У нас есть сторонний файл 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'

динамическая функция gradle:

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

0 ответов

Другие вопросы по тегам