2

我有一个从 android 应用程序创建的 jar 文件,因为我在创建时将其标记为 Eclipse 中的“Is library”。现在 DexClassLoader 无法加载此文件,因为它没有标记为 classes.dex 的条目。这看起来像一个标准的罐子。如何将这样的 jar 转换为 DexClassLoader 可以加载的带有 dx 的 dexed jar?任何帮助表示赞赏!

4

2 回答 2

5

您可以从命令行使用 sdk 中的 dx 工具。就像是:

dx --dex --output=dexed.jar hello.jar

为我工作。将这些东西集成到您的构建过程中是一种黑艺术,主要涉及破解 SDK 提供的 ant 构建脚本。如果您的库只是偶尔更新,则手动更新可能是可行的。

就我而言,我将 dexed.jar 保存在我的资源/原始文件夹中。在运行时,我将它从那里复制到文件系统中,然后将文件系统路径传递给 DexClassLoader。这……有点颠簸。

于 2012-07-20T07:00:01.410 回答
0

Android 库并不意味着要在设备上启动。它们只能作为 Android 项目的一部分包含在内,这会将所有引用的 Android 库 .jar 文件转换为单个共享.dex文件并将它们打包到.apk文件中。

如果你想测试你的 Android 库并且它的清单实际上有一些入口点,那么唯一的方法就是暂时将 Android 库更改为 Android 项目(通过检查设置中的检查栏)。

于 2012-07-20T06:55:25.473 回答