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

minSdkVersion>21 gradle>3.5.3 分包规则无效的问题! #1397

Closed chrisLeeCreate closed 4 years ago

chrisLeeCreate commented 4 years ago

Issue/提问须知

**在提交issue之前,我们应该先查询是否已经有相关的issue以及[常见问题] https://github.com/Tencent/tinker/issues/1084 像这个问题所说。当minSdkVersion>21 得时候multiDexKeepProguard 分包规则失效。 gradle>3.2.1 的时候 additionalParameters规则失效。

升级tinker版本到1.9.14.5 提供了两个配置 allowLoaderInAnyDex = true removeLoaderForAllDex = true

可以允许tinker 的loader类 不必须在main-dex中。 可是现在有一些问题。打release包的时候,由于分包规则随机。 某些类可能被分在类main-dex中。 导致优先于loader类先加载。到时候部分补丁合成成功,但是没有生效。

ps:比如修改了三处,有两处没生效。怀疑是在loader加载前,先加载了。这个怎么解决呢

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

手机型号:华为p30 
手机系统版本:如:Android 10
android 10
tinker版本:如:1.9.14.5
gradle版本:如:3.5.3

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

系统:Mac

堆栈/日志:
2020-05-15 16:50:39.682 8610-8610/? D/Tinker.TinkerLoader: tryLoad test test
2020-05-15 16:50:39.694 8610-8610/? D/Tinker.TinkerInternals: getCurrentInstructionSet:arm
2020-05-15 16:50:39.694 8610-8610/? W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
2020-05-15 16:50:39.695 8610-8610/? D/Tinker.TinkerInternals: same fingerprint:HUAWEI/ELE-AL00/HWELE:10/HUAWEIELE-AL00/10.0.0.195C00:user/release-keys
2020-05-15 16:50:39.695 8610-8610/? W/Tinker.TinkerInternals: getSafeModeCount: preferName:tinker_own_config_com.xes.jazhanghui.activity count:0
2020-05-15 16:50:39.698 8610-8610/? W/Tinker.TinkerInternals: setSafeModeCount: preferName:tinker_own_config_com.xes.jazhanghui.activity count:1
2020-05-15 16:50:39.698 8610-8610/? I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/ base.apk"],nativeLibraryDirectories=[/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/lib/arm, /data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk!/lib/armeabi-v7a, /system/lib, / hw_product/lib]]]
2020-05-15 16:50:39.698 8610-8610/? I/Tinker.TinkerDexLoader: verify dex file:/data/user/0/com.xes.jazhanghui.activity/tinker/patch-ea8a04bd/dex/tinker_classN.apk md5, use time: 0
2020-05-15 16:50:39.698 8610-8610/? I/Tinker.ClassLoaderAdder: installDexes dexOptDir: /data/user/0/com.xes.jazhanghui.activity/tinker/patch-ea8a04bd/odex, dex size:1
2020-05-15 16:50:39.700 8610-8610/? I/Tinker.ClassLoaderAdder: after loaded classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/user/0/com.xes.jazhanghui.activity/tinker/patch-ea8a04bd/dex/ tinker_classN.apk", zip file "/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk"],nativeLibraryDirectories=[/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/lib/arm, /data/app/ com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk!/lib/armeabi-v7a, /system/lib, /hw_product/lib]]], dex size:1
2020-05-15 16:50:39.700 8610-8610/? W/Tinker.ClassLoaderAdder: checkDexInstall result:true
2020-05-15 16:50:39.700 8610-8610/? I/Tinker.IncrementCompMgr: package has no incremental component meta, skip init.
2020-05-15 16:50:39.700 8610-8610/? I/Tinker.PatchInfo: rewritePatchInfoFile file path:/data/user/0/com.xes.jazhanghui.activity/tinker/patch.info , oldVer:ea8a04bd6a247819f81449238cb6ad38, newVer:ea8a04bd6a247819f81449238cb6ad38, isProtectedApp:1, isRemoveNewVersion:0, fingerprint:HUAWEI/ELE-AL00/HWELE:10/HUAWEIELE-AL00/10.0.0.195C00:user/release-keys, oatDir:odex
2020-05-15 16:50:39.702 8610-8610/? I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
2020-05-15 16:50:39.706 8610-8610/? D/Tinker.DefaultAppLike: onBaseContextAttached:
2020-05-15 16:50:39.707 8610-8610/? I/Tinker.SamplePatchListener: application maxMemory:384
2020-05-15 16:50:39.707 8610-8610/? W/Tinker.Tinker: tinker patch directory: /data/user/0/com.xes.jazhanghui.activity/tinker
2020-05-15 16:50:39.707 8610-8610/? I/Tinker.Tinker: try to install tinker, isEnable: true, version: 1.9.14.5
2020-05-15 16:50:39.708 8610-8610/? I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:0, process name:com.xes.jazhanghui.activity, main process:true, systemOTA:false, fingerPrint:HUAWEI/ELE-AL00/HWELE:10/ HUAWEIELE-AL00/10.0.0.195C00:user/release-keys, oatDir:odex, useInterpretMode:false
2020-05-15 16:50:39.708 8610-8610/? I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:, newVersion:ea8a04bd6a247819f81449238cb6ad38, current:ea8a04bd6a247819f81449238cb6ad38
2020-05-15 16:50:39.708 8610-8610/? I/Tinker.TinkerLoadResult: oh yeah, tinker load all success
2020-05-15 16:50:39.708 8610-8610/? I/Tinker.DefaultLoadReporter: patch loadReporter onLoadPatchVersionChanged: patch version change from to ea8a04bd6a247819f81449238cb6ad38
2020-05-15 16:50:39.708 8610-8610/? I/Tinker.UpgradePatchRetry: onPatchResetMaxCheck, reset max check to 1
2020-05-15 16:50:39.708 8610-8610/? I/Tinker.DefaultLoadReporter: patch loadReporter onLoadResult: patch load result, path:/data/user/0/com.xes.jazhanghui.activity/tinker, code: 0, cost: 20ms
2020-05-15 16:50:39.711 8610-8610/? W/Tinker.TinkerInternals: setSafeModeCount: preferName:tinker_own_config_com.xes.jazhanghui.activity count:0
2020-05-15 16:50:39.717 8610-8610/? D/Tinker.DefaultAppLike: onCreate
2020-05-15 16:50:39.792 8610-8610/? E/tinker: SampleTinkerReport:6
2020-05-15 16:50:39.793 8610-8610/? E/tinker: patchLoadSucc : true6
2020-05-15 16:50:39.793 8610-8610/? E/tinker: SampleTinkerReport:400
2020-05-15 16:50:39.801 8667-8667/? D/Tinker.TinkerLoader: tryLoad test test
2020-05-15 16:50:39.816 8667-8667/? D/Tinker.TinkerInternals: getCurrentInstructionSet:arm
2020-05-15 16:50:39.816 8667-8667/? W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
2020-05-15 16:50:39.816 8667-8667/? D/Tinker.TinkerInternals: same fingerprint:HUAWEI/ELE-AL00/HWELE:10/HUAWEIELE-AL00/10.0.0.195C00:user/release-keys
2020-05-15 16:50:39.817 8667-8667/? W/Tinker.TinkerInternals: getSafeModeCount: preferName:tinker_own_config_com.xes.jazhanghui.activity:core count:0
2020-05-15 16:50:39.822 8667-8667/? W/Tinker.TinkerInternals: setSafeModeCount: preferName:tinker_own_config_com.xes.jazhanghui.activity:core count:1
2020-05-15 16:50:39.822 8667-8667/? I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/ base.apk"],nativeLibraryDirectories=[/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/lib/arm, /data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk!/lib/armeabi-v7a, /system/lib, / hw_product/lib]]]
2020-05-15 16:50:39.822 8667-8667/? I/Tinker.TinkerDexLoader: verify dex file:/data/user/0/com.xes.jazhanghui.activity/tinker/patch-ea8a04bd/dex/tinker_classN.apk md5, use time: 0
2020-05-15 16:50:39.822 8667-8667/? I/Tinker.ClassLoaderAdder: installDexes dexOptDir: /data/user/0/com.xes.jazhanghui.activity/tinker/patch-ea8a04bd/odex, dex size:1
2020-05-15 16:50:39.824 8667-8667/? I/Tinker.ClassLoaderAdder: after loaded classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/user/0/com.xes.jazhanghui.activity/tinker/patch-ea8a04bd/dex/ tinker_classN.apk", zip file "/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk"],nativeLibraryDirectories=[/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/lib/arm, /data/app/ com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk!/lib/armeabi-v7a, /system/lib, /hw_product/lib]]], dex size:1
2020-05-15 16:50:39.825 8667-8667/? W/Tinker.ClassLoaderAdder: checkDexInstall result:true
2020-05-15 16:50:39.825 8667-8667/? I/Tinker.IncrementCompMgr: package has no incremental component meta, skip init.
2020-05-15 16:50:39.825 8667-8667/? I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
2020-05-15 16:50:39.831 8667-8667/? D/Tinker.DefaultAppLike: onBaseContextAttached:
2020-05-15 16:50:39.832 8667-8667/? I/Tinker.SamplePatchListener: application maxMemory:384
2020-05-15 16:50:39.833 8667-8667/? W/Tinker.Tinker: tinker patch directory: /data/user/0/com.xes.jazhanghui.activity/tinker
2020-05-15 16:50:39.833 8667-8667/? I/Tinker.Tinker: try to install tinker, isEnable: true, version: 1.9.14.5
2020-05-15 16:50:39.833 8667-8667/? I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:0, process name:com.xes.jazhanghui.activity:core, main process:false, systemOTA:false, fingerPrint:HUAWEI/ELE-AL00/ HWELE:10/HUAWEIELE-AL00/10.0.0.195C00:user/release-keys, oatDir:odex, useInterpretMode:false
2020-05-15 16:50:39.833 8667-8667/? I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:ea8a04bd6a247819f81449238cb6ad38, newVersion:ea8a04bd6a247819f81449238cb6ad38, current:ea8a04bd6a247819f81449238cb6ad38
2020-05-15 16:50:39.833 8667-8667/? I/Tinker.TinkerLoadResult: oh yeah, tinker load all success
2020-05-15 16:50:39.833 8667-8667/? I/Tinker.DefaultLoadReporter: patch loadReporter onLoadResult: patch load result, path:/data/user/0/com.xes.jazhanghui.activity/tinker, code: 0, cost: 23ms
2020-05-15 16:50:39.834 8667-8667/? W/Tinker.TinkerInternals: setSafeModeCount: preferName:tinker_own_config_com.xes.jazhanghui.activity:core count:0
2020-05-15 16:50:39.836 8667-8667/? D/Tinker.DefaultAppLike: onCreate
2020-05-15 16:50:39.882 8667-8667/? W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry is not main process, just return
2020-05-15 16:50:39.921 8610-8610/? D/TTTTInit: StartActvity TinkerDownPatchUtils:1
2020-05-15 16:50:39.996 8610-8746/? D/dexloader: Set base classLoader for DexClassLoader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/user/0/com.xes.jazhanghui.activity/tinker/patch-ea8a04bd/dex/ tinker_classN.apk", zip file "/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk"],nativeLibraryDirectories=[/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/lib/arm, /data/app/ com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk!/lib/armeabi-v7a, /system/lib, /hw_product/lib]]]
2020-05-15 16:50:40.043 8610-8610/? W/Tinker.UpgradePatchRetry: onPatchRetryLoad patch file: /data/user/0/com.xes.jazhanghui.activity/tinker_temp/temp.apk is not exist, just return
2020-05-15 16:50:40.076 8610-8804/? D/dexloader: Set base classLoader for DexClassLoader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/user/0/com.xes.jazhanghui.activity/tinker/patch-ea8a04bd/dex/ tinker_classN.apk", zip file "/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk"],nativeLibraryDirectories=[/data/app/com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/lib/arm, /data/app/ com.xes.jazhanghui.activity-OU-TUiJXm3TsvGq0SMC2Iw==/base.apk!/lib/armeabi-v7a, /system/lib, /hw_product/lib]]]
a

提问题时若使用不能用/没效果/有问题/报错此类模糊表达,但又没给出任何代码截图报错的,将绝对不会有任何反馈。这种issue也是一律直接关闭的,大家可以参阅提问的智慧

Tinker是一个开源项目,希望大家遇到问题时要学会先思考,看看sample与Tinker的源码,更鼓励大家给我们提pr.

chrisLeeCreate commented 4 years ago

我开加固的问题

woaimi520 commented 3 years ago

请问下其他配置

ssurprise commented 3 years ago

兄弟问你下 你是通过gradle 的接入方式还是 cli 的接入方式?我用cli的接入方式也还是报错