热修复学习六:Tinker详解一

本文详细介绍了Tinker热修复技术,包括其官网介绍、核心原理及如何使用Tinker修复bug的全过程。在集成阶段,讨论了gradle依赖与代码初始化;在patch生成环节,提到了命令行和gradle插件两种方式,并解决了可能出现的“tinkerId is not set”错误。
摘要由CSDN通过智能技术生成

一、Tinker官网介绍

官网:https://github.com/Tencent/tinker/wiki

二、Tinker核心原理

  • 基于android原生的ClassLoader,开发了自己的ClassLoader
  • 基于android原生的aapt,开发了自己的aapt
  • 微信团队自己基于Dex文件的格式,研发了DexDiff算法

三、使用Tinker完成bug修复

1、集成阶段

gradle中添加Tinker依赖

app的build.gradle文件中:

//生成application时使用
compileOnly('com.tencent.tinker:tinker-android-anno:1.7.7')

//tinker的核心SDK库
implementation('com.tencent.tinker:tinker-android-lib:1.7.7')

implementation不仅在编译时使用,也会打包到apk中

compileOnly仅在编译时使用,不参与打包,从而减少apk包的体积

在代码中完成对Tinker的初始化

 

2、准备阶段

  • build一个old apk并安装到手机
  • 修改一些功能后,build一个new apk

3、patch生成方式

使用命令行的方式完成patch包的生成

java -jar tinker-patch-cli-1.7.7.jar -old old.apk -new new.apk -config tinker_config.xml -out output/

使用以上方式可能会爆出“tinkerId is not set”的错误

解决办法:Manifest文件按照如下方式设置

<application
        android:name=".tinker.MyTinkerApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="TINKER_ID"
            android:value="1.0" />

    </application>

 把生成的文件push到手机上:

adb push patch_signed.apk /storage/emulated/0/Android/data/com.gs.tinker/cache/tpatch/imooc.apk

使用gradle插件的方式完成patch包的生成

在gradle中正确配置tinker参数(非常重要)

在android studio中直接生成patch文件

步骤详解:

1、manifest文件中设置的tinkerid删除ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值