1.tinker集成步骤
- 添加依赖
- 初始化
- 生成签名文件
- 打包app并安装
- 生成补丁
- 下发补丁
1.添加依赖
- 添加project依赖
- 添加model依赖
- 添加tinkerPatch.gradle
添加project依赖:打开项目project的gradle添加以下代码
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
// TinkerPatch 插件,添加以下两行代码就行
classpath "com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:1.2.9"
classpath "com.tencent.bugly:tinker-support:1.1.5"
}
}
添加model依赖:打开model的gradle文件,如下添加依赖,只需要添加注释标明部分即可,这里我是固定使用的1.9.8的tinker
apply plugin: 'com.android.application'
apply from: 'tinkerpatch.gradle'//这里是需要添加的,这里是关联到tinkerpatch.gradle文件,这样我们就可以单独在tinkerpatch.gradle配置一切tinker的内容
android {
compileSdkVersion 26
defaultConfig {
applicationId "huaweidun.com.tinkerdemo"
minSdkVersion 15
targetSdkVersion 26
versionCode 2
versionName "2.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.tinkerdemo
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
repositories {
maven {
url "http://dl.bintray.com/jlmd/maven"
}
}
dependencies {
//这里也是需要添加的,这是热修复依赖
annotationProcessor("com.tinkerpatch.tinker:tinker-android-anno:1.9.8")
compileOnly 'com.tinkerpatch.tinker:tinker-android-anno:1.9.8'
implementation 'com.tinkerpatch.sdk:tinkerpatch-android-sdk:1.2.8'
}
添加tinkerPatch.gradle:这个步骤就是创建上面gradle依赖的tinkerpatch.gradle文件
第二步写入tinker配置。这里直接照抄官方的配置就可以,下面是我自己修改过的,下面图片是我自己的配置
apply plugin: 'tinkerpatch-support'
def bakPath = file("${buildDir}/bakApk/")//这个是编译基础包的位置
tinkerpatchSupport {
/** 编译时是否打开tinker(打开的话会在你的build/bakapk中多生成一个apk,同时编译速度加长)**/
tinkerEnable = true
/** 是否使用一键接入功能 **/
reflectApplication = true
/** 如果用了360加固或者其他之类的加固软件这个得打开,需要查看tinker官网是否支持你选用的加固工具 **/
protectedApp = false
/** 补丁是否支持新增 Activity (exported必须为false)**/
supportComponent = false
autoBackupApkPath = "${bakPath}"
/** 在tinkerpatch.com得到的appKey **/
appKey = "应用在tinker官网的appkey"
/** 注意: 若发布新的全量包, appVersion一定要更新 **/
appVersion = "2"//这个对应的是平台的补丁版本,是指的新建补丁那个版本,建议和应用版本号同步
/**bakapk目录下的apk文件
* 所谓基础包,是你在生成补丁包时,那个拿来对比的安装包,务必在出版本的时候保留,
**/
baseApkFile = "F:\\放置基础包的路径\\app-release.apk"
/**bakapk目录下的-mapping.txt文件
* 当你的应用开启混淆时会在bakapk和apk同一个目录下会生成这个文件,不开启混淆则不会生成
**/
baseProguardMappingFile = "F:\\放置混淆记录文件的路径\\app-release-mapping.txt"
/**bakapk目录下的-R.txt文件
* 在bakapk和apk同一个目录下会生成这个文件
**/
baseResourceRFile = "F:\\资源映射文件\\app-release-R.txt"
}
/**
* 用于用户在代码中判断tinkerPatch是否被使能
*/
android {
defaultConfig {
buildConfigField "boolean", "TINKER_ENABLE", "${tinkerpatchSupport.tinkerEnable}"
}
}
/**
* 一般来说,我们无需对下面的参数做任何的修改
* 对于各参数的详细介绍请参考:
* https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
*/
tinkerPatch {
ignoreWarning = false
useSign = true
dex {
dexMode = "jar"
pattern = ["classes*.dex"]
loader = []
}
lib {
pattern = ["lib/*/*.so"]
}
res {
pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"]
ignoreChange = []
largeModSize = 100
}
packageConfig {
}
sevenZip {
zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
// path = "/usr/local/bin/7za"
}
buildConfig {
keepDexApply = false
}
}
2.初始化
public class MyTinkerApplication extends Application {
private ApplicationLike mApplicationLike;
@Override
public void onCreate() {
super.onCreate();
mApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();
initTinker();
}
private void initTinker() {
/*
* 我们需要确保至少对主进程跟patch进程初始化 TinkerPatch
*/
if (BuildConfig.TINKER_ENABLE) {
// 初始化TinkerPatch SDK, 更多配置可参照API章节中的,初始化SDK
TinkerPatch.init(mApplicationLike)
.setPatchResultCallback(new ResultCallBack() {
@Override
public void onPatchResult(PatchResult patchResult) {
if(patchResult!=null){
}
Log.i("patch", TextUtils.isEmpty(patchResult.patchVersion)?"空":patchResult.patchVersion);
}
})
.reflectPatchLibrary()
.fetchPatchUpdate(true)
.setPatchRollbackOnScreenOff(true)
// 每隔3个小时去访问后台时候有更新,通过handler实现轮训的效果 可自行设置
.setFetchPatchIntervalByHours(3)
.setPatchRestartOnSrceenOff(true);
}
}
}
3.生成签名文件
可以在这生成签名文件
或者在这设置你的签名文件并设置在signing里面
然后再这里选择上你之前设置完成的别名签名文件
4.打包apk文件
build完成后,打开
打包完成后可以看到我们的这些目录,选择最新的一个文件打开
将这个文件夹下面的两个文件复制到基础包的路径那里去,因为我们需要在这个基础包上做补丁修改,也就是跟tinkerpatch.gradle的路径下面就可以了
我们可以通过命令安装至我们的手机后面跟上apk的路径就可以了,或者其他渠道安装也可以
5.生成补丁
同上生成apk的过程,不过我们需要点击的是
双击下面执行编译后会出现
find the output 后面那个就是补丁包的生成路径了,路径下存在打好的补丁包了
6.下发补丁
这时候打开tinker官网找到自己需要发布的应用,创建好对应版本,然后选择文件下发就可以了,这个版本是和tinkerPatch.gradle里面配置的版本对应的。