Как исправить ошибку «Тип программы уже присутствует», когда динамическая функция использует внешнюю зависимость aar - PullRequest
0 голосов
/ 17 июня 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...