三星 galaxy note2 Android4.1.2 报错uncaughtException:Class ref in pre-verified class resolved to unexpected implementation #124

Closed
w4lle opened this Issue Oct 14, 2016 · 6 comments

Projects

None yet

2 participants

@w4lle
w4lle commented Oct 14, 2016

运行log:

10-14 17:52:17.479 1332-1332/com.boohee.one D/Tinker.DefaultAppLike: onTrimMemory level:20
10-14 17:53:28.249 4107-4107/com.boohee.one W/Tinker.TinkerLoader: tryLoadPatchFiles:patch dir not exist:/data/data/com.boohee.one/tinker
10-14 17:53:28.254 4107-4107/com.boohee.one D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 17:53:31.089 4107-4107/com.boohee.one I/Tinker.SamplePatchListener: application maxMemory:64
10-14 17:53:31.099 4107-4107/com.boohee.one W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 17:53:31.099 4107-4107/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:-2
10-14 17:53:31.099 4107-4107/com.boohee.one W/Tinker.TinkerLoadResult: can't find patch file, is ok, just return
10-14 17:53:31.099 4107-4107/com.boohee.one I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:-2, cost:2
10-14 17:53:31.099 4107-4107/com.boohee.one W/Tinker.Tinker: tinker load fail!
10-14 17:53:31.099 4107-4107/com.boohee.one D/Tinker.DefaultAppLike: onCreate
10-14 17:53:31.949 4107-4107/com.boohee.one W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry info not exist, just return
10-14 17:53:32.159 4402-4402/com.boohee.one:pushservice W/Tinker.TinkerLoader: tryLoadPatchFiles:patch dir not exist:/data/data/com.boohee.one/tinker
10-14 17:53:32.159 4402-4402/com.boohee.one:pushservice D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 17:53:32.174 4402-4402/com.boohee.one:pushservice I/Tinker.SamplePatchListener: application maxMemory:64
10-14 17:53:32.179 4402-4402/com.boohee.one:pushservice W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 17:53:32.179 4402-4402/com.boohee.one:pushservice I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:-2
10-14 17:53:32.179 4402-4402/com.boohee.one:pushservice W/Tinker.TinkerLoadResult: can't find patch file, is ok, just return
10-14 17:53:32.179 4402-4402/com.boohee.one:pushservice I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:-2, cost:1
10-14 17:53:32.179 4402-4402/com.boohee.one:pushservice W/Tinker.Tinker: tinker load fail!
10-14 17:53:32.179 4402-4402/com.boohee.one:pushservice D/Tinker.DefaultAppLike: onCreate
10-14 17:53:32.259 4402-4402/com.boohee.one:pushservice W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry is not main process, just return
10-14 17:53:33.684 4107-4107/com.boohee.one I/Tinker.SamplePatchListener: receive a patch file: /storage/sdcard0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch, isUpgrade:true, file size:19414
10-14 17:53:33.694 4107-4107/com.boohee.one I/Tinker.SamplePatchListener: get platform:all
10-14 17:53:33.979 4471-4471/com.boohee.one:patch W/Tinker.TinkerLoader: tryLoadPatchFiles:patch dir not exist:/data/data/com.boohee.one/tinker
10-14 17:53:33.979 4471-4471/com.boohee.one:patch D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 17:53:34.004 4471-4471/com.boohee.one:patch I/Tinker.SamplePatchListener: application maxMemory:64
10-14 17:53:34.009 4471-4471/com.boohee.one:patch W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 17:53:34.009 4471-4471/com.boohee.one:patch I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:-2
10-14 17:53:34.009 4471-4471/com.boohee.one:patch W/Tinker.TinkerLoadResult: can't find patch file, is ok, just return
10-14 17:53:34.009 4471-4471/com.boohee.one:patch I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:-2, cost:2
10-14 17:53:34.009 4471-4471/com.boohee.one:patch W/Tinker.Tinker: tinker load fail!
10-14 17:53:34.009 4471-4471/com.boohee.one:patch D/Tinker.DefaultAppLike: onCreate
10-14 17:53:34.014 4471-4486/com.boohee.one:patch I/Tinker.DefaultPatchReporter: patchReporter: patch service start
10-14 17:53:34.029 4471-4471/com.boohee.one:patch W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry is not main process, just return
10-14 17:53:34.169 4471-4486/com.boohee.one:patch W/Tinker.UpgradePatchRetry: try copy file: /storage/sdcard0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch to /data/data/com.boohee.one/tinker/temp.apk
10-14 17:53:34.494 4471-4486/com.boohee.one:patch I/Tinker.TinkerPatchService: try to increase patch process priority
10-14 17:53:34.564 4471-4486/com.boohee.one:patch I/Tinker.UpgradePatch: UpgradePatch tryPatch:dexDiffMd5:8ecc2ea158fb6d42d4944d012ad069d2
10-14 17:53:34.564 4471-4486/com.boohee.one:patch I/Tinker.UpgradePatch: UpgradePatch tryPatch:patchVersionDirectory:/data/data/com.boohee.one/tinker/patch-8ecc2ea1
10-14 17:53:34.564 4471-4486/com.boohee.one:patch W/Tinker.UpgradePatch: UpgradePatch after /storage/sdcard0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch size:19414, /data/data/com.boohee.one/tinker/patch-8ecc2ea1/patch-8ecc2ea1.apk size:19414
10-14 17:53:57.629 4471-4486/com.boohee.one:patch W/Tinker.DexDiffPatchInternal: success recover dex file: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/classes.dex.jar, use time: 22961
10-14 17:53:57.629 4471-4486/com.boohee.one:patch I/Tinker.DexDiffPatchInternal: try Extracting /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/test.dex.jar
10-14 17:53:57.634 4471-4486/com.boohee.one:patch I/Tinker.DexDiffPatchInternal: isExtractionSuccessful: true
10-14 17:54:01.544 4471-4486/com.boohee.one:patch I/Tinker.DexDiffPatchInternal: success dex optimize file, path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/classes.dex.jar, use time: 3910
10-14 17:54:01.644 4471-4486/com.boohee.one:patch I/Tinker.DexDiffPatchInternal: success dex optimize file, path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/test.dex.jar, use time: 102
10-14 17:54:01.649 4471-4486/com.boohee.one:patch I/Tinker.DexDiffPatchInternal: recover dex result:true, cost:27073, isUpgradePatch:true
10-14 17:54:01.654 4471-4486/com.boohee.one:patch W/Tinker.BsDiffPatchInternal: patch recover, library is not contained
10-14 17:54:01.664 4471-4486/com.boohee.one:patch I/Tinker.ResDiffPatchInternal: res dir: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/, meta: resArscMd5:39f5c002a68e7513d2049aff8eefe934
                                                                                 arscBaseCrc:2493606535
                                                                                 pattern:resources\.arsc
                                                                                 pattern:assets/.*
                                                                                 pattern:r/.*
                                                                                 pattern:res/.*
                                                                                 addedSet:r/z/ad7.png
                                                                                 largeModifiedSet:resources.arsc
10-14 17:54:01.924 4471-4486/com.boohee.one:patch W/Tinker.ResDiffPatchInternal: success recover large modify file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.arsc , file size:649576, use time:183
10-14 17:54:01.924 4471-4486/com.boohee.one:patch W/Tinker.ResDiffPatchInternal: success recover all large modify use time:260
10-14 17:54:05.714 4471-4486/com.boohee.one:patch I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.arsc
10-14 17:54:05.834 4471-4486/com.boohee.one:patch I/Tinker.ResDiffPatchInternal: final new resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, entry count:2942, size:13268843
10-14 17:54:05.834 4471-4486/com.boohee.one:patch I/Tinker.ResDiffPatchInternal: recover resource result:true, cost:4172, isNewPatch:true
10-14 17:54:05.839 4471-4486/com.boohee.one:patch W/Tinker.UpgradePatch: UpgradePatch tryPatch: done, it is ok
10-14 17:54:05.839 4471-4486/com.boohee.one:patch I/Tinker.DefaultPatchReporter: patchReporter: patch all result path:/storage/sdcard0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch, success:true, cost:31342, isUpgrade:true
10-14 17:54:05.839 4471-4486/com.boohee.one:patch I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch.retry
10-14 17:54:05.839 4471-4486/com.boohee.one:patch I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/temp.apk
10-14 17:54:05.859 4107-4714/com.boohee.one I/Tinker.SampleResultService: SampleResultService receive result: 
                                                                          PatchResult: 
                                                                          isUpgradePatch:true
                                                                          isSuccess:true
                                                                          rawPatchFilePath:/storage/sdcard0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch
                                                                          costTime:31342
                                                                          patchVersion:8ecc2ea158fb6d42d4944d012ad069d2
                                                                          patchTinkerID:108
                                                                          baseTinkerID:108
10-14 17:54:05.869 4107-4714/com.boohee.one I/Tinker.SampleResultService: save delete raw patch file
10-14 17:54:05.869 4107-4714/com.boohee.one I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /storage/sdcard0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch
10-14 17:54:05.869 4107-4714/com.boohee.one I/Tinker.SampleResultService: tinker wait screen to restart process
10-14 17:54:19.724 4107-4107/com.boohee.one I/Tinker.SampleResultService: ScreenReceiver action [android.intent.action.SCREEN_OFF] 
10-14 17:54:19.734 4107-4107/com.boohee.one I/Tinker.SampleResultService: app is background now, i can kill quietly
10-14 17:54:21.329 4799-4799/com.boohee.one W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
10-14 17:54:21.329 4799-4799/com.boohee.one E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.tencent.tinker.loader.TinkerResourcePatcher.isResourceCanPatch
10-14 17:54:21.334 4799-4799/com.boohee.one W/dalvikvm: VFY: unable to resolve check-cast 2280 (Landroid/util/ArrayMap;) in Lcom/tencent/tinker/loader/TinkerResourcePatcher;
10-14 17:54:21.664 4799-4799/com.boohee.one W/Tinker.TinkerLoader: tinker safe mode preferName:tinker_own_config_com.boohee.one count:0
10-14 17:54:21.684 4799-4799/com.boohee.one W/Tinker.TinkerLoader: after tinker safe mode count:1
10-14 17:54:21.684 4799-4799/com.boohee.one I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:54:21.684 4799-4799/com.boohee.one W/Tinker.ClassLoaderAdder: checkDexInstall result:true
10-14 17:54:21.689 4799-4799/com.boohee.one I/Tinker.TinkerDexLoader: after loaded classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:54:21.694 4799-4799/com.boohee.one I/Tinker.ResourceLoader: monkeyPatchExistingResources resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, use time: 3
10-14 17:54:21.694 4799-4799/com.boohee.one I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
10-14 17:54:21.699 4799-4799/com.boohee.one D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 17:54:21.754 4799-4799/com.boohee.one I/Tinker.SamplePatchListener: application maxMemory:64
10-14 17:54:21.759 4799-4799/com.boohee.one W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 17:54:21.764 4799-4799/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:0
10-14 17:54:21.764 4799-4799/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:, newVersion:8ecc2ea158fb6d42d4944d012ad069d2, current:8ecc2ea158fb6d42d4944d012ad069d2
10-14 17:54:21.764 4799-4799/com.boohee.one I/Tinker.TinkerLoadResult: oh yeah, tinker load all success
10-14 17:54:21.764 4799-4799/com.boohee.one I/Tinker.DefaultLoadReporter: patch version change from  to 8ecc2ea158fb6d42d4944d012ad069d2
10-14 17:54:21.764 4799-4799/com.boohee.one I/Tinker.DefaultLoadReporter: try kill all other process
10-14 17:54:21.769 4799-4799/com.boohee.one I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:0, cost:538
10-14 17:54:21.799 4799-4799/com.boohee.one D/Tinker.DefaultAppLike: onCreate
10-14 17:54:22.119 4799-4814/com.boohee.one E/Tinker.SampleUncaughtExHandler: uncaughtException:Class ref in pre-verified class resolved to unexpected implementation
10-14 17:54:22.229 4799-4814/com.boohee.one E/Tinker.SampleUncaughtExHandler: tinker has fast crash 1 times
10-14 17:54:23.019 4830-4830/com.boohee.one:pushservice W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
10-14 17:54:23.024 4830-4830/com.boohee.one:pushservice E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.tencent.tinker.loader.TinkerResourcePatcher.isResourceCanPatch
10-14 17:54:23.024 4830-4830/com.boohee.one:pushservice W/dalvikvm: VFY: unable to resolve check-cast 2280 (Landroid/util/ArrayMap;) in Lcom/tencent/tinker/loader/TinkerResourcePatcher;
10-14 17:54:23.034 4830-4830/com.boohee.one:pushservice W/Tinker.TinkerLoader: tinker safe mode preferName:tinker_own_config_com.boohee.one:pushservice count:0
10-14 17:54:23.049 4830-4830/com.boohee.one:pushservice W/Tinker.TinkerLoader: after tinker safe mode count:1
10-14 17:54:23.049 4830-4830/com.boohee.one:pushservice I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:54:23.054 4830-4830/com.boohee.one:pushservice W/Tinker.ClassLoaderAdder: checkDexInstall result:true
10-14 17:54:23.054 4830-4830/com.boohee.one:pushservice I/Tinker.TinkerDexLoader: after loaded classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:54:23.064 4830-4830/com.boohee.one:pushservice I/Tinker.ResourceLoader: monkeyPatchExistingResources resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, use time: 7
10-14 17:54:23.064 4830-4830/com.boohee.one:pushservice I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
10-14 17:54:23.069 4830-4830/com.boohee.one:pushservice D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 17:54:23.094 4830-4830/com.boohee.one:pushservice I/Tinker.SamplePatchListener: application maxMemory:64
10-14 17:54:23.094 4830-4830/com.boohee.one:pushservice W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 17:54:23.099 4830-4830/com.boohee.one:pushservice I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:0
10-14 17:54:23.099 4830-4830/com.boohee.one:pushservice I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:8ecc2ea158fb6d42d4944d012ad069d2, newVersion:8ecc2ea158fb6d42d4944d012ad069d2, current:8ecc2ea158fb6d42d4944d012ad069d2
10-14 17:54:23.099 4830-4830/com.boohee.one:pushservice I/Tinker.TinkerLoadResult: oh yeah, tinker load all success
10-14 17:54:23.099 4830-4830/com.boohee.one:pushservice I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:0, cost:200
10-14 17:54:23.109 4830-4830/com.boohee.one:pushservice D/Tinker.DefaultAppLike: onCreate
10-14 17:54:23.204 4830-4830/com.boohee.one:pushservice W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry is not main process, just return
10-14 17:54:28.654 4854-4854/com.boohee.one W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
10-14 17:54:28.664 4854-4854/com.boohee.one E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.tencent.tinker.loader.TinkerResourcePatcher.isResourceCanPatch
10-14 17:54:28.664 4854-4854/com.boohee.one W/dalvikvm: VFY: unable to resolve check-cast 2280 (Landroid/util/ArrayMap;) in Lcom/tencent/tinker/loader/TinkerResourcePatcher;
10-14 17:54:28.674 4854-4854/com.boohee.one W/Tinker.TinkerLoader: tinker safe mode preferName:tinker_own_config_com.boohee.one count:0
10-14 17:54:28.684 4854-4854/com.boohee.one W/Tinker.TinkerLoader: after tinker safe mode count:1
10-14 17:54:28.684 4854-4854/com.boohee.one I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:54:28.689 4854-4854/com.boohee.one W/Tinker.ClassLoaderAdder: checkDexInstall result:true
10-14 17:54:28.689 4854-4854/com.boohee.one I/Tinker.TinkerDexLoader: after loaded classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:54:28.694 4854-4854/com.boohee.one I/Tinker.ResourceLoader: monkeyPatchExistingResources resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, use time: 8
10-14 17:54:28.694 4854-4854/com.boohee.one I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
10-14 17:54:28.704 4854-4854/com.boohee.one D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 17:54:28.734 4854-4854/com.boohee.one I/Tinker.SamplePatchListener: application maxMemory:64
10-14 17:54:28.739 4854-4854/com.boohee.one W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 17:54:28.744 4854-4854/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:0
10-14 17:54:28.744 4854-4854/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:8ecc2ea158fb6d42d4944d012ad069d2, newVersion:8ecc2ea158fb6d42d4944d012ad069d2, current:8ecc2ea158fb6d42d4944d012ad069d2
10-14 17:54:28.744 4854-4854/com.boohee.one I/Tinker.TinkerLoadResult: oh yeah, tinker load all success
10-14 17:54:28.749 4854-4854/com.boohee.one I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:0, cost:243
10-14 17:54:28.759 4854-4854/com.boohee.one D/Tinker.DefaultAppLike: onCreate
10-14 17:54:28.844 4854-4854/com.boohee.one W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry info not exist, just return
10-14 17:54:29.149 4854-4870/com.boohee.one E/Tinker.SampleUncaughtExHandler: uncaughtException:Class ref in pre-verified class resolved to unexpected implementation
10-14 17:54:29.184 4854-4870/com.boohee.one E/Tinker.SampleUncaughtExHandler: tinker has fast crash 2 times
10-14 17:54:35.199 4892-4892/com.boohee.one W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
10-14 17:54:35.199 4892-4892/com.boohee.one E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.tencent.tinker.loader.TinkerResourcePatcher.isResourceCanPatch
10-14 17:54:35.204 4892-4892/com.boohee.one W/dalvikvm: VFY: unable to resolve check-cast 2280 (Landroid/util/ArrayMap;) in Lcom/tencent/tinker/loader/TinkerResourcePatcher;
10-14 17:54:35.209 4892-4892/com.boohee.one W/Tinker.TinkerLoader: tinker safe mode preferName:tinker_own_config_com.boohee.one count:0
10-14 17:54:35.224 4892-4892/com.boohee.one W/Tinker.TinkerLoader: after tinker safe mode count:1
10-14 17:54:35.224 4892-4892/com.boohee.one I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:54:35.229 4892-4892/com.boohee.one W/Tinker.ClassLoaderAdder: checkDexInstall result:true
10-14 17:54:35.229 4892-4892/com.boohee.one I/Tinker.TinkerDexLoader: after loaded classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:54:35.234 4892-4892/com.boohee.one I/Tinker.ResourceLoader: monkeyPatchExistingResources resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, use time: 7
10-14 17:54:35.234 4892-4892/com.boohee.one I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
10-14 17:54:35.244 4892-4892/com.boohee.one D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 17:54:35.269 4892-4892/com.boohee.one I/Tinker.SamplePatchListener: application maxMemory:64
10-14 17:54:35.274 4892-4892/com.boohee.one W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 17:54:35.279 4892-4892/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:0
10-14 17:54:35.279 4892-4892/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:8ecc2ea158fb6d42d4944d012ad069d2, newVersion:8ecc2ea158fb6d42d4944d012ad069d2, current:8ecc2ea158fb6d42d4944d012ad069d2
10-14 17:54:35.284 4892-4892/com.boohee.one I/Tinker.TinkerLoadResult: oh yeah, tinker load all success
10-14 17:54:35.284 4892-4892/com.boohee.one I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:0, cost:248
10-14 17:54:35.294 4892-4892/com.boohee.one D/Tinker.DefaultAppLike: onCreate
10-14 17:54:35.354 4892-4892/com.boohee.one W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry info not exist, just return
10-14 17:54:35.644 4892-4907/com.boohee.one E/Tinker.SampleUncaughtExHandler: uncaughtException:Class ref in pre-verified class resolved to unexpected implementation
10-14 17:54:35.674 4892-4907/com.boohee.one E/Tinker.SampleUncaughtExHandler: tinker has fast crash 3 times
10-14 17:55:16.649 5439-5439/com.boohee.one W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
10-14 17:55:16.649 5439-5439/com.boohee.one E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.tencent.tinker.loader.TinkerResourcePatcher.isResourceCanPatch
10-14 17:55:16.649 5439-5439/com.boohee.one W/dalvikvm: VFY: unable to resolve check-cast 2280 (Landroid/util/ArrayMap;) in Lcom/tencent/tinker/loader/TinkerResourcePatcher;
10-14 17:55:16.669 5439-5439/com.boohee.one W/Tinker.TinkerLoader: tinker safe mode preferName:tinker_own_config_com.boohee.one count:0
10-14 17:55:16.684 5439-5439/com.boohee.one W/Tinker.TinkerLoader: after tinker safe mode count:1
10-14 17:55:16.684 5439-5439/com.boohee.one I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:55:16.689 5439-5439/com.boohee.one W/Tinker.ClassLoaderAdder: checkDexInstall result:true
10-14 17:55:16.689 5439-5439/com.boohee.one I/Tinker.TinkerDexLoader: after loaded classloader: dalvik.system.PathClassLoader[/data/app/com.boohee.one-1.apk]
10-14 17:55:16.694 5439-5439/com.boohee.one I/Tinker.ResourceLoader: monkeyPatchExistingResources resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, use time: 4
10-14 17:55:16.694 5439-5439/com.boohee.one I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
10-14 17:55:16.699 5439-5439/com.boohee.one D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 17:55:16.714 5439-5439/com.boohee.one I/Tinker.SamplePatchListener: application maxMemory:64
10-14 17:55:16.719 5439-5439/com.boohee.one W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 17:55:16.724 5439-5439/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:0
10-14 17:55:16.724 5439-5439/com.boohee.one I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:8ecc2ea158fb6d42d4944d012ad069d2, newVersion:8ecc2ea158fb6d42d4944d012ad069d2, current:8ecc2ea158fb6d42d4944d012ad069d2
10-14 17:55:16.724 5439-5439/com.boohee.one I/Tinker.TinkerLoadResult: oh yeah, tinker load all success
10-14 17:55:16.724 5439-5439/com.boohee.one I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:0, cost:200
10-14 17:55:16.734 5439-5439/com.boohee.one D/Tinker.DefaultAppLike: onCreate
10-14 17:55:16.779 5439-5439/com.boohee.one W/Tinker.UpgradePatchRetry: onPatchRetryLoad retry info not exist, just return
10-14 17:55:16.954 5439-5476/? E/Tinker.SampleUncaughtExHandler: uncaughtException:Class ref in pre-verified class resolved to unexpected implementation
10-14 17:55:16.964 5439-5476/? E/Tinker.TinkerApplicationHelper: it is not safety to clean patch when tinker is loaded, you should kill all your process after clean!
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/patch-8ecc2ea1.apk
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/classes.dex.jar
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/test.dex.jar
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/odex/classes.dex.dex
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/odex/test.dex.dex
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/odex
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/res
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/info.lock
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch.info
10-14 17:55:16.964 5439-5476/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker
10-14 17:55:16.969 5439-5476/? E/Tinker.SampleUncaughtExHandler: tinker has fast crash more than 3, we just clean patch
@w4lle w4lle changed the title from 三星 galaxy note2 Android4.1.2 uncaughtException:Class ref in pre-verified class resolved to unexpected implementation to 三星 galaxy note2 Android4.1.2 报错uncaughtException:Class ref in pre-verified class resolved to unexpected implementation Oct 14, 2016
@shwenzhang
Collaborator
shwenzhang commented Oct 14, 2016 edited

你要看看接入的几个类设置的对不对
ApplcationLike
tinkerPatch dex loader
传入application的参数是否通过string方式

@w4lle
w4lle commented Oct 14, 2016

@shwenzhang
接入方式没有问题,同样的基准宝和补丁包
测试了其他几台机器没有问题。

@w4lle
w4lle commented Oct 14, 2016

@shwenzhang
对比同样的基准包和补丁包,在魅族 mx3 Android5.0.1 没有问题。log如下

10-14 18:14:37.468 21169-21189/? W/Tinker.UpgradePatchRetry: try copy file: /storage/emulated/0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch to /data/data/com.boohee.one/tinker/temp.apk
10-14 18:14:37.472 21169-21189/? I/Tinker.TinkerPatchService: try to increase patch process priority
10-14 18:14:37.505 21169-21189/? I/Tinker.UpgradePatch: UpgradePatch tryPatch:dexDiffMd5:8ecc2ea158fb6d42d4944d012ad069d2
10-14 18:14:37.505 21169-21189/? I/Tinker.UpgradePatch: UpgradePatch tryPatch:patchVersionDirectory:/data/data/com.boohee.one/tinker/patch-8ecc2ea1
10-14 18:14:37.507 21169-21189/? W/Tinker.UpgradePatch: UpgradePatch after /storage/emulated/0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch size:19414, /data/data/com.boohee.one/tinker/patch-8ecc2ea1/patch-8ecc2ea1.apk size:19414
10-14 18:14:43.531 21169-21189/? W/Tinker.DexDiffPatchInternal: success recover dex file: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/classes.dex.jar, use time: 5982
10-14 18:14:43.532 21169-21189/? I/Tinker.DexDiffPatchInternal: try Extracting /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/test.dex.jar
10-14 18:14:43.533 21169-21189/? I/Tinker.DexDiffPatchInternal: isExtractionSuccessful: true
10-14 18:14:43.688 21169-21189/? I/Tinker.DexDiffPatchInternal: success dex optimize file, path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/classes.dex.jar, use time: 154
10-14 18:14:43.856 21169-21189/? I/Tinker.DexDiffPatchInternal: success dex optimize file, path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/test.dex.jar, use time: 168
10-14 18:14:43.856 21169-21189/? I/Tinker.DexDiffPatchInternal: recover dex result:true, cost:6348, isUpgradePatch:true
10-14 18:14:43.857 21169-21189/? W/Tinker.BsDiffPatchInternal: patch recover, library is not contained
10-14 18:14:43.859 21169-21189/? I/Tinker.ResDiffPatchInternal: res dir: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/, meta: resArscMd5:39f5c002a68e7513d2049aff8eefe934
                                                                arscBaseCrc:2493606535
                                                                pattern:assets/.*
                                                                pattern:res/.*
                                                                pattern:r/.*
                                                                pattern:resources\.arsc
                                                                addedSet:r/z/ad7.png
                                                                largeModifiedSet:resources.arsc
10-14 18:14:43.937 21169-21189/? W/Tinker.ResDiffPatchInternal: success recover large modify file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.arsc , file size:649576, use time:47
10-14 18:14:43.937 21169-21189/? W/Tinker.ResDiffPatchInternal: success recover all large modify use time:77
10-14 18:14:45.377 21169-21189/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.arsc
10-14 18:14:45.423 21169-21189/? I/Tinker.ResDiffPatchInternal: final new resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, entry count:2942, size:13268843
10-14 18:14:45.423 21169-21189/? I/Tinker.ResDiffPatchInternal: recover resource result:true, cost:1565, isNewPatch:true
10-14 18:14:45.500 21169-21189/? W/Tinker.UpgradePatch: UpgradePatch tryPatch: done, it is ok
10-14 18:14:45.502 21169-21189/? I/Tinker.DefaultPatchReporter: patchReporter: patch all result path:/storage/emulated/0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch, success:true, cost:8028, isUpgrade:true
10-14 18:14:45.502 21169-21189/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/patch.retry
10-14 18:14:45.502 21169-21189/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /data/data/com.boohee.one/tinker/temp.apk
10-14 18:14:46.332 21073-21336/? I/Tinker.SampleResultService: SampleResultService receive result: 
                                                               PatchResult: 
                                                               isUpgradePatch:true
                                                               isSuccess:true
                                                               rawPatchFilePath:/storage/emulated/0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch
                                                               costTime:8028
                                                               patchVersion:8ecc2ea158fb6d42d4944d012ad069d2
                                                               patchTinkerID:108
                                                               baseTinkerID:108
10-14 18:14:46.361 21073-21336/? I/Tinker.SampleResultService: save delete raw patch file
10-14 18:14:46.362 21073-21336/? I/Tinker.PatchFileUtil: safeDeleteFile, try to delete path: /storage/emulated/0/Android/data/com.boohee.one/files/tinkerPatch/5.6.3_0.1.patch
10-14 18:14:46.363 21073-21336/? I/Tinker.SampleResultService: tinker wait screen to restart process
10-14 18:15:10.688 21073-21073/? I/Tinker.SampleResultService: ScreenReceiver action [android.intent.action.SCREEN_OFF] 
10-14 18:15:10.691 21073-21073/? I/Tinker.SampleResultService: app is background now, i can kill quietly
10-14 18:15:11.117 21393-21393/? W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
10-14 18:15:11.137 21393-21393/? W/Tinker.TinkerLoader: tinker safe mode preferName:tinker_own_config_com.boohee.one count:0
10-14 18:15:11.146 21393-21393/? W/Tinker.TinkerLoader: after tinker safe mode count:1
10-14 18:15:11.146 21393-21393/? I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.boohee.one-1/base.apk"],nativeLibraryDirectories=[/data/app/com.boohee.one-1/lib/arm, /vendor/lib, /system/lib]]]
10-14 18:15:11.157 21393-21393/? W/Tinker.ClassLoaderAdder: checkDexInstall result:true
10-14 18:15:11.157 21393-21393/? I/Tinker.TinkerDexLoader: after loaded classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/classes.dex.jar", zip file "/data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/test.dex.jar", zip file "/data/app/com.boohee.one-1/base.apk"],nativeLibraryDirectories=[/data/app/com.boohee.one-1/lib/arm, /vendor/lib, /system/lib]]]
10-14 18:15:11.169 21393-21393/? I/Tinker.ResourceLoader: monkeyPatchExistingResources resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, use time: 12
10-14 18:15:11.170 21393-21393/? I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
10-14 18:15:11.175 21393-21393/? D/Tinker.DefaultAppLike: onBaseContextAttached:
10-14 18:15:11.188 21393-21393/? I/Tinker.SamplePatchListener: application maxMemory:256
10-14 18:15:11.193 21393-21393/? W/Tinker.Tinker: tinker patch directory: /data/data/com.boohee.one/tinker
10-14 18:15:11.195 21393-21393/? I/Tinker.TinkerLoadResult: parseTinkerResult loadCode:0
10-14 18:15:11.195 21393-21393/? I/Tinker.TinkerLoadResult: parseTinkerResult oldVersion:, newVersion:8ecc2ea158fb6d42d4944d012ad069d2, current:8ecc2ea158fb6d42d4944d012ad069d2
10-14 18:15:11.196 21393-21393/? I/Tinker.TinkerLoadResult: oh yeah, tinker load all success
10-14 18:15:11.196 21393-21393/? I/Tinker.DefaultLoadReporter: patch version change from  to 8ecc2ea158fb6d42d4944d012ad069d2
10-14 18:15:11.196 21393-21393/? I/Tinker.DefaultLoadReporter: try kill all other process
10-14 18:15:11.202 21393-21393/? I/Tinker.DefaultLoadReporter: patch load result, path:/data/data/com.boohee.one/tinker, code:0, cost:129
10-14 18:15:11.312 21393-21393/? D/Tinker.DefaultAppLike: onCreate
10-14 18:15:11.976 21428-21428/? W/Tinker.TinkerLoader: tryLoadPatchFiles:isEnabledForResource:true
10-14 18:15:11.993 21428-21428/? W/Tinker.TinkerLoader: tinker safe mode preferName:tinker_own_config_com.boohee.one:pushservice count:0
10-14 18:15:12.006 21428-21428/? W/Tinker.TinkerLoader: after tinker safe mode count:1
10-14 18:15:12.007 21428-21428/? I/Tinker.TinkerDexLoader: classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.boohee.one-1/base.apk"],nativeLibraryDirectories=[/data/app/com.boohee.one-1/lib/arm, /vendor/lib, /system/lib]]]
10-14 18:15:12.013 21428-21428/? W/Tinker.ClassLoaderAdder: checkDexInstall result:true
10-14 18:15:12.013 21428-21428/? I/Tinker.TinkerDexLoader: after loaded classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/classes.dex.jar", zip file "/data/data/com.boohee.one/tinker/patch-8ecc2ea1/dex/test.dex.jar", zip file "/data/app/com.boohee.one-1/base.apk"],nativeLibraryDirectories=[/data/app/com.boohee.one-1/lib/arm, /vendor/lib, /system/lib]]]
10-14 18:15:12.020 21428-21428/? I/Tinker.ResourceLoader: monkeyPatchExistingResources resource file:/data/data/com.boohee.one/tinker/patch-8ecc2ea1/res/resources.apk, use time: 7
10-14 18:15:12.021 21428-21428/? I/Tinker.TinkerLoader: tryLoadPatchFiles: load end, ok!
@w4lle
w4lle commented Oct 14, 2016

如果出现Class ref in pre-verified class resolved to unexpected implementation异常, 请确认以下几点:Application中传入ApplicationLike的参数时是否采用字符串而不是Class.getName方式;新的Application是否已经加入到dex loader pattern中; 代码中显式的使用了Application类。

  • 参数方式
public class OneApplicationForTinker extends TinkerApplication {
super(ShareConstants.TINKER_ENABLE_ALL,"com.boohee.one.MyApplication","com.tencent.tinker.loader.TinkerLoader",false);
  • loader pattern
loader = ["com.tencent.tinker.loader.*",
                      "com.boohee.one.tinker.OneApplicationForTinker",
                      "com.boohee.one.patch.PatchHelper"
                      //use sample, let BaseBuildInfo unchangeable with tinker
//                      "tinker.sample.android.app.BaseBuildInfo"
            ]
  • 项目中没有显示的引用OneApplicationForTinker
@w4lle
w4lle commented Oct 14, 2016

把PatchHelper类放到了loader pattern 里,然后报错在PatchHelper
if (SystemUtil.getProcessName(context).equalsIgnoreCase
SystemUtil没有在pattern导致了这个issue的发生。
必须要把PatchHelper引用到的所有类加入pattern才能避免发生问题。
但是tinker不建议这样么做,pattern一般只放一些配置信息。
具体原因还请 @shwenzhang 说明下。

@w4lle w4lle closed this Oct 14, 2016
@w4lle
w4lle commented Oct 25, 2016 edited

简单解释下出现这个问题的原因。
首先有一个规则要明确,就是dex.loader中的类不会出现在任何一个全量补丁dex里。
由于将PatchHelper放到了dex.loader里,那么该类不会出现在补丁dex里。
所以如果PatchHelper引用了另外一个A类,那么A是可能出现在补丁dex里的。
dex顺序大概是这样,newDex1,newDex2,oldDex1,oldDex2.
由于补丁前在oldDex1中PatchHelper和A在同一个dex中,所以PatchHelper可能被打上了CLASS_ISPREVERIFIED标志。
而在加载补丁时,由于PatchHelper还在oldDex1中,而A类被打成补丁存放在newDex1中,PatchHelper调用A实际上是在newDex1中找到了A,所以符合

ClassObject* dvmResolveClass(const ClassObject* referrer, u4 classIdx,
    bool fromUnverifiedConstant)
{
....
       if (!fromUnverifiedConstant &&
            IS_CLASS_FLAG_SET(referrer, CLASS_ISPREVERIFIED))
...
}

这个条件,所以报错。

那么为什么ApplicationLike类如果被打成补丁放在了newDex1中不报错呢?
是因为在TinkerApplication中使用反射调用的ApplicationLike,而反射走了完全不同的路径,不会走到dvmResolveClass方法,也就不会报错了。反射最直接的目的也是为了隔离开这两个类,也就是隔离开了tinker组件和app。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment