tinker
tinker copied to clipboard
Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.
``` 异常类型:执行tinkerPatchRelease过程中提示找不到CON.png(句柄无效) 手机型号: 手机系统版本: tinker版本:v1.9.14.24 gradle版本:v7.2.0 apg:7.1.2 是否使用热更新SDK: TinkerPatch SDK 系统:windows 堆栈/日志: ```gradle升级至7.2,正常执行tinkerPatchChannel_baiduRelease task,期间报错,提示找不到资源文件(CON.png) 原因: gradle4.2之后的版本默认打开资源混淆优化,资源名称可能被缩减为CON.png/AUX.xml,其中CON/AUX等为windows系统保留关键字,在做差分时无法从output文件夹下面复制到tinker的备份目录,报错信息如下 Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: F:\Project\Application\12.0.0\Application\app\build\tmp\tinkerPatch\app-channel_baidu-release-old\res\CON.png (句柄无效。) at com.tencent.tinker.build.patch.Runner.goToError(Runner.java:101) at com.tencent.tinker.build.patch.Runner.tinkerPatch(Runner.java:81) at com.tencent.tinker.build.patch.Runner.run(Runner.java:53) at com.tencent.tinker.build.patch.Runner.gradleRun(Runner.java:46)...
长期问题,疑似屏蔽ClassTable的逻辑在Android P上开始失效,或DexDiff合成的dex有部分区段没有正确对齐,目前还在Debug确认。
异常类型:编译异常 tinker版本:如:1.9.14.19、1.9.14.23 gradle版本:如:7.2 AGP版本:7.0.4 是否使用热更新SDK: Bugly SDK 系统:如:Mac、linux都有问题 感觉跟R8的混淆优化有关系 我们在项目中通过 引入这个com.android.tools:r8:3.3.70,来独立配置R8的版本 R8版本配置为 3.1.51的时候,没有问题,但是R8 3.3之前的版本有些bug,必须调整R8的版本 后来配置 R8为3.3.70时,混淆规则配置 -dontoptimize、-dontobfuscate 没问题, 但是去掉-dontobfuscate就会报这个错。 代码不加混淆没法上 以下是混淆堆栈 堆栈/日志: Gen classes3.dex patch file:/Users/admin/SpaceWork/zp/feat/app_host/build/tmp/tinkerPatch/tinker_result/classes3.dex, size:211277, md5:44dab31f72dee24c2938cd4f92e352c1 Verifying if...
异常类型:编译异常 tinker版本:19.14.5 gradle版本 3.5.3 是否使用热更新SDK: 否 系统:MacOS 10.14.6 堆栈/日志: ----------------------tinker build warning ------------------------------------ tinker auto operation: excluding annotation processor and source template from app packaging. Enable dx jumboMode to reduce...
异常类型:编译异常 手机型号:如:Nexus 5(如是编译异常,则可以不填) 手机系统版本:如:Android 5.0 (如是编译异常,则可以不填) tinker版本:如:1.9.14.5 gradle版本:gradle5.1.1, tools3.4.2 是否使用热更新SDK: Bugly SDK 系统:Win minSdk: 16 我这边通过assembleRelease进行基础包的打包,打包完成后仅修改strings.xml中其中一个资源,开始打补丁包。补丁包出来后发现有1.7M大,通过对比,发现diff包的主dex一些类完整的移到了dex2里面,而dex2的类则完整移到了主dex中,最后导致差异很多,但实际上这些类都是没有改动的。目前在tinker 1.9.14.5版本中遇到,原来使用的tinker 1.9.13.3版本未出现
## Issue/提问须知 **在提交issue之前,我们应该先查询是否已经有相关的issue以及[常见问题](https://github.com/Tencent/tinker/wiki/Tinker-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)。提交issue时,我们需要写明issue的原因,以及编译或运行过程的日志(加载进程以及Patch进程)。issue需要以下面的格式:** ``` 异常类型:app运行时异常/编译异常 手机型号:Redmi Note 7 手机系统版本:Android 9.0 tinker版本:1.9.14.10 gradle版本:3.4.2 是否使用热更新SDK: Bugly SDK 堆栈/日志: 2021-05-19 16:11:19.601 6648-6648/? D/Tinker.DefaultAppLike: onTrimMemory level:20 2021-05-19 16:11:22.439 11690-11690/? D/Tinker.TinkerLoader: tryLoad test test 2021-05-19...
异常类型:app运行时异常 手机型号:OPPO R17 手机系统版本:android 10 , ColorOS 7.1 tinker版本:如:1.9.9 gradle版本:如:3.4.3 是否使用热更新SDK: Bugly SDK 系统:Windows 10 堆栈/日志: 2022-04-19 15:27:22.885 26476-26476/? W/Tinker.TinkerLoader: tryLoadPatchFiles:patch dir not exist:/data/user/0/cn.xiaoyu.quanyika/tinker 2022-04-19 15:27:22.888 26476-26476/? I/Tinker.TinkerPatchListener: application maxMemory:384...
异常类型:app运行时异常 手机型号:三星S7 手机系统版本:Android 9.0 tinker版本::1.9.14.3 gradle版本:5.2.1 是否使用热更新SDK: 如 TinkerPatch SDK 或者 Bugly SDK 系统:如:Mac 堆栈/日志: 2019-12-31 10:17:42.086 5469-5469/? E/Tinker.TinkerDexLoader: install dexes failed 2019-12-31 10:17:42.087 5469-5469/? W/Tinker.TinkerLoader: tryLoadPatchFiles:onPatchLoadDexesFail 2019-12-31 10:17:42.089 5469-5469/?...
**补丁可以下载成功,但是 checkDexInstall failed,在小米8、华为高低版本上均重现** 异常类型:app运行时异常 手机型号:小米8,荣耀 note10,荣耀畅玩5X 手机系统版本:Android 8.0,Android 8.1,Android 6.0 tinker版本:1.9.8 gradle版本:4.10.1 是否使用热更新SDK: 使用了 TinkerPatch SDK 系统: Mac 堆栈/日志: 2019-04-22 17:36:34.743 10096-10096/? I/Tinker.TinkerDexLoader: verify dex file:/data/user/0/com.xxx.xxx/tinker/patch-edcb15ee/dex/tinker_classN.apk md5, use time: 0...
注:在bugly文档提供的BuglyHotfixDemo中、如下相同的配置是可以i打补丁包的,在接入自己项目时报错,看了下区别BuglyHotfixDemo基准apk包只有1个(classes.dex),而自己项目有2个(classes.dex、classes2.dex)。 异常类型:tinker-support/buildTinkerPatchRelease 打补丁包(Patch)报错 gradle插件版本:4.0.0 gradle版本:gradle-6.7.1-bin 是否使用热更新SDK: 使用Bugly SDK接入Tinker tinkersupport插件版本 : 1.2.3 tinker-android-lib : 1.9.14.20 错误日志如下: > Task :app:tinkerPatchRelease -----------------------Tinker patch begin----------------------- configuration: oldApk:F:\ssh\rich-android\app\build\bakApk\app-0510-12-00-25\app-release.apk newApk:F:\ssh\rich-android\app\build\outputs\apk\release\app-release.apk outputFolder:F:\ssh\rich-android\app\build\tmp\tinkerPatch isIgnoreWarning:true isAllowLoaderClassInAnyDex:false isRemoveLoaderForAllDex:false isProtectedApp:false 7-ZipPath:C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\com.tencent.mm\SevenZip\1.1.10\4786999cf29d8e3b0c39a80359b5127bda36132a\SevenZip-1.1.10-windows-x86_64.exe...