Android 热修复 HotFix 混淆apk生成patch包方案
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
原文地址: http://my.oschina.net/u/992018/blog/628736
Android 热修复 HotFix 混淆apk生成patch包方案相关推荐
- 【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )
文章目录 一.下载官方示例源码 二.处理 TINKER_ID 问题 三.编译 debug 包 四.安装 APK 并运行 五.修改 Gradle 构建脚本中的文件名称 六.修改程序逻辑代码 七.生成 p ...
- Android热修复学习之旅——HotFix完全解析
在上一篇博客 Android热修复学习之旅开篇--热修复概述中,简单介绍了各个热修复框架的原理,本篇博客我将详细分析QQ空间热修复方案. Android dex分包原理介绍 QQ空间热修复方案基于An ...
- 【错误记录】Tinker 热修复示例运行报错 ( patch receive fail: /storage/emulated/0/patch_signed_7zip.apk, code: -2)
文章目录 一.报错信息 二.解决方案 参考 [Android 热修复]运行 Tinker 官方示例 博客 ; 一.报错信息 Tinker 热修复中 , 将生成的 patch 包 app-debug-p ...
- [读书笔记] 深入探索Android热修复技术原理 (手淘技术团队)
热修复技术介绍 探索之路 最开始,手淘是基于Xposed进行了改进,产生了针对Android Dalvik虚拟机运行时的Java Method Hook技术--Dexposed. 但该方案对于底层Da ...
- 热修复系列之一----Android 热修复原理篇及几大方案比较
热修复说白了就是"即时无感打补丁",比如你们公司上线一个app,用户反应有重大bug,需要紧急修复.2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也 ...
- Android 热修复原理篇及几大方案比较
热修复说白了就是"即时无感打补丁",比如你们公司上线一个app,用户反应有重大bug,需要紧急修复.2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也 ...
- Android 热修复方案分析
绝大部分的APP项目其实都需要一个动态化方案,来应对线上紧急bug修复发新版本的高成本.之前有利用加壳,分拆两个dex结合DexClassLoader实现了一套全量更新的热更方案.实现原理在Andro ...
- Android热修复技术选型参考
背景 热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷. 热修复技术对比 1.公司角度 大致可以分为阿里系和腾讯系和其他,如下: 阿里系 Dexposed ...
- Android热修复技术选型——三大流派解析
原文来源:阿里百川 2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以 及微信Tinker,它们在原理各有 ...
最新文章
- 保持寄存器和输入寄存器的区别_串行移位寄存器74HC595
- STM32F10x 使用SysTick的延时函数
- python3(八)sys模块
- Azure DevOps+Docker+Asp.NET Core 实现CI/CD(三.实现CD持续部署管道)
- html5语义化标记元素_语义HTML5元素介绍
- MySQL线上优化_线上MySQL千万级大表,如何优化?
- tp框架使用心得(六)——分页查询
- Struts2 框架
- python打开excel执行vba代码_xlwings:操作Excel,通过宏调用Pyhton(VBA调Python)-Go语言中文社区...
- java nlpir_NLPIR分词工具的使用(java环境下)
- 解决vs2019属性管理器里面没有Microsoft.Cpp.x64.user
- dns备用服务器信息,dns服务器地址(dns首选和备用填多少)
- 他在北京反诈骗15年,守住2亿人密码安全
- 正则表达式:回车和换行的区别
- Android应用内换肤
- 【Python网络蜘蛛】:基础 - 爬虫的基本原理
- 什么是区块链的共识机制?
- 模式分解(2NF、3NF)
- SIGGRAPH中海洋的研究学习
- 关于数据存储的三道面试题,你会吗?