tinker(二)-使用TinkerPatch 平台-集成

版权声明:本文为博主原创文章,转载请注明。 https://blog.csdn.net/qq_34698126/article/details/75169095

感觉直接使用tinker,文档有很多没有说清楚的地方,也需要自己去搭建不定平台,所以建议使用TinkerPatch 平台去做热更新,看自己实际情况吧。

一、project的gradle集成:

dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        // TinkerPatch 插件
        classpath "com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:1.1.7"
    }

二、module的gradle集成:

apply from: 'tinkerpatch.gradle'
dependencies {
       
//可选,用于生成applicationprovided("com.tinkerpatch.tinker:tinker-android-anno:1.7.11")
//无需引入tinker的任何库,使用tinkerpatch sdk即可
compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:1.1.7")
}

需要将tinkerpatch.gradle复制到module的个目录

三、Application设置:

1、先在tinkerpatch.gradle设置  reflectApplication = true

2、Application:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

@Override
public void onCreate() {
    MultiDex.install(this);
    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();
        }
    }


四、tinkerpatch.gradle配置:

1、在tinkerpatch的官网中注册,获取appKey:

appKey = "3e20c4212df0b421"

/** 注意: 若发布新的全量包, appVersion一定要更新 **/
appVersion = "1.2.1"

2、如果需要加固,增加以下代码,也可以参考:https://github.com/TinkerPatch/tinkerpatch-flavors-sample/blob/master/app/tinkerpatch.gradle:

productFlavors {
    flavor {
        flavorName = "protect"
        appVersion = "${tinkerpatchSupport.appVersion}_${flavorName}"

        pathPrefix = "${bakPath}/${baseInfo}/${flavorName}-${variantName}/"
        name = "${project.name}-${flavorName}-${variantName}"

        baseApkFile = "${pathPrefix}/${name}.apk"
        baseProguardMappingFile = "${pathPrefix}/${name}-mapping.txt"
        baseResourceRFile = "${pathPrefix}/${name}-R.txt"

        /** 开启加固开关,上传此flavorapk到加固网站进行加固 **/
        protectedApp = true
    }

    flavor {
        flavorName = "flavor1"
        appVersion = "${tinkerpatchSupport.appVersion}_${flavorName}"

        pathPrefix = "${bakPath}/${baseInfo}/${flavorName}-${variantName}/"
        name = "${project.name}-${flavorName}-${variantName}"

        baseApkFile = "${pathPrefix}/${name}.apk"
        baseProguardMappingFile = "${pathPrefix}/${name}-mapping.txt"
        baseResourceRFile = "${pathPrefix}/${name}-R.txt"
    }
}

具体参考:https://github.com/TinkerPatch/tinkerpatch-flavors-sample




猜你喜欢

转载自blog.csdn.net/qq_34698126/article/details/75169095