目录
Tinker接入文档
1 Tinker简介
1.1Tinker优点
1.2 Tinker缺点
2 Tinker 接入过程
2.1 配置过程
2.2 使用过程
2.3 注意事项
1.Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件(1.9.0支持新增非export的Activity);
2.由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码;
3.在Android N上,补丁对应用启动时间有轻微的影响;
4.不支持部分三星android-21机型,加载补丁时会主动抛出"TinkerRuntimeException:checkDexInstall failed";
5.对于资源替换,不支持修改remoteView。例如transition动画,notification icon以及桌面图标。
关于Tinker运行机制和详细对比请参考“微信Android热补丁实践演进之路”
注意:本文基于完全新建项目之上,加粗文字是重点。
相关资源地址:https://download.csdn.net/download/sw1995126/10706198
第一步在build.gradle添加
classpath ("com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:${TINKERPATCH_VERSION}") { changing = true }
如下:
并同时在gradle.properties中添加
TINKERPATCH_VERSION=1.2.6
如下:
否则会出现错误:
原因:
没有指定TINKERPATCH_VERSION版本号
补充:
建议使用最新版本地址:http://tinkerpatch.com/Docs/changelog,目前是1.2.8,改版本不用变其它的但是不同版本之间不能使用。
第二步在app/build.gradle加入Tinker的sdk
compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:${TINKERPATCH_VERSION}") { changing = true }
如下:
第三步在app目录下添加tinkerpatch.gradle
如下:
可以将我提供的tinkerpatch.gradle直接复制过去。具体sdk配置参考
http://tinkerpatch.com/Docs/SDK
然后在app/build.gradle加入
apply from: 'tinkerpatch.gradle'
如下:
第四步 添加初始化 TinkerPatch SDK的类
这里我们使用的是一键接入功能,也就是官方的Application 类。如需自定义请参考
http://tinkerpatch.com/Docs/SDK的“第四步 初始化 TinkerPatch SDK”
可以将我提供的SampleApplication.java直接复制到app的Java目录下即可
如下:
然后需要在app/build.gradle加入代码:
multiDexEnabled true
如下:
否则会出现错误:
在SampleApplication.java中
如果还有问题就加入
compile 'com.android.support:multidex:1.0.1'
接着在app/AndroidManifest.xml加入
android:name=".SampleApplication"
如下:
为方便查看补丁效果和加快更新速度添加一个Toast和Button。
注意:如需在Debug模式调试程序将tinkerpatch.gradle中的
tinkerEnable变为false 就是关闭Tinker功能
设置如下:
第一步配置签名
推荐Android studio自带签名工具,否则可能会出现不识别签名的情况
简单介绍下:
在Android studio的菜单栏File下选择Project Structure的Signing
如图:
然后在Build Types中选择release
如图:
第二步登录Tinker Platform平台,注册账号进入之后,点击新增app,名字可以随便起如下:
记住appKey,之后点击添加APP版本,版本号不能乱填,这个也要记住,我填的是1.0
如图:
第三步根据在平台上获取到的信息修改tinkerpatch.gradle里的配置
如图:
第四步生成release包(也就是基包)
在Android Studio右上角点击Gradle,然后双击assembleRelese
如图:
按照如下路径找到apk,复制并安装到测试工具上
如图:
可以观察到如图现象
第五步创建补丁包
按照apk的路径修改tinkerpatch.gradle里的配置
如图:
然后修改app的代码
这里把Toast改了
Toast.makeText(this,"这是补丁",Toast.LENGTH_LONG).show();
最后生成补丁包
双击如下图的tinkerPatchRelese
没看见tinker刷新一下
按下图路径找到patch_signed_7zip.apk
第六步发布补丁,最后到平台发布就可以了,点击提交就好了。
如图:
第七步看效果,这里使用Button强制更新,记住一定要打开关闭再打开app才能看到效果。
如图:
1.Tinker的更新是只能针对同一个版本的app更新,时间越久更新包越大,它不能更新app版本。
2.更新的成功率不是100%,有一定的失败率可以通过后台查看
如图: