-
依赖引入
dependencies { // ... //可选,用于生成application类 provided('com.tencent.tinker:tinker-android-anno:1.7.7') //tinker的核心库 compile('com.tencent.tinker:tinker-android-lib:1.7.7') }
-
配置签名
-
新建一个class extends ApplicationLike,并配置Application 名称,这里名称随便写,之后make project 会按照这个名字生成Application 类,然后在AndroidManifest.xml
-
loadPatch,这里随便添加按钮点击才loadPatch
public void loadPatch(View view) { TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(), Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed.apk"); } 注意权限:6.0还需要动态申请 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
在AndroidManifest里面注册TICK ID
//... -
生成patch 使用tinker-patch-cli 工具
需要注意的就是tinker_config.xml,里面包含tinker的配置,例如签名文件等。
这里我们直接使用tinker提供的签名文件,所以不需要做修改,不过里面有个Application的item修改为与本例一致:
java -jar tinker-patch-cli-1.7.7.jar -old old.apk -new new.apk -config tinker_config.xml -out output
1.运行安装报错;原因没有添加混淆。
2.修复失败;
1)6.0要添加写卡动态询问权限。
2)两次mapping必须一致,签名必须一致。