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

来源:互联网 发布:vb调用matlab的dll 编辑:程序博客网 时间:2024/06/02 04:29

感觉直接使用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:

@Overrideprotected void attachBaseContext(Context base) {    super.attachBaseContext(base);    MultiDex.install(this);}@Overridepublic 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




原创粉丝点击