公司添加热修复功能,我们用了微信的tinker
可以借鉴这篇博客:http://blog.csdn.net/u010381752/article/details/56012405
Tinker官方说明:Git地址
Tinker平台介绍:http://tinkerpatch.com/Docs/intro
写点自己的东西,帮助学习(简单粗暴)
1、在http://tinkerpatch.com/注册自己的平台,新建app,得到自己的appkey,创建版本号,以后管理用
2、添加依赖
project中
classpath "com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:${TINKERPATCH_VERSION}"app中
1、拷贝tinkerpatch.gradle
2、在build.gradle中
apply from: 'tinkerpatch.gradle'compile "com.android.support:multidex:1.0.1" //无需引入tinker的任何库,使用tinkerpatch sdk即可 compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:${TINKERPATCH_VERSION}") { changing = true }
3、配置Application
创建自己的Application,继承DefaultApplicationLike(需要重写构造),内容从demo的SampleApplicationLike里面拷贝,
打开自己的AndroidManifest.xml 在application 节点下配置android:name=”MyApplication”
这基本上就配置搞定了
4、使用
这个过程就比较有意思了
在tinkerpatch.gradle中
/** * TODO: 请按自己的需求修改为适应自己工程的参数 */ def bakPath = file("${buildDir}/bakApk/") def baseInfo = "app-1.0.0-0503-14-38-46" def variantName = "release"
这里有几个参数要自己设置,
baseInfo:这个需要填写你的基础版本,在app-build-bakApk-app-1.0.0-0503-14-38-46文件夹中
variantName:release和debug,看你的基础版本是如何生成的
appkey:修改自己生成的
生成了基础版本后,修改自己的代码,然后在
点击Gradle,
找tinker,然后选择Debug还是Release,双击生成补丁文件
生成后放在了app-build-outputs中找到patch_signed_7zip.apk(如果是debug的话应该是patch_debug_7zip .apk)
在文件夹中找到,这个时候可以上传到平台,这就搞定啦
这个时候应该默认是3个小时候会下载更新,如果测试的话可以设置
TinkerPatch.with().reflectPatchLibrary();在自己的app启动的oncreat()方法中调用这个
这样就可以啦
补充:注意事项
1、第一次运行前,需要修改app的build.gradle文件中的tinkerId为当前版本号(很重要),发布新的版本apk后,需要保存app/build/bakApk下的最新的.apk和R.txt文件,用于以后创建补丁
2、在应用上线后,出现bug,并且修复bug后,需要生成补丁文件,这时需要将之前保存的.apk和R.txt文件放到原来的位置。