Tencent / tinker

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

补丁应用失败,记录下采坑经历,希望能帮到其他人。 #1390

Open junlandroid opened 4 years ago

junlandroid commented 4 years ago

Issue/提问须知

在提交issue之前,我们应该先查询是否已经有相关的issue以及常见问题。提交issue时,我们需要写明issue的原因,以及编译或运行过程的日志(加载进程以及Patch进程)。issue需要以下面的格式:

异常类型:app运行时异常/编译异常

手机型号:如:荣耀10 

手机系统版本:如:Android 10

tinker版本:如:1.7.7

gradle版本:如:5.1.1

是否使用热更新SDK: 如 TinkerPatch SDK 或者 Bugly SDK

系统:如:Win

堆栈/日志:
1. 如是编译异常,请在执行gradle命令时,加上--stacktrace;
2. 日志我们需要过滤"Tinker."关键字;
3. 对于合成失败的情况,请给出:patch进程的日志,这里需要将Android Moniter右上角设为No Filter。

如题:补丁包正常下载,下载完毕后弹出 “补丁应用失败” 一开始由于构建补丁包失败,加入了ignoreWarning

tinkerSupport {ignoreWarning = true}

后来出现 “补丁应用失败”,此时minSdkVersion=21 。后来翻看issues,

1084

去掉了ignoreWarning ,并修改minSdkVersion=19才成功了。


我的配置:

    // 热更新
    implementation "com.android.support:multidex:2.0.1" // 多dex配置
    //注释掉原有bugly的仓库
    //compile 'com.tencent.bugly:crashreport:latest.release'//其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.3.4
    implementation 'com.tencent.bugly:crashreport_upgrade:1.3.6'
    // 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker)
    implementation 'com.tencent.tinker:tinker-android-lib:1.9.14.5'
    implementation 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新版本号,也可以指定明确的版本号,例如2.2.0
tinkerSupport {

    // 开启tinker-support插件,默认值true
    enable = true

    // 指定归档目录,默认值当前module的子目录tinker
    autoBackupApkDir = "${bakPath}"

    // 是否启用覆盖tinkerPatch配置功能,默认值false
    // 开启后tinkerPatch配置不生效,即无需添加tinkerPatch
    overrideTinkerPatchConfiguration = true

    // 编译补丁包时,必需指定基线版本的apk,默认值为空
    // 如果为空,则表示不是进行补丁包的编译
    // @{link tinkerPatch.oldApk }
    baseApk = "${bakPath}/${baseApkDir}/app-release.apk"

    // 对应tinker插件applyMapping
    baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"

    // 对应tinker插件applyResourceMapping
    baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"

    // 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性
//    tinkerId = "base-1.0.33"
    tinkerId = "patch-1.0.33"

    // 构建多渠道补丁时使用
    // buildAllFlavorsDir = "${bakPath}/${baseApkDir}"

    // 是否启用加固模式,默认为false.(tinker-spport 1.0.7起支持)
    // isProtectedApp = true

    // 是否开启反射Application模式
    enableProxyApplication = false

    // 是否支持新增非export的Activity(注意:设置为true才能修改AndroidManifest文件)
    supportHotplugComponent = true

//    ignoreWarning = true
}
build_versions.compileSdkVersion = 28
build_versions.buildToolsVersion = "28.0.3"
build_versions.minSdkVersion = 19
build_versions.targetSdkVersion = 28
YangDDong commented 4 years ago

怎么让支持min>21

YangDDong commented 4 years ago

现在我min=19功能是正常 但是上面非要支持min=21 请问怎么可以支持min=21