首页 > 解决方案 > 多个dex文件定义Lcom/android/volley/toolbox/Volley;

问题描述

我收到一个错误

"多个dex文件定义Lcom/android/volley/toolbox/Volley;

是否可以在单个项目中使用两个 volley 库,即编译com.android.volley:volley:1.0.0和?dev.dworks.libs:volleyplus:+

标签: android-studio

解决方案


如果这两个 volley 库具有不同的包名称,则可以将两者都作为依赖项。但是,使用两个(相同?或相似?)库的附加价值是什么?为什么不重构你的项目来减少你的依赖呢?

针对特定包和类的多个 dex 定义的解决方案是添加适当的打包选项。例如

packagingOptions {
    pickFirst "anyFileWillDo"
    exclude "/secret-data/**"
}

在我看来,拥有重复的库依赖确实不是一个好习惯,它可能会对最终的二进制文件产生一些不确定性。因为pickFirst选项在从正确版本的库中选择类时不确定,所以它只会选择它首先看到的类。

请看这里:https ://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html


推荐阅读