从下载的dex文件加载类时捕获ClassNotFound异常

时间:2015-02-27 08:58:49

标签: java android classloader dexclassloader

我试图在我的Android应用中实现热修复机制。谷歌搜索了一段时间后,这就是我所做的:

  1. 我生成了一个dynamic.jar文件,其中包含我要修补的类。 (我使用的是eclipse和ADT)
  2. 使用dx --dex --output=patch.jar dynamic.jar,我设法创建了一个包含classes.dex
  3. 的jar文件
  4. 在我的Android代码中,我使用DexClassLoader加载了类:new DexClassLoader(patchFile.getAbsolutePath(), outputFolder.getAbsolutePath(), null, getClassLoader().getParent()(注意我使用了getParent())
  5. 我已在.dex
  6. 中验证outputFolder文件已成功解压缩
  7. 我通过反射将类加载器更改为我的自定义类加载器。我已经验证了自定义类加载器正在运行
  8. 当我尝试使用CUSTOM_LOADER.loadClass(className)加载课程时,我得到ClassNotFoundException
  9. 所以我想知道出了什么问题?我使用DexFile列出了.dex文件中的所有类,新类就在那里。甚至可以从Internet下载编译类的子集吗?

    提前致谢。

0 个答案:

没有答案