第三方库被添加到 dexedLib 目录下,但该库没有 classes.dex

Third party library gets added under dexedLib directory, but the library does not have classes.dex

为了在我的 Android 应用程序中增加一个功能,我下载了一些第三方库的开源代码。这是为了定制。

我正在使用 Eclipse Juno。

我用源代码创建了一个项目,进行了定制,构建了一个 JAR。而且,我在我的项目中使用 JAR 库。我的应用程序中的代码在特定屏幕上调用库的适当功能。

应用程序编译正常:)

但是,当我 运行 我的应用程序并导航到我正在使用库 classes 的屏幕时,我遇到 ClassNotFoundException 库 class.

我进一步诊断并观察到所有 java class 文件都被 Dalvik VM 转换为 DEX。

所有的第三方库都放在bin下的dexedLib目录下,通常的第三方JAR包括META-INF目录和classes.dex文件。但是,我添加的 JAR 只包含 META-INF 目录而不是 classes.dex。因此例外。

我没有观察到 Dalvik VM 报告转换失败事件的任何日志。

我清理了几次项目,loaded/reloaded 项目进入 Eclipse,但没有成功。

还参考了下面的 post,其中讨论了同样的问题,但对他来说,从 Eclipse 中清除项目并重新加载它仍然有效。 android dexed lib is empty

如有任何帮助,我们将不胜感激。

因为您使用的是 Eclipse,所以问题可能与构建的创建方式有关:

前往: 项目属性 | Java 构建路径 |订购和出口

再次检查您的 jar 是否在列表中(可能已经存在)。 如果是 select 旁边的复选框,以便在创建 apk 时导出 jar。

享受... PS。我建议您转到 Android Studio 或 IntelliJ(Android 工作室之父)。 Eclipse 的 ADT 已弃用,不再维护 ..

我只是 运行 在将 XZing 添加到我的应用程序时遇到了同样的问题。对于 3.2.1 版,eclipse 没有生成 classes.dex 但对于较旧的 2.3.0 版则生成了。 我相信这是因为较新的版本使用 java 1.8 语法,旧的 android SDK 不支持它。