文档章节

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

c
 chuxuezhe_
发布于 2016/03/02 17:39
字数 452
阅读 718
收藏 5
点赞 1
评论 0

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
博文 28
码字总数 3597
作品 0
昌平
Android高级之十三讲-HotFix、热加载和热更新

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

liuzxgeek ⋅ 2016/12/14 ⋅ 0

git 常用命令收集与git-flow 简介

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

奇舞周刊 ⋅ 04/24 ⋅ 0

Android热修复Tinker接入实战

自2016年底Android Studio3.0版本退出以来,Android提出了InstantRun热修复方案,基于这种机制,各种热修复框架竞相涌现,国内的软件大厂纷纷开发了自己的热修复框架。对于热修复的更多介绍大...

code_xzh ⋅ 05/04 ⋅ 0

几张图让你彻底弄懂git工作流(二) ——git分支

上篇文章已经说了Git简史以及Git基础,那么这篇文章简单总结下Git分支 Git分支 为了理解 Git 分支的实现方式,我们需要回顾一下, Git保存的不是文件差异或者变化量,而只是一系列文件快照. G...

Li_小点 ⋅ 05/28 ⋅ 0

搭建私有代码管理平台(Gitlab)和自动化部署平台(Jenkins)

项目本地开发完成后,我们就需要将代码部署到线上服务器。在当下微服务、集群等的流行,单靠传统的部署显然是无法满足当下的需求;但是我们通过Gitlab和Jenkins这两个常用的开源项目,便可搭...

Mr_ET ⋅ 05/15 ⋅ 0

Tinker + Bugly + Jenkins 爬坑之路

前阵子 Android 端的线上崩溃比较多,热修复被提上日程。实现方案是 Tinker,Jenkins 打包,最后补丁包上传到 Bugly 进行分发。主要在 Jenkins 打包这一块爬了不少坑,现记录下来,供大家参考...

cspecialy ⋅ 06/02 ⋅ 0

“百川解码”第一期 热修复的坑和阿里的解

热修复是很多开发者关心的技术,8月27日晚,阿里百川组织了“百川解码”在线直播,以“热修复的坑和阿里的解”为主题,邀请了三位业界嘉宾对热修复技术进行了探讨,并介绍了阿里百川全面接受...

阿里百川 ⋅ 2016/09/12 ⋅ 5

GitFlow分支模型下的代码全量格式化流程

全量格式化还是渐进格式化? 对于一个历史悠久又没有执行强制代码规范的代码库,全量格式化看起来是一件风险不可控的事情:它产生了大量的难以评估的格式改动,也使得格式化以后的代码库运行...

dev_csdn ⋅ 04/08 ⋅ 0

Android 热修复 Tinker接入及源码浅析

本文已在我的公众号hongyangAndroid首发。 转载请标明出处: gold.xitu.io/post/589736… 本文出自张鸿洋的博客 一、概述 放了一个大长假,happy,先祝大家2017年笑口常开。 热修复这项技术,...

Android鸿洋 ⋅ 2017/02/06 ⋅ 0

Android 热修复 Tinker接入及源码浅析

本文已在我的公众号hongyangAndroid首发。 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/54882693 本文出自张鸿洋的博客 一、概述 放了一个大长假,happy,先祝大家...

lmj623565791 ⋅ 2017/02/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具

压缩打包介绍 使用压缩工具的好处: 使用压缩文件,不仅可以节省磁盘空间,而且在传输时还能节省网络宽带。 我们通常讲的家用宽带和机房宽带100M是有区别的: 机房宽带的上行和下行都是100M,...

Linux_老吴 ⋅ 27分钟前 ⋅ 0

SpringBoot热部署加持

概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。所谓的热部署指的...

CodeSheep ⋅ 33分钟前 ⋅ 0

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 今天 ⋅ 5

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部