android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

时间:2024-04-11 07:20:55

 

 

背景:因为公司安排的需求是让设备自动更新,更新只需要一行代码,而且我们公司的安卓设备不带触屏功能,所以只好写在activity的onCreate()中了,让设备重启第一次下载补丁包,第二次重启打开就成为新的app了。

本博客说明内容分为:接入、使用。

接入步骤:

一、Tinker平台注册账户,新增app、记录appKey,需要填入的版本号跟你app目前版本一致。

  android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

二、在gradle.properties 文件中写入 tinkerSDK的版本号 : 

贴上代码:TINKERPATCH_VERSION=1.2.6

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

三、在工程的build.gandle 中 dependencies 节点下关联 TinkerPatch 插件:

贴上代码:

classpath ("com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:${TINKERPATCH_VERSION}") { changing = true }

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

四、在app的build.grandle文件中关联tinkerSDK和关联tinkerpatch.gradle.

贴入代码:

       1.  app的build.grandle的 dependencies {} 节点中:

 

compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:${TINKERPATCH_VERSION}") { changing = true }

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

       2.   app的build.grandle的根目录下: 

 apply from: 'tinkerpatch.gradle'

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

五、将 tinkerpatch.gradle 文件拷贝至自己的工程目录下的这个位置,并根据自身情况修改内容。

 android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

六、在项目结构中配置签名

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

七、自己的Application中加入初始化tinker的代码。

贴入代码:

@Override
    public void onCreate() {
        super.onCreate();
        initTinkerPatch();
}
   /**
     * 我们需要确保至少对主进程跟patch进程初始化 TinkerPatch
     */
    private void initTinkerPatch() {
        // 我们可以从这里获得Tinker加载过程的信息
        if (BuildConfig.TINKER_ENABLE) {
            tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();
            // 初始化TinkerPatch SDK
            TinkerPatch.init(
                tinkerApplicationLike
//                new TinkerPatch.Builder(tinkerApplicationLike)
//                    .requestLoader(new OkHttp3Loader())
//                    .build()
            )
                .reflectPatchLibrary()
                .setPatchRollbackOnScreenOff(true)
                .setPatchRestartOnSrceenOff(true)
                .setFetchPatchIntervalByHours(3)
            ;
            // 获取当前的补丁版本
            Log.d(TAG, "Current patch version is " + TinkerPatch.with().getPatchVersion());

            // fetchPatchUpdateAndPollWithInterval 与 fetchPatchUpdate(false)
            // 不同的是,会通过handler的方式去轮询
            TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();
        }
    }

在自己要刷新的地方贴入代码:

//向tinker平台请求刷新差异补丁包
TinkerPatch.with().fetchPatchUpdate(true);

 

八、打开 在AndroidStudio中的右上角gradle。选择自己的渠道,双击assemble,我选中的是百度。

gradle过后,会在app/build下生成bakApk文件夹。里面有个app-开头的文件夹。这个是每次assemble后生成的,此文件夹下有签名过后的基础包。

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

 九、在测试设备上安装基础包,以及将上图文件夹名称填入后。开始构建tinker的差异补丁包。

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

十、双击tinkerPatch***Release后,在app/build/outputs/tinkerPatch 文件夹下生成差异补丁包。

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

十一、将 patch_signed_7zip.apk 上传至平台上。

android热更新腾讯系Tinker平台接入和使用详细步骤,带你跳过各种暗坑

十二、打开测试设备上安装自己的程序基础包,此时操作下

贴入 TinkerPatch.with().fetchPatchUpdate(true); 

的地方,然后退出程序,重新打开,此时app已经更新啦!!!

可以自己再多测试几遍生成差异补丁包、上传、更新。。。