android 热修复框架目前了解的有qq空间分包方案的HotFix 和Nuwa,还有阿里开源的AndFix和Dexposed.

https://github.com/dodola/HotFix

https://github.com/jasonross/Nuwa

https://github.com/alibaba/AndFix

https://github.com/alibaba/dexposed

关于项目的原理可以看下两位大神的博客学习下:

http://blog.csdn.net/lmj623565791/article/details/49883661

http://blog.csdn.net/qxs965266509/article/details/50390325

由于AndFix只能更改类中的方法实现,而Dexposed目前还不支持Art(5.0在测试中),

所以研究了一下HotFix及Nuwa的实现(dalvik)。

HotFix及Nuwa的实现原理基本一致,都是在Application中将patch包写到第一个dex文件中然后加载修改后的类。由于Nuwa的patch包按照文档说明的流程本人未实现,所以着重研究了下HotFix的实现。

HotFix 文档中只是给出了一个解决混淆的方案,未注明流程,下面是经过测试成功的一个打混淆patch包的流程:

1、在第一次打包apk的时候需要在混淆文件中加入一行代码,输出混淆前后的映射:

mapping.txt

2、打包apk成功后,会在build\outputs\mapping下生成一个mapping文件,此文件需要保持,以后打包混淆patch需要此文件。

3、将修改的类使用eclipse打包jar(注:修改的类不能是在Application中初始化的类)

4、使用android-sdk-windows\tools\proguard\bin\proguardgui.bat 工具对jar包进行混淆

混淆配置文件就使用打包apk时的配置文件,工具的Obfuscation--Apply mapping选项选中,并将打包apk生成的mapping文件引入,执行jar的混淆操作。

5、混淆jar包执行 dx --dex --output=生成的dex包 混淆包 ,生成的dex包就是我们需要的path_dex.jar



更多相关文章

  1. android 中downloadmanager学习
  2. 将ffmpeg移植到Android
  3. 禁用Android系统Home键
  4. android classes.dex 反编译
  5. android数据保存
  6. 使用gradle来编译生成apk
  7. ActionBarSherlock的使用一
  8. Android(安卓)自定义类库打包jar
  9. android 中ids.xml资源的使用

随机推荐

  1. Android(安卓)5.1长按电源键添加重启功能
  2. LayoutInflater的作用和使用方法
  3. Android(安卓)异步开发之 AsyncQueryHand
  4. 谈谈动画架构?
  5. Android自定义数字键盘解析
  6. ✿Android(安卓)3.1 --- 久违的 USB、mtp
  7. Android(安卓)Studio 出现“Emulator: Pr
  8. Android图形---OpenGL
  9. android studio IDE 下,设置ACTIVITY全屏
  10. qemu: could not open disk image