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

Tinker Exception:checkDexInstall failed 1.9.14.22-25版本版本补丁包只生效一次问题 #1680

Open qianqianyixia opened 1 year ago

qianqianyixia commented 1 year ago

Issue/提问须知

问题描述: 补丁安装成功重启后生效后又被自动clean掉了 测试中发现1.9.14.22-25版本中都会有次问题,18-21版本均正常 1 :补丁能安装成功但是很慢需要90s,期间一直有报错日志(java.lang.IllegalStateException: Cannot query transaction code of performDexOptSecondary. at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:340)) 2:补丁重启生效后 日志里输出 Tinker Exception:checkDexInstall failed Tinker.DefaultLoadReporter: tinker load exception, welcome to submit issue to us: https://github.com/Tencent/tinker/issues 执行checkAndCleanPatch 导致补丁被清除


异常类型:app运行时异常(补丁运行时)

手机型号:如:红米note 10

手机系统版本:如:Android 11

tinker版本:1.9.14.22-24

gradle版本:如:4.0.1

是否使用热更新SDK:否

系统:window

堆栈/日志:
日志分为俩端 --------------------------------------补丁安装日志------------------------------------------------------
2022-09-15 15:38:43.453 27667-27667/? V/Tinker.SamplePatchListener: receive a patch file: /storage/emulated/0/Android/data/tinker.sample.android/cache/patch_signed_7zip.apk, file size:5185
2022-09-15 15:38:43.458 27667-27667/? W/Tinker.PatchInfo: read property failed, e:java.io.FileNotFoundException: /data/user/0/tinker.sample.android/tinker/patch.info: open failed: ENOENT (No such file or directory)
2022-09-15 15:38:43.459 27667-27667/? W/Tinker.PatchInfo: read property failed, e:java.io.FileNotFoundException: /data/user/0/tinker.sample.android/tinker/patch.info: open failed: ENOENT (No such file or directory)
2022-09-15 15:38:43.459 27667-27667/? W/Tinker.UpgradePatchRetry: onPatchListenerCheck retry file is not exist, just return
2022-09-15 15:38:43.462 27667-27667/? V/Tinker.SamplePatchListener: get platform:all
2022-09-15 15:38:43.467 27667-27667/? I/Tinker.TinkerPatchService: run patch service...
2022-09-15 15:38:43.504 1170-1212/? I/ActivityManager: Start proc 27780:tinker.sample.android:patch/u0a496 for service {tinker.sample.android/com.tencent.tinker.lib.service.TinkerPatchForeService} caller=tinker.sample.android
2022-09-15 15:38:43.570 27780-27780/? D/Tinker.TinkerLoader: tryLoad test test
2022-09-15 15:38:43.572 27780-27780/? W/Tinker.TinkerLoader: tryLoadPatchFiles: we don't load patch with :patch process itself, just return
2022-09-15 15:38:43.573 27780-27780/? D/Tinker.DefaultAppLike: onBaseContextAttached:
2022-09-15 15:38:43.575 27780-27780/? V/Tinker.SamplePatchListener: application maxMemory:256
2022-09-15 15:38:43.577 27780-27780/? W/Tinker.Tinker: tinker patch directory: /data/user/0/tinker.sample.android/tinker
2022-09-15 15:38:43.577 27780-27780/? I/Tinker.Tinker: try to install tinker, isEnable: true, version: 1.9.14.22
2022-09-15 15:38:43.577 27780-27780/? I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:-1, process name:tinker.sample.android:patch, main process:false, systemOTA:false, fingerPrint:Redmi/camellia/camellia:11/RP1A.200720.011/V12.5.3.0.RKSCNXM:user/release-keys, oatDir:null, useInterpretMode:false
2022-09-15 15:38:43.577 27780-27780/? W/Tinker.TinkerLoadResult: tinker is disable, just return
2022-09-15 15:38:43.577 27780-27780/? I/Tinker.DefaultLoadReporter: patch loadReporter onLoadResult: patch load result, path:/data/user/0/tinker.sample.android/tinker, code: -1, cost: 3ms
2022-09-15 15:38:43.577 27780-27780/? W/Tinker.Tinker: tinker load fail!
2022-09-15 15:38:43.580 27780-27780/? D/Tinker.DefaultAppLike: onCreate
2022-09-15 15:38:43.587 27780-27802/? I/Tinker.TinkerPatchService: for system version >= Android O, we just ignore increasingPriority job to avoid crash or toasts.
2022-09-15 15:38:43.588 27780-27780/? D/Tinker.TinkerLoader: [PendingLog @ 2022-09-15 15:38:43.570] tryLoad test test
2022-09-15 15:38:43.588 27780-27780/? W/Tinker.TinkerLoader: [PendingLog @ 2022-09-15 15:38:43.572] tryLoadPatchFiles: we don't load patch with :patch process itself, just return
2022-09-15 15:38:43.589 27780-27780/? D/Tinker.DefaultAppLike: [PendingLog @ 2022-09-15 15:38:43.573] onBaseContextAttached:
2022-09-15 15:38:43.589 27780-27780/? W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry is not main process, just return
2022-09-15 15:38:43.589 27780-27802/? I/Tinker.DefaultPatchReporter: patchReporter onPatchServiceStart: patch service start
2022-09-15 15:38:43.591 27780-27802/? W/Tinker.UpgradePatchRetry: try copy file: /storage/emulated/0/Android/data/tinker.sample.android/cache/patch_signed_7zip.apk to /data/user/0/tinker.sample.android/tinker_temp/temp.apk
2022-09-15 15:38:43.612 27780-27802/? I/Tinker.UpgradePatch: UpgradePatch tryPatch:patchMd5:b2294d85ef82f15222d730582a816777
2022-09-15 15:38:43.613 27780-27802/? W/Tinker.PatchInfo: read property failed, e:java.io.FileNotFoundException: /data/user/0/tinker.sample.android/tinker/patch.info: open failed: ENOENT (No such file or directory)
2022-09-15 15:38:43.613 27780-27802/? W/Tinker.PatchInfo: read property failed, e:java.io.FileNotFoundException: /data/user/0/tinker.sample.android/tinker/patch.info: open failed: ENOENT (No such file or directory)
2022-09-15 15:38:43.613 27780-27802/? I/Tinker.UpgradePatch: UpgradePatch tryPatch:patchVersionDirectory:/data/user/0/tinker.sample.android/tinker/patch-b2294d85
2022-09-15 15:38:43.615 27780-27802/? W/Tinker.UpgradePatch: UpgradePatch copy patch file, src file: /storage/emulated/0/Android/data/tinker.sample.android/cache/patch_signed_7zip.apk size: 5185, dest file: /data/user/0/tinker.sample.android/tinker/patch-b2294d85/patch-b2294d85.apk size:5185
2022-09-15 15:38:44.300 27780-27802/? W/Tinker.DexDiffPatchInternal: success recover dex file: /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/classes.dex.jar, size: 534564, use time: 683
2022-09-15 15:38:44.301 27780-27802/? I/Tinker.DexDiffPatchInternal: try Extracting /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/test.dex.jar
2022-09-15 15:38:44.302 27780-27802/? I/Tinker.DexDiffPatchInternal: isExtractionSuccessful: true
2022-09-15 15:38:44.320 27780-27802/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/test.dex.jar
2022-09-15 15:38:44.320 27780-27802/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/classes.dex.jar
2022-09-15 15:38:44.320 27780-27802/? I/Tinker.DexDiffPatchInternal: merge classN dex file /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/tinker_classN.apk, result: true, size: 1213929, use: 18ms
2022-09-15 15:38:44.320 27780-27802/? I/Tinker.DexDiffPatchInternal: legal files to do dexopt: [/data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/tinker_classN.apk]
2022-09-15 15:38:44.321 27780-27802/? D/Tinker.TinkerInternals: getCurrentInstructionSet:arm64
2022-09-15 15:38:44.321 27780-27802/? I/Tinker.DexDiffPatchInternal: patch recover, try to optimize dex file count:1, optimizeDexDirectory:/data/user/0/tinker.sample.android/tinker/patch-b2294d85/odex/
2022-09-15 15:38:44.321 27780-27802/? I/Tinker.DexDiffPatchInternal: start to parallel optimize dex /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/tinker_classN.apk, size: 1213929
2022-09-15 15:38:44.321 27780-27802/? I/Tinker.TinkerInternals: class not found exception
2022-09-15 15:38:44.321 27780-27802/? I/Tinker.ParallelDex: Creating fake odex path structure.
2022-09-15 15:38:44.328 27780-27802/? I/Tinker.ParallelDex: [+] Hit target device, do dexopt logic now.
2022-09-15 15:38:44.328 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [compile, -f, --secondary-dex, -m, speed-profile, tinker.sample.android]
2022-09-15 15:38:44.331 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:38:45.332 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [bg-dexopt-job, tinker.sample.android]
2022-09-15 15:38:45.336 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:38:46.338 27780-27802/? E/Tinker.ParallelDex: [-] Error.  java.lang.IllegalStateException: Cannot query transaction code of performDexOptSecondary.
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:340)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274)
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67)
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87)
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157)
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223)
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
     Caused by: java.lang.NoSuchFieldException: No field TRANSACTION_performDexOptSecondary in class Landroid/content/pm/IPackageManager$Stub; (declaration of 'android.content.pm.IPackageManager$Stub' appears in /system/framework/framework.jar)
        at java.lang.Class.getDeclaredField(Native Method)
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
2022-09-15 15:38:50.339 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [compile, -f, --secondary-dex, -m, speed-profile, tinker.sample.android]
2022-09-15 15:38:50.341 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:38:51.342 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [bg-dexopt-job, tinker.sample.android]
2022-09-15 15:38:51.344 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:38:52.346 27780-27802/? E/Tinker.ParallelDex: [-] Error.  java.lang.IllegalStateException: Cannot query transaction code of performDexOptSecondary.
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:340)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274)
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67)
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87)
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157)
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223)
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
     Caused by: java.lang.NoSuchFieldException: No field TRANSACTION_performDexOptSecondary in class Landroid/content/pm/IPackageManager$Stub; (declaration of 'android.content.pm.IPackageManager$Stub' appears in /system/framework/framework.jar)
        at java.lang.Class.getDeclaredField(Native Method)
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
2022-09-15 15:38:56.349 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [compile, -f, --secondary-dex, -m, speed-profile, tinker.sample.android]
2022-09-15 15:38:56.352 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:38:57.353 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [bg-dexopt-job, tinker.sample.android]
2022-09-15 15:38:57.357 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:38:58.361 27780-27802/? E/Tinker.ParallelDex: [-] Error.  java.lang.IllegalStateException: Cannot query transaction code of performDexOptSecondary.
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:340)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274)
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67)
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87)
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157)
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223)
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
     Caused by: java.lang.NoSuchFieldException: No field TRANSACTION_performDexOptSecondary in class Landroid/content/pm/IPackageManager$Stub; (declaration of 'android.content.pm.IPackageManager$Stub' appears in /system/framework/framework.jar)
        at java.lang.Class.getDeclaredField(Native Method)
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
2022-09-15 15:39:02.363 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [compile, -f, --secondary-dex, -m, speed-profile, tinker.sample.android]
2022-09-15 15:39:02.366 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:39:03.369 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [bg-dexopt-job, tinker.sample.android]
2022-09-15 15:39:03.373 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:39:04.378 27780-27802/? E/Tinker.ParallelDex: [-] Error.  java.lang.IllegalStateException: Cannot query transaction code of performDexOptSecondary.
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:340)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274)
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67)
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87)
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157)
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223)
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
     Caused by: java.lang.NoSuchFieldException: No field TRANSACTION_performDexOptSecondary in class Landroid/content/pm/IPackageManager$Stub; (declaration of 'android.content.pm.IPackageManager$Stub' appears in /system/framework/framework.jar)
        at java.lang.Class.getDeclaredField(Native Method)
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
2022-09-15 15:39:08.380 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [compile, -f, --secondary-dex, -m, speed-profile, tinker.sample.android]
2022-09-15 15:39:08.384 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:39:09.385 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd, args: [bg-dexopt-job, tinker.sample.android]
2022-09-15 15:39:09.390 27780-27802/? I/Tinker.ParallelDex: [+] Execute shell cmd done.
2022-09-15 15:39:10.394 27780-27802/? E/Tinker.ParallelDex: [-] Error.  java.lang.IllegalStateException: Cannot query transaction code of performDexOptSecondary.
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:340)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274)
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67)
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87)
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157)
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223)
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333)
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
     Caused by: java.lang.NoSuchFieldException: No field TRANSACTION_performDexOptSecondary in class Landroid/content/pm/IPackageManager$Stub; (declaration of 'android.content.pm.IPackageManager$Stub' appears in /system/framework/framework.jar)
        at java.lang.Class.getDeclaredField(Native Method)
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.performDexOptSecondaryByTransactionCode(TinkerDexOptimizer.java:333) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:274) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67) 
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108) 
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196) 
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87) 
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157) 
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223) 
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:236) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
2022-09-15 15:39:14.399 27780-27802/? E/Tinker.ParallelDex: Fail to call triggerPMDexOptAsyncOnDemand.  java.lang.IllegalStateException: No odex file was generated after calling performDexOptSecondary
        at com.tencent.tinker.loader.TinkerDexOptimizer.triggerPMDexOptOnDemand(TinkerDexOptimizer.java:295)
        at com.tencent.tinker.loader.TinkerDexOptimizer.access$200(TinkerDexOptimizer.java:67)
        at com.tencent.tinker.loader.TinkerDexOptimizer$OptimizeWorker.run(TinkerDexOptimizer.java:166)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:108)
        at com.tencent.tinker.loader.TinkerDexOptimizer.optimizeAll(TinkerDexOptimizer.java:83)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:380)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:196)
        at com.tencent.tinker.lib.c.e.a(DexDiffPatchInternal.java:87)
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:157)
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223)
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
2022-09-15 15:39:15.400 27780-27802/? W/Tinker.ParallelDex: [!] File /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.vdex does not exist after waiting 1 time(s), wait again.
2022-09-15 15:39:17.401 27780-27802/? W/Tinker.ParallelDex: [!] File /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.vdex does not exist after waiting 2 time(s), wait again.
2022-09-15 15:39:21.402 27780-27802/? W/Tinker.ParallelDex: [!] File /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.vdex does not exist after waiting 3 time(s), wait again.
2022-09-15 15:39:29.404 27780-27802/? W/Tinker.ParallelDex: [!] File /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.vdex does not exist after waiting 4 time(s), wait again.
2022-09-15 15:39:45.407 27780-27802/? W/Tinker.ParallelDex: [!] File /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.vdex does not exist after waiting 5 time(s), wait again.
2022-09-15 15:40:17.408 27780-27802/? W/Tinker.ParallelDex: [!] File /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.vdex does not exist after waiting 6 time(s), wait again.
2022-09-15 15:40:17.409 27780-27802/? E/Tinker.ParallelDex: [-] File /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.vdex does not exist after waiting for 6 times.
2022-09-15 15:40:17.411 27780-27802/? I/Tinker.DexDiffPatchInternal: success to parallel optimize dex /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/tinker_classN.apk, opt file:/data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.odex, opt file size: 0, use time 93089
2022-09-15 15:40:17.411 27780-27802/? I/Tinker.DexDiffPatchInternal: recover dex result:true, cost:93796
2022-09-15 15:40:17.412 27780-27802/? W/Tinker.BsDiffPatchInternal: patch recover, library is not contained
2022-09-15 15:40:17.413 27780-27802/? W/Tinker.ResDiffPatchInternal: patch recover, resource is not contained
2022-09-15 15:40:17.413 27780-27802/? I/Tinker.DexDiffPatchInternal: raw dex count: 2, dex opt dex count: 1, final wait times: 60
2022-09-15 15:40:17.433 27780-27802/? I/Tinker.DexDiffPatchInternal: check dex optimizer file exist: /data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/oat/arm64/tinker_classN.odex, size 0
2022-09-15 15:40:17.436 27780-27802/? I/Tinker.PatchInfo: rewritePatchInfoFile file path:/data/user/0/tinker.sample.android/tinker/patch.info , oldVer:, newVer:b2294d85ef82f15222d730582a816777, isProtectedApp:0, isRemoveNewVersion:0, fingerprint:Redmi/camellia/camellia:11/RP1A.200720.011/V12.5.3.0.RKSCNXM:user/release-keys, oatDir:odex, isRemoveInterpretOATDir:0, stack: java.lang.Throwable
        at com.tencent.tinker.loader.shareutil.SharePatchInfo.rewritePatchInfoFile(SharePatchInfo.java:185)
        at com.tencent.tinker.loader.shareutil.SharePatchInfo.rewritePatchInfoFileWithLock(SharePatchInfo.java:104)
        at com.tencent.tinker.lib.c.g.a(UpgradePatch.java:183)
        at com.tencent.tinker.lib.service.TinkerPatchService.a(TinkerPatchService.java:223)
        at com.tencent.tinker.lib.service.TinkerPatchService.onHandleIntent(TinkerPatchService.java:101)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:77)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
2022-09-15 15:40:17.441 27780-27802/? I/Tinker.UpgradePatchRetry: onPatchResetMaxCheck, reset max check to 1
2022-09-15 15:40:17.443 27780-27802/? W/Tinker.UpgradePatch: UpgradePatch tryPatch: done, it is ok
2022-09-15 15:40:17.443 27780-27802/? I/Tinker.DefaultPatchReporter: patchReporter onPatchResult: patch all result path: /storage/emulated/0/Android/data/tinker.sample.android/cache/patch_signed_7zip.apk, success: true, cost: 93848
2022-09-15 15:40:17.444 27780-27802/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/user/0/tinker.sample.android/tinker_temp/temp.apk
2022-09-15 15:40:17.468 27667-27814/? V/Tinker.SampleResultService: SampleResultService receive result: 
    PatchResult: 
    isSuccess:true
    rawPatchFilePath:/storage/emulated/0/Android/data/tinker.sample.android/cache/patch_signed_7zip.apk
    costTime:93848
    dexoptTriggerTime:1663227524321
    isOatGenerated:true
    patchVersion:b2294d85ef82f15222d730582a816777
2022-09-15 15:40:17.474 27667-27814/? W/Tinker.DefaultTinkerResultService: deleteRawPatchFile rawFile path: /storage/emulated/0/Android/data/tinker.sample.android/cache/patch_signed_7zip.apk
2022-09-15 15:40:17.475 27667-27814/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /storage/emulated/0/Android/data/tinker.sample.android/cache/patch_signed_7zip.apk
2022-09-15 15:40:17.475 27667-27814/? V/Tinker.SampleResultService: tinker wait screen to restart process

------------------------------------------------------补丁重启后运行日志-------------------------------------------------------------
2022-09-15 15:41:34.410 27827-27827/? D/Tinker.TinkerLoader: tryLoad test test
2022-09-15 15:41:34.419 27827-27827/? I/Tinker.TinkerInternals: class not found exception
2022-09-15 15:41:34.420 27827-27827/? D/Tinker.TinkerInternals: getCurrentInstructionSet:arm64
2022-09-15 15:41:34.420 27827-27827/? W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
2022-09-15 15:41:34.420 27827-27827/? D/Tinker.TinkerInternals: same fingerprint:Redmi/camellia/camellia:11/RP1A.200720.011/V12.5.3.0.RKSCNXM:user/release-keys
2022-09-15 15:41:34.420 27827-27827/? W/Tinker.TinkerInternals: getSafeModeCount: recFileName:safemode_count_rec_tinker.sample.android failed, return 0 instead.
2022-09-15 15:41:34.421 27827-27827/? I/Tinker.TinkerInternals: setSafeModeCount: count: 1
2022-09-15 15:41:34.421 27827-27827/? I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/~~bWMKdc2b7FI9gV4FALL2OA==/tinker.sample.android-pWvyqYOrjEerPc3KcDE8Kg==/base.apk"],nativeLibraryDirectories=[/data/app/~~bWMKdc2b7FI9gV4FALL2OA==/tinker.sample.android-pWvyqYOrjEerPc3KcDE8Kg==/lib/arm64, /system/lib64, /system/system_ext/lib64]]]
2022-09-15 15:41:34.421 27827-27827/? I/Tinker.TinkerDexLoader: verify dex file:/data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/tinker_classN.apk md5, use time: 0
2022-09-15 15:41:34.421 27827-27827/? I/Tinker.ClassLoaderAdder: installDexes dexOptDir: /data/user/0/tinker.sample.android/tinker/patch-b2294d85/odex, dex size:1
2022-09-15 15:41:34.428 27827-27827/? I/Tinker.ClassLoaderAdder: after loaded classloader: com.tencent.tinker.loader.TinkerClassLoader[DexPathList[[zip file "/data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/tinker_classN.apk"],nativeLibraryDirectories=[/data/app/~~bWMKdc2b7FI9gV4FALL2OA==/tinker.sample.android-pWvyqYOrjEerPc3KcDE8Kg==/lib/arm64, /system/lib64, /system/system_ext/lib64]]], dex size:1
2022-09-15 15:41:34.429 27827-27827/? I/Tinker.ClassLoaderAdder: checkDexInstall result: false, checker_classloader: com.tencent.tinker.loader.TinkerClassLoader[DexPathList[[zip file "/data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/tinker_classN.apk"],nativeLibraryDirectories=[/data/app/~~bWMKdc2b7FI9gV4FALL2OA==/tinker.sample.android-pWvyqYOrjEerPc3KcDE8Kg==/lib/arm64, /system/lib64, /system/system_ext/lib64]]]
2022-09-15 15:41:34.429 27827-27827/? E/Tinker.TinkerDexLoader: install dexes failed
2022-09-15 15:41:34.429 27827-27827/? W/Tinker.TinkerLoader: tryLoadPatchFiles:onPatchLoadDexesFail
2022-09-15 15:41:34.431 27827-27827/? D/Tinker.DefaultAppLike: onBaseContextAttached:
2022-09-15 15:41:34.440 27827-27827/? V/Tinker.SamplePatchListener: application maxMemory:256
2022-09-15 15:41:34.444 27827-27827/? W/Tinker.Tinker: tinker patch directory: /data/user/0/tinker.sample.android/tinker
2022-09-15 15:41:34.447 27827-27827/? I/Tinker.Tinker: try to install tinker, isEnable: true, version: 1.9.14.22
2022-09-15 15:41:34.447 27827-27827/? I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:-14, process name:tinker.sample.android, main process:true, systemOTA:false, fingerPrint:Redmi/camellia/camellia:11/RP1A.200720.011/V12.5.3.0.RKSCNXM:user/release-keys, oatDir:odex, useInterpretMode:false
2022-09-15 15:41:34.448 27827-27827/? I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:, newVersion:b2294d85ef82f15222d730582a816777, current:b2294d85ef82f15222d730582a816777
2022-09-15 15:41:34.448 27827-27827/? I/Tinker.TinkerLoadResult: Tinker load have exception loadCode:-14
2022-09-15 15:41:34.449 27827-27827/? E/Tinker.DefaultLoadReporter: patch loadReporter onLoadException: tinker dex check fail:Tinker Exception:checkDexInstall failed
2022-09-15 15:41:34.454 27827-27827/? I/Tinker.DefaultLoadReporter: dex exception disable tinker forever with sp
2022-09-15 15:41:34.454 27827-27827/? E/Tinker.DefaultLoadReporter: tinker load exception, welcome to submit issue to us: https://github.com/Tencent/tinker/issues
2022-09-15 15:41:34.455 27827-27827/? E/Tinker.DefaultLoadReporter: tinker load exception  com.tencent.tinker.loader.TinkerRuntimeException: Tinker Exception:checkDexInstall failed
        at com.tencent.tinker.loader.SystemClassLoaderAdder.installDexes(SystemClassLoaderAdder.java:73)
        at com.tencent.tinker.loader.TinkerDexLoader.loadTinkerJars(TinkerDexLoader.java:191)
        at com.tencent.tinker.loader.TinkerLoader.tryLoadPatchFilesInternal(TinkerLoader.java:325)
        at com.tencent.tinker.loader.TinkerLoader.tryLoad(TinkerLoader.java:57)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.tencent.tinker.loader.app.TinkerApplication.loadTinker(TinkerApplication.java:119)
        at com.tencent.tinker.loader.app.TinkerApplication.onBaseContextAttached(TinkerApplication.java:157)
        at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(TinkerApplication.java:180)
        at android.app.Application.attach(Application.java:353)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1159)
        at android.app.LoadedApk.makeApplication(LoadedApk.java:1248)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6980)
        at android.app.ActivityThread.access$1600(ActivityThread.java:261)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2025)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.app.ActivityThread.main(ActivityThread.java:8051)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
2022-09-15 15:41:34.457 27827-27827/? I/Tinker.PatchInfo: rewritePatchInfoFile file path:/data/user/0/tinker.sample.android/tinker/patch.info , oldVer:, newVer:b2294d85ef82f15222d730582a816777, isProtectedApp:0, isRemoveNewVersion:1, fingerprint:Redmi/camellia/camellia:11/RP1A.200720.011/V12.5.3.0.RKSCNXM:user/release-keys, oatDir:odex, isRemoveInterpretOATDir:0, stack: java.lang.Throwable
        at com.tencent.tinker.loader.shareutil.SharePatchInfo.rewritePatchInfoFile(SharePatchInfo.java:185)
        at com.tencent.tinker.loader.shareutil.SharePatchInfo.rewritePatchInfoFileWithLock(SharePatchInfo.java:104)
        at com.tencent.tinker.lib.e.a.q(Tinker.java:271)
        at com.tencent.tinker.lib.d.a.a(DefaultLoadReporter.java:327)
        at com.tencent.tinker.lib.d.a.a(DefaultLoadReporter.java:282)
        at tinker.sample.android.c.a.a(SampleLoadReporter.java:68)
        at com.tencent.tinker.lib.e.d.a(TinkerLoadResult.java:142)
        at com.tencent.tinker.lib.e.a.a(Tinker.java:153)
        at com.tencent.tinker.lib.e.c.a(TinkerInstaller.java:71)
        at tinker.sample.android.d.b.b(TinkerManager.java:98)
        at tinker.sample.android.app.SampleApplicationLike.onBaseContextAttached(SampleApplicationLike.java:96)
        at com.tencent.tinker.entry.TinkerApplicationInlineFence.handleMessageImpl(TinkerApplicationInlineFence.java:72)
        at com.tencent.tinker.entry.TinkerApplicationInlineFence.handleMessage_$noinline$(TinkerApplicationInlineFence.java:60)
        at com.tencent.tinker.entry.TinkerApplicationInlineFence.handleMessage(TinkerApplicationInlineFence.java:53)
        at com.tencent.tinker.loader.app.TinkerInlineFenceAction.callOnBaseContextAttached(TinkerInlineFenceAction.java:47)
        at com.tencent.tinker.loader.app.TinkerApplication.onBaseContextAttached(TinkerApplication.java:162)
        at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(TinkerApplication.java:180)
        at android.app.Application.attach(Application.java:353)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1159)
        at android.app.LoadedApk.makeApplication(LoadedApk.java:1248)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6980)
        at android.app.ActivityThread.access$1600(ActivityThread.java:261)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2025)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.app.ActivityThread.main(ActivityThread.java:8051)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
2022-09-15 15:41:34.459 27827-27827/? I/Tinker.DefaultLoadReporter: patch loadReporter onLoadResult: patch load result, path:/data/user/0/tinker.sample.android/tinker, code: -14, cost: 19ms
2022-09-15 15:41:34.459 27827-27827/? W/Tinker.Tinker: tinker load fail!
2022-09-15 15:41:34.459 27827-27827/? I/Tinker.TinkerInternals: setSafeModeCount: count: 0
2022-09-15 15:41:34.462 27827-27827/? D/Tinker.DefaultAppLike: onCreate
2022-09-15 15:41:34.587 27827-27827/? I/Tinker.TinkerInternals: class not found exception
2022-09-15 15:41:34.587 27827-27827/? E/Tinker.MainActivity: ARK HOT Running status = false
2022-09-15 15:41:34.587 27827-27827/? E/Tinker.MainActivity: i am on onCreate classloader:com.tencent.tinker.loader.TinkerClassLoader[DexPathList[[zip file "/data/user/0/tinker.sample.android/tinker/patch-b2294d85/dex/tinker_classN.apk"],nativeLibraryDirectories=[/data/app/~~bWMKdc2b7FI9gV4FALL2OA==/tinker.sample.android-pWvyqYOrjEerPc3KcDE8Kg==/lib/arm64, /system/lib64, /system/system_ext/lib64]]]
2022-09-15 15:41:34.587 27827-27827/? E/Tinker.MainActivity: i am on onCreate string:I am in the base apk
2022-09-15 15:41:34.592 27827-27827/? E/Tinker.MainActivity: i am on onResume
2022-09-15 15:41:34.607 27827-27827/? D/Tinker.DefaultAppLike: [PendingLog @ 2022-09-15 15:41:34.431] onBaseContextAttached:
2022-09-15 15:41:34.706 27827-27827/? W/Tinker.UpgradePatchRetry: onPatchRetryLoad patch file: /data/user/0/tinker.sample.android/tinker_temp/temp.apk is not exist, just return

提问题时若使用`不能用/没效果/有问题/报错`此类模糊表达,但又没给出任何代码截图报错的,将绝对不会有任何反馈。这种issue也是一律直接关闭的,大家可以参阅[提问的智慧](https://github.com/tvvocold/How-To-Ask-Questions-The-Smart-Way)。

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

+1

HardFatal commented 1 year ago

使用tinker-sample-android,LOAD PATCH成功之后, 第一次KILL SELF 打开demo patch加载成功, 再次 KILL SELF 打开demo patch加载不成功

不知道哪里有问题

srxffcc1 commented 1 year ago

只生效一次的问题 解法也比较常见 在自己的项目中 引入一个 tinker-android-loader-fix(工程内容是tinker-android-loader的拷贝)的工程 用来替换掉 tinker-android-loader 工程 替换办法也较为容易 api("com.tencent.tinker:tinker-android-lib:$tinker_version") { exclude module: 'tinker-android-loader' } 然后 对 fix工程中的 SystemClassLoaderAdder.checkDexInstall 方法屏蔽掉 直接返回true不检查 然后再次打基准包 再打补丁包尝试下 能否正常使用

qianqianyixia commented 1 year ago

只生效一次的问题 解法也比较常见 在自己的项目中 引入一个 tinker-android-loader-fix(工程内容是tinker-android-loader的拷贝)的工程 用来替换掉 tinker-android-loader 工程 替换办法也较为容易 api("com.tencent.tinker:tinker-android-lib:$tinker_version") { exclude module: 'tinker-android-loader' } 然后 对 fix工程中的 SystemClassLoaderAdder.checkDexInstall 方法屏蔽掉 直接返回true不检查 然后再次打基准包 再打补丁包尝试下 能否正常使用

这样改是可以的,就是担心 既然tinker自己有意这样写 我们再强行给改掉 会不会有问题啊 目前测试发现使用 1.9.14.21版本的没有问题的

tennkou commented 1 year ago

@qianqianyixia 有更好的解决方案了吗

tennkou commented 1 year ago

确实是,降低版本到 1.9.14.21 就好了,感觉这个方案比上面不check 的好些