【问题标题】:Android dependency conflict with jar embedded in aarAndroid依赖与嵌入在aar中的jar冲突
【发布时间】:2018-10-26 14:38:17
【问题描述】:

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

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

于是我翻遍了我的 gson 依赖项,发现 aar 文件中包含了一堆嵌入的 jar 文件,而且它似乎与我的外部依赖项冲突,尤其是 Retrofit、OkHttp 和 Gson

我在导入 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"
}

【问题讨论】:

  • 删除了我的答案,因为它抱怨它找不到 GSON 并抱怨它在添加一次时重复是没有意义的。在 onprint.com 提交支持票

标签: android gradle gradle-dependencies


【解决方案1】:

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

configurations.all { 
    resolutionStrategy { 
       force "com.android.support:support-v13:$SUPPORT_LIBRARY_VERSION" 
    } 
}

dependencies 部分。这将确保为给定包指定特定版本

【讨论】:

  • 说实话,感觉不像是简单的依赖冲突问题……
  • 我让 ONprint SDK 维护人员删除了嵌入的 jar,现在它可以正常工作了。因此,他们的嵌入式 jar 和我的依赖项存在依赖项冲突,但对于我的生活,我不知道为什么 exclude 和 resolutionStrategy 不起作用。似乎 gradle 无法访问嵌入在 aar 包中的 jar。
  • 嗯,是的,猜猜可能是这样吗?很高兴你把它整理好了!
猜你喜欢
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
相关资源
最近更新 更多