-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
partKey==login-plugin在map中找不到 #802
Comments
你Debug一下那个map里的base-plugin是什么时候添加进去的,就理解为什么缺少login-plugin了。 |
还是不太明白 大佬能否明示解决办法 |
问题应该不复杂,搞不定就把代码push上来帮你看看吧。我前面说的意思就是告诉你去debug下那个map添加的过程。 |
https://github.com/yatoooon/MVVMArms feature_plugin分支 |
上面说错了 改为true可以打插件包 改为false是整个包 |
startPluginActivity 点进去 convertActivityIntent 这个里面有调用的哇 这个应该是我从shadow项目中抄过来的代码 |
是不是因为重复的contentprovider 导致loadplugin没有成功 这个androidx.lifecycle.ProcessLifecycleOwnerInitializer provier我就剔除不掉 |
我晚些再看看,找到问题后补些便于定位这种问题的log。 |
@yatoooon 你这个项目编译有点困难呢。我先加了一个CI构建(shifujun/MVVMArms@7a4db38 ),复现了一下编译问题。麻烦先修复下编译吧。 https://github.com/shifujun/MVVMArms/runs/5213485261?check_suite_focus=true |
https://github.com/yatoooon/MVVMArms/runs/5216132587?check_suite_focus=true |
调试了一下,这里的问题是多个插件存在相同authorities的ContentProvider。因为你这些插件在AndroidManifest.xml中的 自动添加到manifest中的组件来源可以从: 然后这里错误提示看到"partKey==login-plugin在map中找不到 ",确实是有问题的。这里是因为跨进程通信的关系,插件进程其实已经先有一次Crash了,但是在插件进程关闭之前,主进程又用通过另一个线程触发了新的Crash。如果把插件都改到主进程,就不会看到第2次Crash了。 这里需要改进应该是loadPlugin调用的跨进程异常传递。 |
如不支持抛出异常,控制端可能会认为调用成功继续调用其他方法。 Loader所在进程在没有及时Crash退出前收到调用,会出现进一步的异常Crash, 从而出现Loader所在进程打印两次不同的Crash信息。 Tencent#802
如不支持抛出异常,控制端可能会认为调用成功继续调用其他方法。 Loader所在进程在没有及时Crash退出前收到调用,会出现进一步的异常Crash, 从而出现Loader所在进程打印两次不同的Crash信息。 #802
存在相同authorities的ContentProvider这个问题该怎么搞啊 大佬有什么好的建议吗 这个ProcessLifecycleOwnerInitializer是com.android.tools.build:gradle引入的 感觉就剔除不掉 也改不掉插件的包名啊 宿主和插件的包名必须是相同的 |
这里不是最终的包名,所以要设置成不同的。最终applicationID设置成一样的就行了。sample里的多插件也都是这样的。 |
好的 我去看看 感谢 |
我看了一下 写法和 ample里的多插件没有区别哇 sample里的provider都是可以自己控制 authorities 的 我这个没有办法控制 |
我的每个module AndroidManifest.xml中的package 值是不一样的 只是最后打成插件会变一样 |
OK,我明白问题了。那确实不应该把lifecycle-process放到每个module里。可以放到base里,然后其他插件依赖它。 其他插件打包时通过`tools:node="remove"把这个Provider从插件的manifest里删掉。https://developer.android.com/studio/build/manage-manifests#node_markers |
感谢 这一步终于可以走过去了 感觉每走一步都是步履维艰 现在又出现了另一个问题 子插件的databinding找不到 我看错误日志 就没有去子插件里面找 只在通用插件里面找 |
大佬 求指点 子插件依赖base插件 两个插件我看了一下都有这个类 但是加载的时候就报这个错了 |
这个问题和这个issue不相关吧?看起来就是一般的找不到类的错误,最好自己仔细检查。如果能在sample上复现的话,可以一起看看。 |
好的 那我就先关掉这个了 |
我先加载了一个base插件 login插件依赖base插件 然后加载login插件 就出现这个错误了
The text was updated successfully, but these errors were encountered: