国家虽安,忘战必危, Android虽爽,不学则忙,老夫纵横江湖数十载,深谙世事之难料,顾。。
ok,ok 不装比了,进入正题,今天要讲的是Android 热修之 thinker。
在研究这个之前,我花了大量的时间 找了网上的一些内容,包括 csdn ,简书之类的文章,发现这些文章对于想要了解 这个thinker的 初学者来说,都tm是垃圾,真的垃圾,现在我来给大家用最通俗易懂的语言来讲讲我的理解。
first of all:对于愈加变态的需求,我们需要不断加强自己, 首先想了解thinker 你需要先看这个,https://github.com/Tencent/tinker/wiki/Tinker-接入指南 ,从上往下一个字不漏的看一遍,然后在文章的2/3处 有demo的 官方demo的试验方法,你先去试验一下 看能否成功,一般来说,只要有点帅的都可以成功,当你成功之后,你就会信心大增,从而开始自己写个小demo来测试,这时候你可能想,这还不是轻轻松松的, 曾几何时 老夫也是这样想,然而其中的坑只能自己啃!!
下面进入 demo 制作时刻:
1 。自己新建一个项目工程,我喜欢最直观的方式展现给大家,如下图所示!:
先按照 thinker官方要求,把gradle 依赖什么的配好,这是根目录的, 然后 配置 项目目录的,如下
这个里面东西有点多 一张图看不了,结尾我会把demo传给大家下载, gradle 里面东西有点多, 所以首页把官方的 gradle全部复制过来,里面有些东西需要稍微修改下,这里需要注意的是 thinker id ,在官方demo里面 这个是
def gitSha() {
try {
String gitRev = 'git rev-parse --short HEAD'.execute(null, project.rootDir).text.trim()
if (gitRev == null) {
throw new GradleException("can't get git rev, you should add git to system path or just input test value, such as 'testTinkerId'")
}
return gitRev
} catch (Exception e) {
throw new GradleException("can't get git rev, you should add git to system path or just input test value, such as 'testTinkerId'")
}
}
这个里面指向的,说实话这我tm看的不是很懂,目前来说... 但是无伤大雅,我们只需要改成自己定义好的 比如;
buildConfigField "String", "TINKER_ID","\"1.0\""
这样子就ok了,这里定义好之后,我们还需要在mainfest里面也 定义一下 thinkid;
<meta-data android:name="TINKER_ID" android:value="1.0" />
像这样,因为官方文档这样说:
TINKER_ID, NEW_TINKER_ID | configField("key", "value"), 默认我们自动从基准安装包与新安装包的Manifest中读取tinkerId,并自动写入configField。在这里,你可以定义其他的信息,在运行时可以通过TinkerLoadResult.getPackageConfigByName得到相应的数值。但是建议直接通过修改代码来实现,例如BuildConfig。 |
当我们把这个改好之后,下面就开始 新建一个activity ,然后我的页面是这样的,
看得出来,非常简单,然后 activity代码这样的;
看的出来非常简单,然后我们把官方demo里面的那些类都拖到这个工程中,就像上面我截图所展示的工程目录一样,然后我们就把目前这个工程当做是 有bug的apk,
然后开始打包, 在AS 的terminal 里面 输入 gradle assembleDebug ,打出一个测试包,这个时候你在 工程目录build 下面可以看到如图所示:
我们把刚刚生产的apk 拖出来 发送到qq,然后安装到手机,这个时候 手机上的为 有bug的apk,下面我们把这个apk的名字 复制一下,在 gradle 里面 把oldpaht的 路径改成这个:如图所示,
这个时候,我们修改一下 activity 里面的代码,如图所示:
这样以后,我们继续按照官方流程:
在AS 的terminal 里面 输入 gradle tinkerPatchDebug ,这个目的相当开始生成有差异的补丁包,运行完以后,可以在 工程目录看到如图:
好,把箭头指向的这个文件 通过adb push到我们手机里面,(这个不懂得同学要去好好了解下,关于了解内容 可以搜索 :Android adb push,你会发现你又学到新东西了),我这里是直接push到sdk的根目录下面, 当这一步也完成之后,剩下你所需要做的就是 点击activity按钮里面的 热修,静静的查看log之日,等他完成。。。。
ok,特么的,我讲的完全不,你特么是不是要给个评论给个赞, 哟哟,check it,面对谁 pg one 几年前的兄弟,我们一直在房间里一直封闭,所以说我觉得 pg one你低俗,你从分赛到现在都没洗衣服,面对你我想举个白旗,因为你tm穿的像个寒流来袭!
下载地址:http://download.youkuaiyun.com/detail/apple_xiangsiyu/9918697