Tencent / tinker

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.
Other
17.15k stars 3.33k forks source link

java.lang.UnsatisfiedLinkError: Shared library "/data/app/***-3IhVXmnAlMEQk_hwO6_0Mg==/lib/arm/libc++_shared.so" already opened by ClassLoader 0x2b7; can't open in ClassLoader 0xffccbb34 #1216

Open healer-dream opened 5 years ago

healer-dream commented 5 years ago

异常类型:patch后启动应用会导致使用mmkv异常

手机型号:FLA-AL20

手机系统版本:8.0

tinker版本:1.9.13.2

gradle版本:3.3.1

是否使用热更新SDK: bugly sdk

系统:mac

堆栈/日志: 2019-09-05 21:45:26.494 19304-19304/ E/.Tinker.TinkerUncaughtExceptionHandler: [, , 0]:msg : uncaughtException:, throwable : java.lang.RuntimeException: Unable to create application .app.Application: com.tencent.tinker.loader.TinkerRuntimeException: Tinker Exception:fail to invoke onCreate of appLike. at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6637) at android.app.ActivityThread.-wrap2(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) at android.os.Handler.dispatchMessage(Handler.java:108) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7529) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921) Caused by: com.tencent.tinker.loader.TinkerRuntimeException: Tinker Exception:fail to invoke onCreate of appLike. at com.tencent.tinker.loader.app.TinkerApplication.invokeAppLikeOnCreate(TinkerApplication.java:191) at com.tencent.tinker.loader.app.TinkerApplication.onCreate(TinkerApplication.java:205) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1122) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6619) at android.app.ActivityThread.-wrap2(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)  at android.os.Handler.dispatchMessage(Handler.java:108)  at android.os.Looper.loop(Looper.java:166)  at android.app.ActivityThread.main(ActivityThread.java:7529)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)  Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.tencent.tinker.loader.app.TinkerApplication.invokeAppLikeOnCreate(TinkerApplication.java:189) at com.tencent.tinker.loader.app.TinkerApplication.onCreate(TinkerApplication.java:205)  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1122)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6619)  at android.app.ActivityThread.-wrap2(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)  at android.os.Handler.dispatchMessage(Handler.java:108)  at android.os.Looper.loop(Looper.java:166)  at android.app.ActivityThread.main(ActivityThread.java:7529)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)  Caused by: java.lang.UnsatisfiedLinkError: Shared library "/data/app/-3IhVXmnAlMEQk_hwO6_0Mg==/lib/arm/libc++_shared.so" already opened by ClassLoader 0x2b7; can't open in ClassLoader 0xffccbb34 at java.lang.Runtime.loadLibrary0(Runtime.java:1016) at java.lang.System.loadLibrary(System.java:1660) at com.tencent.mmkv.MMKV.(MMKV.java:38) at com.tencent.mmkv.MMKV.initialize(MMKV.java:45) at .mmkv.BaseMMKV.(BaseMMKV.java:27) at ***.mmkv.BaseMMKV.global(BaseM

application中重写了getSharedPreferences方法迁移sp文件到mmkv, getSharedPreferences方法中有用到mmkv,applicationLike中也会用到mmkv,就会导致mmkv的so库会被不同的classloader load两次crash

zhangyongfa888 commented 4 years ago

在初始化第三方库之前,将lib 交给tinker托管;