文档章节

android 热修复 HotFix 混淆apk生成patch包方案

c
 chuxuezhe_
发布于 2016/03/02 17:39
字数 452
阅读 729
收藏 5

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



© 著作权归作者所有

共有 人打赏支持
c
粉丝 1
博文 30
码字总数 3597
作品 0
昌平
Android高级之十三讲-HotFix、热加载和热更新

本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 组件化与插件化:前者对功能进行拆分后,独立开发,打成一个包发布;后者对功能拆分,使用主包+分包,可以分别独立发布。...

liuzxgeek
2016/12/14
0
0
git 常用命令收集与git-flow 简介

↑ 编者按:本文由 2号技师 发表于掘金 前言 git 最强大的就是其分支功能,但是如何分支才能更有效的提高开发效率,减少因为代码合并带来的问题,需要一个分支模型来规范,其实在 git flow 出...

奇舞周刊
04/24
0
0
更新日期 2017年9月15日 - Citrix桌面虚拟化平台-交付推荐版本及相关hotfix

更新日志: 9月15日 增加XenApp/XenDesktop 7.15 LTSR,增加XenServer 7.1 LTSR CU1 更新NetScaler推荐版本为11.1.55.10 7月13日 增加7.6 LTSR为CU4版本 7月5日 增加Citrix Optimizer, Windo...

sesame.qian
06/26
0
0
Git Flow分支模型知识点汇总

主要包括以下几个部分的内容: About Basic tips Setup Getting started Features Make a release Hotfixes Commands Backlog About ✨git-flow是一个用来进行高级repo操作的git 扩展集合,它...

趁你还年轻233
06/28
0
0
基于Github的一次git flow实验

一、创建并克隆 repo https://github.com/FrankKai/git-flow-demo.git 二、安装 webstorm git flow 插件 插件名:Git Flow Integration 1.插件安装失败?https://www.jetbrains.com/ 搜索栏 ......

趁你还年轻233
06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【七】组合Action

本章描述了常用定义Action的方法。 自定义action builders 我们在action一章已经看过如何声明一个action——有request parameter、无request parameter、有body parser等等。你可以在 asynch...

Landas
36分钟前
0
0
Spring Boot实战之基础回顾

本文作者: 吴伟祥 本文链接: https://wuweixiang.cn/2018/08/21/Spring-Boot实战之基础回顾/ 版权声明: 本博客所有文章除特别声明外均为原创,采用CC BY-NC-SA 4.0 许可协议。转载请在文章开...

吴伟祥
37分钟前
0
0
OAuth认证开发

提示: 以下测试是基于项目安装成功,初始化数据库(initial_db.ddl, oauth.ddl, initial_data.ddl)后的测试, 也可在页面上点击"client_details"菜单里进行测试 方式1:基于浏览器 (grant_type=...

舒文joven
45分钟前
1
0
第二章-对象及变量的并发访问-第二篇

锁对象的改变 请阅读如下代码 public class MainClass { private String lock = "123"; public void printStringB() { try { synchronized (lock) { ......

简心
49分钟前
0
0
日志中记录代理IP以及真实客户端、apache只记录指定URI的日志

apache 日志中记录代理IP以及真实客户端 默认情况下log日志格式为: LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined 其中%h 是记录访问者的IP,如果在web的前...

李超小牛子
58分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部