Android依赖项与嵌入AAR中的jar冲突

时间:2018-10-26 14:38:17

标签: android gradle gradle-dependencies

我通过将aar导入为应用程序模块来使用Android库项目。该应用程序在调试模式下可以正常编译,但是当我尝试在发行版中进行编译时,出现以下错误:

Error: Program type already present: com.google.gson.DefaultDateTypeAdapter

因此我在gson的依赖项中进行了挖掘,发现aar文件中包含一堆嵌入式jar文件,它似乎与我的外部依赖项(特别是Retrofit,OkHttp和Gson)冲突。

>

enter image description here

当我导入aar模块但没有运气时,我试图排除com.google.code.gson组,但没有任何改变:

implementation(project(':ONprintWS')) {
    exclude group: 'com.google.code.gson'
}

我还认为我可能可以在build.gradle中删除改造依赖,因为它们是如何从aar中包含的,但是当我这样做时,我的班级再也找不到改造/ gson包了。

我已经要求SDK维护人员在不使用嵌入式jar的情况下重建SDK(而是使用传递依赖项),但是可能暂时不会发生,反正有必要删除嵌入式jar吗?

已编辑以显示gradle排除项,但仍不起作用

//Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation "com.google.code.gson:gson:2.8.5"
implementation("com.squareup.retrofit2:converter-gson:2.4.0") {
    exclude group: "com.google.code.gson"
}
implementation "com.squareup.retrofit2:adapter-rxjava2:2.4.0"
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'

// ONprintWS SDK
implementation 'io.realm:realm-gradle-plugin:5.3.0'
implementation(project(':ONprintWS')) { // v1.0.4
    exclude group: "com.squareup.retrofit2"
    exclude group: "com.squareup.okhttp3"
    exclude group: "com.google.code.gson"
}

1 个答案:

答案 0 :(得分:1)

可以尝试代替使用exclude的一件事是为给定的依赖项提供resolutionStrategy,例如:

configurations.all { 
    resolutionStrategy { 
       force "com.android.support:support-v13:$SUPPORT_LIBRARY_VERSION" 
    } 
}
dependencies部分中的

。这样可以确保为给定的软件包指定了特定的版本