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

TinkerRuntimeException: Tinker Exception:checkDexInstall failed,错误代码-14 #1101

Open wutianjusouth opened 5 years ago

wutianjusouth commented 5 years ago

补丁可以下载成功,但是 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
2019-04-22 17:36:34.744 10096-10096/? I/Tinker.ClassLoaderAdder: installDexes dexOptDir: /data/user/0/com.xxx.xxx/tinker/patch-edcb15ee/odex, dex size:1
2019-04-22 17:36:34.766 10096-10096/? I/Tinker.ClassLoaderAdder: after loaded classloader: com.tencent.tinker.loader.AndroidNClassLoader[DexPathList[[zip file "/data/user/0/com.xxx.xxx/tinker/patch-edcb15ee/dex/tinker_classN.apk", zip file "/data/app/com.xxx.xxx-4fvBjuaPyblQktW2ycZT5g==/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx-4fvBjuaPyblQktW2ycZT5g==/lib/arm, /data/app/com.xxx.xxx-4fvBjuaPyblQktW2ycZT5g==/base.apk!/lib/armeabi, /system/lib, /system/vendor/lib]]], dex size:1
2019-04-22 17:36:34.768 10096-10096/? W/Tinker.ClassLoaderAdder: checkDexInstall result:false
2019-04-22 17:36:34.769 10096-10096/? E/Tinker.TinkerDexLoader: install dexes failed
2019-04-22 17:36:34.770 10096-10096/? W/Tinker.TinkerLoader: tryLoadPatchFiles:onPatchLoadDexesFail
2019-04-22 17:36:34.796 10096-10096/? D/Tinker.DefaultAppLike: onBaseContextAttached:
2019-04-22 17:36:34.806 10096-10096/? I/Tinker.TinkerPatchListener: application maxMemory:256
2019-04-22 17:36:34.811 10096-10096/? W/Tinker.Tinker: tinker patch directory: /data/user/0/com.xxx.xxx/tinker
2019-04-22 17:36:34.812 10096-10096/? I/Tinker.Tinker: try to install tinker, isEnable: true, version: 1.9.8
2019-04-22 17:36:34.813 10096-10096/? I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:-14, process name:com.xxx.xxx, main process:true, systemOTA:false, fingerPrint:Xiaomi/gemini/gemini:8.0.0/OPR1.170623.032/V10.2.1.0.OAACNXM:user/release-keys, oatDir:odex, useInterpretMode:false
2019-04-22 17:36:34.813 10096-10096/? I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:c018810caf3e014364029ab2411d1b09, newVersion:edcb15ee4a080d685ffd9b2fc22b50da, current:edcb15ee4a080d685ffd9b2fc22b50da
2019-04-22 17:36:34.813 10096-10096/? I/Tinker.TinkerLoadResult: Tinker load have exception loadCode:-14
2019-04-22 17:36:34.813 10096-10096/? E/Tinker.DefaultLoadReporter: patch loadReporter onLoadException: tinker dex check fail:Tinker Exception:checkDexInstall failed
2019-04-22 17:36:34.827 10096-10096/? I/Tinker.DefaultLoadReporter: dex exception disable tinker forever with sp
2019-04-22 17:36:34.827 10096-10096/? E/Tinker.DefaultLoadReporter: tinker load exception, welcome to submit issue to us: https://github.com/Tencent/tinker/issues
2019-04-22 17:36:34.828 10096-10096/? E/Tinker.DefaultLoadReporter: tinker load exception  com.tencent.tinker.loader.TinkerRuntimeException: Tinker Exception:checkDexInstall failed
        at com.tencent.tinker.loader.SystemClassLoaderAdder.a(Unknown Source:149)
        at com.tencent.tinker.loader.TinkerDexLoader.a(Unknown Source:517)
        at com.tencent.tinker.loader.TinkerLoader.tryLoadPatchFilesInternal(Unknown Source:602)
        at com.tencent.tinker.loader.TinkerLoader.tryLoad(Unknown Source:9)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.tencent.tinker.loader.app.TinkerApplication.loadTinker(Unknown Source:40)
        at com.tencent.tinker.loader.app.TinkerApplication.onBaseContextAttached(Unknown Source:12)
        at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(Unknown Source:11)
        at android.app.Application.attach(Application.java:196)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1103)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1087)
        at android.app.LoadedApk.makeApplication(LoadedApk.java:972)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5851)
        at android.app.ActivityThread.-wrap1(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1690)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:173)
        at android.app.ActivityThread.main(ActivityThread.java:6698)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
2019-04-22 17:36:34.829 10096-10096/? W/Tinker.DefaultLoadReporter: checkAndCleanPatch, oldVersion c018810caf3e014364029ab2411d1b09 is not null, try kill all other process

tinker 的 gradle 配置为 tinkerSupport { enable = true tinkerEnable = true overrideTinkerPatchConfiguration = false tinkerId = getTinkerIdValue() enableProxyApplication = false supportHotplugComponent = true } tinkerPatch { oldApk = getOldApkPath() ignoreWarning = true useSign = true tinkerEnable = buildWithTinker() keepDexApply = false isProtectedApp = false }

dex { dexMode = "jar" pattern = ["classes*.dex", "assets/secondary-dex-?.jar"] loader = [] }

libs{ pattern = ["lib/armeabi/*.so"] }

res { pattern = ["res/", "r/", "assets/", "resources.arsc", "AndroidManifest.xml"] ignoreChange = ["res/", "r/", "assets/", "resources.arsc", "AndroidManifest.xml"] largeModSize = 100 }

packageConfig { configField("patchMessage", "tinker is sample to use") configField("platform", "all") configField("patchVersion", "1.0") }

sevenZip { path = "/usr/bin/7za" }

wutianjusouth commented 5 years ago

之前看了issues,排除了 7za 的配置问题

yinshudi commented 5 years ago

请问这个问题如何解决的,碰到了同样的问题

wutianjusouth commented 5 years ago

请问这个问题如何解决的,碰到了同样的问题

请问你们是如何遇到这个问题的,我们是集成了一个很普通的module,无动态加载的,编译混淆后就会出现-14的错误,移除这个module就恢复了。

yinshudi commented 5 years ago

请问这个问题如何解决的,碰到了同样的问题

请问你们是如何遇到这个问题的,我们是集成了一个很普通的module,无动态加载的,编译混淆后就会出现-14的错误,移除这个module就恢复了。

我这边是因为修改了test.dex里类的类名,导致校验的时候找不到类,改回去就好了

CoderNo89757 commented 3 years ago

请问这个问题解决了吗?

Domlaa commented 2 years ago

请问有解决方法了嘛,我用1.9.14.10版本也会有这个问题