Tencent / tinker

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.
Other
17.1k stars 3.33k forks source link

can't find TINKER_ID from the old apk manifest file, it must be set! #1556

Open scsfwgy opened 3 years ago

scsfwgy commented 3 years ago

我用 1.9.14.11可以了, gradle 6.5 buildtool 4.1.1. 我看提交记录最新版已经到1.9.14.13了,他们现在更新已经连readme都懒得更新了

distributionUrl=https://services.gradle.org/distributions/gradle-6.5-all.zip

classpath 'com.android.tools.build:gradle:4.1.1' classpath 'com.tencent.bugly:tinker-support:1.2.3'

//https://github.com/Tencent/tinker api 'com.tencent.tinker:tinker-android-lib:1.9.14.15' //https://mvnrepository.com/artifact/com.tencent.bugly/crashreport_upgrade?repo=jcenter api 'com.tencent.bugly:crashreport_upgrade:1.5.1'


classpath 'com.android.tools.build:gradle:4.1.1' 这个升级导致的,3.4.1就ok

打包、安装什么都没问题,但是打补丁包报以下错误:

` Execution failed for task ':app:tinkerPatchRelease'.

com.tencent.tinker.build.util.TinkerPatchException: can't find TINKER_ID from the old apk manifest file, it must be set! `

Originally posted by @scsfwgy in https://github.com/Tencent/tinker/issues/1509#issuecomment-833337170

scsfwgy commented 3 years ago

com.android.tools.build:gradle:3.4.1 用着没问题,升级到com.android.tools.build:gradle:4.1.1 就报这个错误

scolia commented 3 years ago

经测试, 使用cli方式进行集成的时候可以无视gradle的版本问题

shaycormac commented 3 years ago

com.android.tools.build:gradle:3.4.1 用着没问题,升级到com.android.tools.build:gradle:4.1.1 就报这个错误

你好,请问你AGP现在是多少,3.4.1?

jzqCode commented 3 years ago

一样的问题

shaycormac commented 2 years ago

com.android.tools.build:gradle:3.4.1 用着没问题,升级到com.android.tools.build:gradle:4.1.1 就报这个错误

你好,请问你AGP现在是多少,3.4.1?

经过本人的实践,以及查看最新的bugly的tinker-support.gradle插件,做出如下配置,在agp4.0.0可以完美打release包和差量包

enableProxyApplication = false 的情况,虽然改动比较大,但是可以升级到AGP为4.0.0,这样就可以使用官方的ViewBind(AGP最低支持3.6.3)以及其它一些新特性了,所以还是划算的!

//app的build.gradle
dependencies {
def  TINKER_VERSION = "1.9.14.16"
    api("com.tencent.tinker:tinker-android-lib:${TINKER_VERSION}")
    //从 1.9.14.7版本开始,必须添加
    annotationProcessor "com.tencent.tinker:tinker-android-anno:${TINKER_VERSION}"
    compileOnly "com.tencent.tinker:tinker-android-anno-support:${TINKER_VERSION}"
}
// 工程的build.gradle
dependencies {

        classpath 'com.android.tools.build:gradle:4.0.0'

        classpath "com.tencent.bugly:tinker-support:1.2.3"
    }
//而且这个版本已经兼容R8了,
//所以可以放心的开启R8混淆了(默认R8混淆是开启的,当然也可以在gradle.properties中复写)
// app的gradle.properties
android.enableR8 = true

//我使用的gradle-wrapper是6.7.1
// gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

tinker-support.gradle配置注意事项

tinkerPatch {
   ............
    sevenZip {
        zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
        // 2021-08-07 由于使用了M1的mac编译,bugly没有将arm版本的7zip发布到jcenter()中,只能使用本机的7zip来最后打压缩差量包apk
// 使用window的用户可以注释掉这行代码。
        path = "/opt/homebrew/bin/7za"
    }

.......
    //从 1.9.14.5开始,如果minSdk>21,需要添加下面两行配置
    // for minSdk >= 21 add two value
    allowLoaderInAnyDex = true
    removeLoaderForAllDex = true
}

我把官方的demo也给升级了一下,有兴趣可以下载下来,试一试 https://github.com/shaycormac/BuglyHotfixDemo