宿主工程加载插件cash
- VirtualAPK 运行相关:
- core version : 'com.didi.virtualapk:core:0.9.6'
- 问题机型,系统版本:SM-G955F, Android4.4.2
- 完整log
E/dalvikvm: Could not find class 'android.databinding.DataBinderMapperProxy', referenced from method com.didi.virtualapk.PluginManager.hookDataBindingUtil - 复现步骤:宿主加载插件时奔溃
- VirtualAPK 构建相关:插件构建是成功的。
完整log
08-16 10:55:48.146 9852-9852/com.xiaoma.launcher E/dalvikvm: Could not find class 'android.databinding.DataBinderMapperProxy', referenced from method com.didi.virtualapk.PluginManager.hookDataBindingUtil 08-16 10:55:48.316 9852-9852/com.xiaoma.launcher E/AndroidRuntime: FATAL EXCEPTION: main Process: com.xiaoma.launcher, PID: 9852 java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation at dalvik.system.DexFile.defineClassNative(Native Method) at dalvik.system.DexFile.defineClass(DexFile.java:222) at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215) at dalvik.system.DexPathList.findClass(DexPathList.java:322) at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:491) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.app.Instrumentation.newApplication(Instrumentation.java:992) at com.didi.virtualapk.internal.LoadedPlugin.makeApplication(LoadedPlugin.java:388) at com.didi.virtualapk.internal.LoadedPlugin.access$300(LoadedPlugin.java:77) at com.didi.virtualapk.internal.LoadedPlugin$1.run(LoadedPlugin.java:291) at com.didi.virtualapk.utils.RunUtil.runOnUiThread(RunUtil.java:57) at com.didi.virtualapk.internal.LoadedPlugin.invokeApplication(LoadedPlugin.java:288) at com.didi.virtualapk.PluginManager.loadPlugin(PluginManager.java:245) at com.xiaoma.launcher.BaseApp.onCreate(BaseApp.java:85) at com.xiaoma.base.CommonApp.onCreate(CommonApp.java:89) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4346) at android.app.ActivityThread.access$1500(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5019) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method)
core version : 'com.didi.virtualapk:core:0.9.6' android os version: 7.1.2 复现步骤:宿主加载插件时奔溃 log 如下:
I/art: Rejecting re-init on previously-failed class java.lang.Class<android.databinding.DataBinderMapperProxy>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/databinding/DataBinderMapper;
at com.didi.virtualapk.PluginManager com.didi.virtualapk.PluginManager.getInstance(android.content.Context) (PluginManager.java:76)
at void com.jd.ds.host.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:41)
at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6709)
at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2619)
at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2727)
at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1478)
at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
at void android.os.Looper.loop() (Looper.java:154)
at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6121)
at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:912)
at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:802)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.databinding.DataBinderMapper" on path: DexPathList[[zip file "/data/app/com.jd.ds-2/base.apk", zip file "/data/app/com.jd.ds-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.jd.ds-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.jd.ds-2/lib/arm64, /system/lib64, /vendor/lib64]]
at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
at com.didi.virtualapk.PluginManager com.didi.virtualapk.PluginManager.getInstance(android.content.Context) (PluginManager.java:76)
at void com.jd.ds.host.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:41)
at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6709)
at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2619)
at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2727)
at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1478)
at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
at void android.os.Looper.loop() (Looper.java:154)
at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6121)
at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:912)
at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:802)
W/System.err: java.lang.ClassNotFoundException: android.databinding.DataBindingUtil
W/System.err: at java.lang.Class.classForName(Native Method)
W/System.err: at java.lang.Class.forName(Class.java:400)
W/System.err: at java.lang.Class.forName(Class.java:326)
W/System.err: at com.didi.virtualapk.PluginManager.hookDataBindingUtil(PluginManager.java:118)
W/System.err: at com.didi.virtualapk.PluginManager.prepare(PluginManager.java:100)
W/System.err: at com.didi.virtualapk.PluginManager.
java.lang.NoClassDefFoundError: android.databinding.DataBindingUtil
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:261)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at com.iflytek.framelib.base.BaseActivity.h(BaseActivity.java:22)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at com.iflytek.framelib.base.CommonActivity.onCreate(CommonActivity.java:115)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at com.iflytek.framelib.base.BaseStudyActivity.onCreate(BaseStudyActivity.java:49)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at com.iflytek.module_map.studysystem.StudySystemActivity.onCreate(StudySystemActivity.java:72)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:7023)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:7014)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at com.didi.virtualapk.internal.VAInstrumentation.callActivityOnCreate(VAInstrumentation.java:156)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2734)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.app.ActivityThread.-wrap11(Unknown Source:0)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6518)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
09-02 10:40:45.564 4060 4060 E AndroidRuntime: Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/databinding/DataBinderMapper;
09-02 10:40:45.564 4060 4060 E AndroidRuntime: at android.databinding.DataBindingUtil.