CtripMobile / DynamicAPK

Solution to implement multi apk dynamic loading and hot fixing for Android App. (实现Android App多apk插件化和动态加载,支持资源分包和热修复)
MIT License
3.03k stars 873 forks source link

Hot Fix补丁如何生成,生成的文件名规则是什么样的,以及放到哪个目录下运行? #40

Open xxxyanchenxxx opened 8 years ago

xxxyanchenxxx commented 8 years ago

看到说能够支持host fix,但看了源码,对host fix的使用还是很云里雾里的.... 关于如何生成,生成后的文件名规则是什么样的,以及放到手机的哪个目录能够运行生效。 看到都没人题,难道就我一个人有这样的疑问??

在源码里面找到了一些有关的代码,但要反推出hot fix的使用还是很难。 /**

谢谢....

xxxyanchenxxx commented 8 years ago

参考https://github.com/CtripMobile/DynamicAPK/issues/18,用AndFix中的apkpatch制作了补丁文件。但不清楚下一步怎么用。

peacepassion commented 8 years ago

@xxxyanchenxxx 看了下源码,我的理解是这样的,hotfix的补丁也是插件项目,但是是放在hotpatch下的hotfix.zip文件,这个文件应该是一个dex,但是在加载进classloader的时候,其优先级比较高,先加载进classloader,可以参考一下BundlePathLoader#expandFieldArray()方法。这样的话,就替换掉了原来有bug的插件。

javalover commented 8 years ago

@peacepassion 我觉得应该不是这么设计的,插件有升级系统,可以BoundleCore#updateBundle,插件不需要hotfix,只需要升级就可以了呀,这个框架的 Hotfix我也还没看懂,看代码是基于 多dex 的方式,但又好像没考虑到 class_ispreverified 的问题