我正在尝试在我的 android 应用程序中实现热修复机制。谷歌搜索了一段时间后,这是我所做的:
- 我生成了一个
dynamic.jar
包含要修补的类的文件。(我正在使用 Eclipse 和 ADT) - 使用
dx --dex --output=patch.jar dynamic.jar
,我设法创建了一个 jar 文件,其中包含classes.dex
- 在我的 android 代码中,我使用 DexClassLoader 加载了类:(
new DexClassLoader(patchFile.getAbsolutePath(), outputFolder.getAbsolutePath(), null, getClassLoader().getParent()
注意我正在使用 getParent()) - 我已验证
.dex
文件已成功提取outputFolder
- 我通过反射将类加载器更改为我的自定义类加载器。而且我已经验证了自定义类加载器正在工作
- 当我尝试加载课程时,
CUSTOM_LOADER.loadClass(className)
我得到了ClassNotFoundException
所以我想知道有什么问题吗?我曾经DexFile
列出该.dex
文件中的所有类,并且新类就在那里。是否甚至可以从 Internet 下载已编译类的子集?
提前致谢。