Qihoo360 / RePlugin

RePlugin - A flexible, stable, easy-to-use Android Plug-in Framework
Apache License 2.0
7.25k stars 1.52k forks source link

replugin项目接入第三方sdk,找不到第三方sdk插件里面的类 #538

Closed fenglins closed 5 years ago

fenglins commented 6 years ago

问题详细描述 Detailed description of the problem

我的项目使用了replugin框架,接入第三方sdk,在初始化sdk,加载sdk里面插件的某个类的时候,报找不到类的异常:java.lang.NoClassDefFoundError: com.odin.plugable.api.standard.ILogger,在初始化的时候,我传入的是宿主的ccontext

注意,第三方sdk里面有使用插件,不是replugin插件 default

一直找不到原因,麻烦大神帮忙解答下

复现问题步骤 Steps to reproduce the problem

  1. 每次启动app,调oncreate里面初始化方法的时候就会出现

其它重要信息 Other important information

replugin-host-lib/gradle Version:2.2.0 rePlugin-plugin-lib/gradle Version:2.2.0

Android API Version:19 Android 手机型号&ROM(Phone model & ROM): 在安卓机顶盒上跑 安卓版本4.4.2

Logcat上下文 Logcat context

03-29 09:55:33.084 3377-3377/com.each.platform E/dalvikvm: Could not find class 'com.odin.plugable.api.standard.ILogger', referenced from method com.odin.framework.plugable.StandardLoggerBridge. 03-29 09:55:33.131 3377-3377/com.each.platform E/AndroidRuntime: FATAL EXCEPTION: main Process: com.each.platform, PID: 3377 java.lang.NoClassDefFoundError: com.odin.plugable.api.standard.ILogger at com.odin.framework.plugable.StandardLoggerBridge.(StandardLoggerBridge.java:16) at com.odin.framework.plugable.Logger.attachService(Logger.java:161) at com.odin.framework.foundation.Framework$1.onLoadFinished(Framework.java:164) at com.odin.framework.foundation.PluginCenter$1.onSettled(PluginCenter.java:145) at com.odin.framework.foundation.PluginCenter$2$1.run(PluginCenter.java:262) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5052) 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:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) at dalvik.system.NativeStart.main(Native Method)

bnotebook commented 5 years ago

Replugin中,宿主和插件的类及资源是完全隔离的,你应该使用插件自己的ClassLoader去加载插件中的类,而不是宿主的。