Tinker热修复(命令行接入——未知BUG--.java文件修改不成功)

来源:互联网 发布:淘宝店铺公告图片尺寸 编辑:程序博客网 时间:2024/05/17 05:11
http://blog.csdn.net/lmj623565791/article/details/54882693
https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
上面两个一个是HongYang的博客,一个是官方的指南
这里一步一步的来(基于HongYang的demo),具体步骤介绍参考HongYang博客吧,这里就不做介绍了,这里只作为补充和步骤详解。
(一)在官方哪里找到最新的引入:
//可选,用于生成application类 provided('com.tencent.tinker:tinker-android-anno:1.8.0') //tinker的核心库 compile('com.tencent.tinker:tinker-android-lib:1.8.0')

(二)修改项目的build.gradle,也建议从官方的最新的来
classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.8.0')

(三)gradle配置,配置manifest文件
<meta-data
android:name="TINKER_ID"
android:value="tinker_id_6235657" />
官方接入里有介绍,也提供了demo。这里自己看吧,不设置也没事(可能还没采坑)

(四)添加引用patch代码,并进行相关的application配置(注意注解的名字不能改.SimpleTinkerInApplication)
TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(),
Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed_7zip.apk");

//application的配置代码
@DefaultLifeCycle(application = ".SimpleTinkerInApplication",
flags = ShareConstants.TINKER_ENABLE_ALL,
loadVerifyFlag = false)
public class SimpleTinkerInApplicationLike extends ApplicationLike {
public SimpleTinkerInApplicationLike(Application application, int tinkerFlags, boolean tinkerLoadVerifyFlag, long applicationStartElapsedTime, long applicationStartMillisTime, Intent tinkerResultIntent) {
super(application, tinkerFlags, tinkerLoadVerifyFlag, applicationStartElapsedTime, applicationStartMillisTime, tinkerResultIntent);
}

@Override
public void onBaseContextAttached(Context base) {
super.onBaseContextAttached(base);
}

@Override
public void onCreate() {
super.onCreate();
TinkerInstaller.install(this);
}
}
(五)打包 ,安装到手机
命名为old.apk

(六)修改代码并打包
命名为new.apk

(七)把两个包复制到tinker-patch-cli-1.7.7.jar的相同目录下
java -jar tinker-patch-cli-1.7.7.jar -old old.apk -new new.apk -config tinker_config.xml -out output

(八)在output文件夹下找到patch_signed.apk,发送到你的系统根目录下(就是第四步的时候你引用的那个目录),我这里是粘贴到studio目录下,通过adb发送的。具体应用的时候肯定是从服务器下载到你的指定目录下的。
adb push ./tinkersimplein/build/outputs/apk/patch_signed_7zip.apk /storage/sdcard0/

(九)打开你之前安装到手机的apk(old.apk),执行你第四步代码,发现APP重启了,这时候你再打开就发现已经是new.apk里的内容了。而你发送的那个apk也消失了
原创粉丝点击