0

所以我正在尝试使用 Tensorflow-lite 版本 0.1.1。

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

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

我正在使用 AGP 3.1.0-alpha5,但我在 alpha06、alpha07 中也遇到错误(不同的错误)...我使用的是 multidex,但它设置正确并且在没有 tensorflow 的情况下工作。

我试图删除 D8(这里的东西并更改 gradle 包装器版本......但仍然没有运气。

我不太明白这个错误是什么意思,那么有人可以解释一下多个 dex 文件定义 LR 的含义吗?或者给出一些解决方案?

编辑1:

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

任何帮助表示赞赏!

4

1 回答 1

1

当您将重复的 namespace.classname 编译到您的代码库中时,会导致此错误。

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

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

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

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

于 2018-01-08T16:33:33.593 回答