【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )(一)

简介: 【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )(一)

文章目录

一、下载官方示例源码

二、处理 TINKER_ID 问题

三、编译 debug 包

四、安装 APK 并运行

五、修改 Gradle 构建脚本中的文件名称

六、修改程序逻辑代码

七、生成 patch 包

八、热修复

九、 源码资源





一、下载官方示例源码


Tinker 官方代码示例 : https://github.com/Tencent/tinker/tree/dev/tinker-sample-android






二、处理 TINKER_ID 问题


下载该 tinker-sample-android 代码 , 先处理 TINKER_ID 问题 , 参考 【错误记录】Tinker 热修复示例运行报错 ( Execution failed for task ‘:app:tinkerProcessD‘ . tinkerId is not set!!! )



解决 " tinkerId is not set!!! " 问题 , 有两种处理方案 :



方案一 :


在 gradle.properties 配置中 , 设置 TINKER_ID 参数 ,


TINKER_ID=1.0
TINKER_ENABLE=true

image.png



方案二 : 修改 https://github.com/Tencent/tinker/blob/dev/tinker-sample-android/app/build.gradle 构建脚本代码 , 使 gitSha 方法返回非空字符串 ;


def gitSha() {
    try {
        String gitRev = "1.0"
        if (gitRev == null) {
            throw new GradleException("can't get git rev, you should add git to system path or just input test value, such as 'testTinkerId'")
        }
        return gitRev
    } catch (Exception e) {
        throw new GradleException("can't get git rev, you should add git to system path or just input test value, such as 'testTinkerId'")
    }
}






三、编译 debug 包


运行 Gradle 面板中的 " tinker-sample-android / app / Tasks / other / assembleDebug " 任务 , 双击即可 ;

image.png



运行 assembleDebug 任务完毕后 , 在 " tinker-master\tinker-sample-android\app\build\bakApk " 目录下 , 会生成


app-debug-0423-21-38-18.apk

app-debug-0423-21-38-18-R.txt

两个文件 ;

image.png




还有一种方法 , 在 Terminal 中断面板中 , 执行 gradlew assembleDebug 命令 , 也可以运行 assembleDebug gradle 任务 ;






四、安装 APK 并运行


将上述编译好的 app-debug-0423-21-38-18.apk 安装文件 , 部署到应用中 , 运行应用 :

image.png



点击 " SHOW INFO " 按钮 , 即可查看运行效果 ;


image.png

目录
相关文章
|
1月前
|
Android开发
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
|
1月前
|
Android开发
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
|
23天前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
28 1
|
1月前
|
Java Android开发 Windows
玩转安卓之配置gradle-8.2.1
为安卓开发配置Gradle 8.2.1,包括下载和解压Gradle、配置环境变量、修改配置文件以增加国内镜像,以及在Android Studio中配置Gradle和JDK的过程。
73 0
玩转安卓之配置gradle-8.2.1
|
3月前
|
Android开发
Android Studio: 解决Gradle sync failed 错误
本文介绍了解决Android Studio中出现的Gradle同步失败错误的步骤,包括从`gradle-wrapper.properties`文件中获取Gradle的下载链接,手动下载Gradle压缩包,并替换默认下载路径中的临时文件,然后重新触发Android Studio的"Try Again"来完成同步。
1306 0
Android Studio: 解决Gradle sync failed 错误
|
3月前
|
Java 开发工具 Maven
Flutter和Android中覆盖gradle中的repositories仓库地址
Flutter和Android中覆盖gradle中的repositories仓库地址
190 4
|
3月前
|
Android开发 Kotlin
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.10 and higher
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.10 and higher
85 3
|
3月前
|
Java 开发工具 Android开发
Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。
71 0
|
3月前
|
IDE API 开发工具
与Android Gradle Plugin对应的Gradle版本和Android Studio版本
与Android Gradle Plugin对应的Gradle版本和Android Studio版本
403 0
|
3月前
|
Android开发
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
355 0