bugly上面偶先的奔溃日志
java.lang.IllegalStateException:partKey==ky-plugin-take-delivery在map中找不到。此时map:{} 6 com.tencent.shadow.core.loader.ShadowPluginLoader.inject(Unknown Source:98) 7 com.tencent.shadow.core.loader.delegates.ShadowActivityDelegate.onCreate(Unknown Source:77) 8 com.tencent.shadow.core.runtime.container.PluginContainerActivity.onCreate(PluginContainerActivity.java:84) 9 android.app.Activity.performCreate(Activity.java:7136) 10 android.app.Activity.performCreate(Activity.java:7127) 11 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 12 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2924) 13 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3079) 14 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 15 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 16 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 17 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1836) 18 android.os.Handler.dispatchMessage(Handler.java:106) 19 android.os.Looper.loop(Looper.java:193) 20 android.app.ActivityThread.main(ActivityThread.java:6704) 21 java.lang.reflect.Method.invoke(Native Method) 22 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 23 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
partKey==ky-plugin-take-delivery在map中找不到。此时map:{}
这里的map是已加载插件的partKey到插件的各种数据的map。所以从有partKey但是map为空来看,这是进程重启之后试图恢复之前的Activity的启动过程。
SDK有这样的逻辑来应对这种情况,但是看起来它没生效。 https://github.com/Tencent/Shadow/blob/0e5d9d8d935d296bc40555b07d8396ba539de214/projects/sdk/core/activity-container/src/main/java/com/tencent/shadow/core/runtime/container/PluginContainerActivity.java#L106
你可能需要检查一下你修改什么代码,导致这里有可能出现判断错误。可以Debug一下这里的代码,手工构造一些杀死进程的场景。
我这里也有同样的偶现FC。 自己模拟测试,先打开插件页面,然后模拟进程退出,isIllegalIntent方法是生效的:
2022-09-22 09:10:59.098 21988-22140/com.samsung.android.app.sreminder E/PluginContainerActivity: illegalIntent elapsedRealtime==772189482
2022-09-22 09:11:07.945 22281-22281/com.samsung.android.app.sreminder E/PluginContainerActivity: illegalIntent savedInstanceState==Bundle[{PROCESS_ID_KEY=772165470, CM_LOADER_BUNDLE=Bundle[mParcelledData.dataSize=2888], LOADER_VERSION=2.1.0, CM_EXTRAS_BUNDLE=Bundle[mParcelledData.dataSize=1184], CM_PART=rewards-sdk-plugin, PLUGIN_OUT_STATE_KEY=Bundle[mParcelledData.dataSize=4000]}] getIntent().getExtras()==Bundle[mParcelledData.dataSize=4416]
上面的是我自己加的log,进程停止前的elapsedRealtime。 猜不到到底是什么场景会FC。统计上是各个OS下都有崩溃。