DroidPluginTeam / DroidPlugin

A plugin framework on android,Run any third-party apk without installation, modification or repackage
http://droidpluginteam.github.io/DroidPlugin/
GNU Lesser General Public License v3.0
6.9k stars 2.53k forks source link

插件apk中无法使用极光推送 #420

Open JasMSS opened 6 years ago

JasMSS commented 6 years ago

问题说明:

当apk作为普通的程序安装时,运行正常。 当apk作为插件apk加载到宿主apk中时,报异常RuntimeException:Unable to create application ……

实际报错在MyApplication的45行,是这么一行代码: JPushInterface.init(this); //极光推送的初始化 是在极光推送的初始化过程中,有一个静态变量List未初始化导致的空指针异常。

初步猜测原因:DroidPlugin在加载插件apk的过程中忽略了一部分生命周期的工作,以至于极光推送的部分服务没有被正常开启,该“静态成员变量”未被初始化,所以导致了空指针异常。

希望能够解决一下哈~

附异常信息:

Caused by: java.lang.RuntimeException: Unable to create application com.xx.x.MyApplication: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference at android.app.LoadedApk.makeApplication(LoadedApk.java:576) at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.morgoo.droidplugin.reflect.MethodUtils.invokeMethod(MethodUtils.java:214)  at com.morgoo.droidplugin.reflect.MethodUtils.invokeMethod(MethodUtils.java:246)  at com.morgoo.droidplugin.core.PluginProcessManager.preMakeApplication(PluginProcessManager.java:272)  at com.morgoo.droidplugin.core.PluginProcessManager.preLoadApk(PluginProcessManager.java:228)  at com.morgoo.droidplugin.hook.handle.PluginCallback.handleLaunchActivity(PluginCallback.java:377)  at com.morgoo.droidplugin.hook.handle.PluginCallback.handleMessage(PluginCallback.java:245)  at android.os.Handler.dispatchMessage(Handler.java:98)  at android.os.Looper.loop(Looper.java:135)  at android.app.ActivityThread.main(ActivityThread.java:5280)  at java.lang.reflect.Method.invoke(Native Method) 

==================================================================

Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference at cn.jiguang.f.a.a(Unknown Source) at cn.jiguang.f.a.r(Unknown Source) at cn.jiguang.c.a.a(Unknown Source) at cn.jiguang.api.JCoreInterface.init(Unknown Source) at cn.jpush.android.d.a(Unknown Source) at cn.jpush.android.api.JPushInterface.init(Unknown Source) at com.xx.x.MyApplication.onCreate(MyApplication.java:45) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012) at com.morgoo.droidplugin.hook.handle.PluginInstrumentation.callApplicationOnCreate(PluginInstrumentation.java:280) at android.app.LoadedApk.makeApplication(LoadedApk.java:573) at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.morgoo.droidplugin.reflect.MethodUtils.invokeMethod(MethodUtils.java:214)  at com.morgoo.droidplugin.reflect.MethodUtils.invokeMethod(MethodUtils.java:246)  at com.morgoo.droidplugin.core.PluginProcessManager.preMakeApplication(PluginProcessManager.java:272)  at com.morgoo.droidplugin.core.PluginProcessManager.preLoadApk(PluginProcessManager.java:228)  at com.morgoo.droidplugin.hook.handle.PluginCallback.handleLaunchActivity(PluginCallback.java:377)  at com.morgoo.droidplugin.hook.handle.PluginCallback.handleMessage(PluginCallback.java:245)  at android.os.Handler.dispatchMessage(Handler.java:98)  at android.os.Looper.loop(Looper.java:135)  at android.app.ActivityThread.main(ActivityThread.java:5280)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:963)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:758)