Android Tinker热更新,非TinkerPlatform

下面的文章只是和微信的 tinker 有关,和收费的 tinkerPlatform 还有 buglyTinker 无关。

下面是 tinker 在 GitHub 给出的官网文档:https://github.com/Tencent/tinker

tinker 的优势以及和 QZone、AndFix、Robust 的对比效果就不再说了,想了解自行搜索。

下面是 tinker Android 版本给出的 demo:https://github.com/Tencent/tinker/tree/master/tinker-sample-android,也就是下面这个:

将最上面的 GitHub 项目下载下来,用 AndroidStudio 打开我们的 tinker-sample-android;编译完毕会出现下面的错误:

将 app 下面的 build.gradle 中的 tinkerId = getTinkerIdValue() 替换为 tinkerId = "tinkerId" ,如下图所示

再将 ignoreWarning = false 替换为 ignoreWarning = true ,如下图所示:

替换完毕,下面来运行 debug ,点击右侧 Gradle ,再点击 assembleDebug,如下图所示:

运行完毕,会提示运行成功,如下图:

然后去 app ==> build ==> bacApk 文件夹中发现一个 debug 的 apk 文件,如下图所示:

将上面的 apk 文件运行到我们的手机上,上面的 debug 包就是我们的基准包,运行完毕,可以看到打印出了

i am on onCreate string:I am in the base apk

如下图所示:

基准包创建完毕,下面就演示打补丁包。

回到项目中,将 R.string.test_resource 中的文字改为 I am in the patch apk ,如下图所示:

在 gradle 中找到 tinkerOldApkPath ,将后面的名称改为刚才 debug 包的名称,如下图所示:

点击右侧 Gradle ,再点击 tinkerPatchDebug ,如下图所示:

运行之后,运行成功会如下图显示:

还可以看到补丁包的文件位置:

Tinker patch done, you can go to file to find the output /Users/wuqingsen/ASProject/AS/GitHubXDown/tinker-dev/tinker-sample-android/app/build/outputs/apk/tinkerPatch/debug
-----------------------Tinker patch end-------------------------

BUILD SUCCESSFUL in 3s
32 actionable tasks: 7 executed, 25 up-to-date
16:32:54: Task execution finished 'tinkerPatchDebug'.

在 app ==> outputs ==> apk ==> tinkerPatch ==> debug ==>patch_signed_7zip.apk 找到补丁包,如下图:

将上面的补丁包加入到手机根目录里面,因为项目设置位置为根目录,如下面的代码:

        loadPatchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(), Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed_7zip.apk");
            }
        });

打开 app ,点击 LOAD PATCH ,加载补丁;过两秒点击 KILL SELF。

然后再打开 app,可以看到下面的 log 日志:

i am on onCreate string:I am in the patch apk

补丁加载成功,日志打印如下图:

发布了322 篇原创文章 · 获赞 450 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/wuqingsen1/article/details/103086585