Gradle:多个dex文件定义LR

时间:2018-01-08 16:21:08

标签: android gradle android-gradle tensorflow-lite

所以我试图使用Tensorflow-lite版本0.1.1。

但是当我在gradle依赖项中添加库时,我得到了:

  

错误:将字节码转换为dex时出错:原因:   com.android.dex.DexException:多个dex文件定义LR;

我正在使用AGP 3.1.0-alpha5,但我也在alpha06,alpha07中得到错误(不同的)...我正在使用multidex,但它设置正确并且没有张量流。

我试图删除D8(此事here)并更改gradle包装器版本......但仍然没有运气。

我真的不明白这个错误意味着什么,所以有人可以解释多个dex文件定义LR意味着什么吗?或者给出一些解决方案?

编辑1:

我对什么是类/文件 LR 更感兴趣。我知道在我的dex文件中定义了两次类,但是我不明白这个类的含义。因此解决问题变得更加困难。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

如果在代码库中编译了一个重复的namespace.classname,则会导致此错误。

这通常是由重复依赖引起的。通常,罪魁祸首是“传递依赖”,也就是依赖的依赖。

你可以查看你的gradle android资源树来找到罪魁祸首。然后对包含它的依赖项使用transitive = false。

如果您只需删除该子依赖项的部分传递依赖项,请改用exclude。有很多如何做到这一点的例子。

我相信还有一个gradle标志可以说“使用最新”并将其余部分搞定,但这很糟糕,你应该故意使用你的版本。希望有所帮助