前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【错误记录】Tinker 热修复示例运行报错 ( Execution failed for task ‘:app:tinkerProcessD‘ . tinkerId is not set!!! )

【错误记录】Tinker 热修复示例运行报错 ( Execution failed for task ‘:app:tinkerProcessD‘ . tinkerId is not set!!! )

作者头像
韩曙亮
发布2023-03-29 10:22:38
4500
发布2023-03-29 10:22:38
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、报错信息


运行 tinker 官方示例 https://github.com/Tencent/tinker/tree/dev/tinker-sample-android , 编译时 , 报如下错误 ;

代码语言:javascript
复制
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:tinkerProcessDebugManifest'.
> tinkerId is not set!!!

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 8s
9 actionable tasks: 9 executed
在这里插入图片描述
在这里插入图片描述

二、问题分析


需要阅读 Gradle 脚本 , 分析报错原因 ;

仔细阅读 build.gradle 构建脚本 , 配置 TINKER_ID 的代码如下 ,

代码语言:javascript
复制
buildConfigField "String", "TINKER_ID", "\"${getTinkerIdValue()}\""

通过 getTinkerIdValue 方法 , 获取 TINKER_ID , 在 getTinkerIdValue 方法中会查询是否有 TINKER_ID 属性 , 或者调用 gitSha 方法获取 TINKER_ID 参数 ;

代码语言:javascript
复制
def getTinkerIdValue() {
    return hasProperty("TINKER_ID") ? TINKER_ID : gitSha()
}

def gitSha() {
    try {
        String gitRev = 'git rev-parse --short HEAD'.execute(null, project.rootDir).text.trim()
        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'")
    }
}

因此这里有两种方式设置 TINKER_ID ,

  • 在 gradle.properties 配置中 , 设置 TINKER_ID 参数 ;
  • gitSha 方法返回非空字符串 ;

三、解决方案


1、解决方案 1

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

代码语言:javascript
复制
TINKER_ID=1.0
TINKER_ENABLE=true
在这里插入图片描述
在这里插入图片描述

2、解决方案 2

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

代码语言:javascript
复制
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'")
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、报错信息
  • 二、问题分析
  • 三、解决方案
    • 1、解决方案 1
      • 2、解决方案 2
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档