我有一个用android应用程序创建的jar文件,因为我在创建时将它标记为eclipse中的“Is library”。现在DexClassLoader无法加载此文件,因为它没有标记为classes.dex的条目。这看起来像一个标准的罐子。如何将这样的jar转换为dexed jar,其中包含DexClassLoader可以加载的dx?任何帮助表示赞赏!
答案 0 :(得分:5)
您可以从命令行使用sdk中的dx工具。类似的东西:
dx --dex --output=dexed.jar hello.jar
适合我。将这些东西集成到您的构建过程中是一种黑色艺术,主要涉及破解SDK提供的ant构建脚本。如果您的库只是偶尔更新,那么手动执行它可能是可行的。
在我的情况下,我将dexed.jar保存在我的resources / raw文件夹中。在运行时,我将它从那里复制到文件系统,然后将文件系统路径传递给DexClassLoader。它......有点颠簸。
答案 1 :(得分:0)
Android库不适合在设备上启动。它们只能作为Android项目的一部分包含在内,它会将所有引用的Android Library .jar文件转换为单个共享.dex
文件,并将它们打包到.apk
文件。
如果你想测试你的Android库并且它的清单实际上有一些入口点,那么唯一的方法就是暂时将Android库更改为Android Project(通过在设置中勾选该检查栏)。