-
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
如何正确传递ShadowActivity上下文给插件中的第三方SDK? #1369
Comments
如果第三方SDK是打包到插件里的,那么传入SDK的context应该是插件的activity |
宿主使用插件的classloader,直接反射出插件中的实现类 问题是插件化之前我们这样调用是完全没有问题,现在也没法让第三方sdk大改 |
如果我理解的没错,你的应用场景是需要调用SDK里面的一个方法,这个方法会启动SDK里面的一个activity,所以这个方法需要传入一个Activity类型的参数。 |
你只需要简单的在插件代码中调用那个第三方SDK就行了。如果那个SDK要求你传入的context只能是一个activity,你又非得兼容它,那你就简单的先启动一个不可见的插件activity好了。 你应该没有什么理由用在宿主里获取插件的classloader。这也不是shadow的设计用法。 |
问题描述:
我们在使用Shadow框架时遇到类转换异常:
背景:
jsFuncApi.run()
直接调用第三方SDK的接口实现(在宿主中正常)context
参数传递宿主Activity或插件Application均失败context.startActivity()
关键代码:
错误分析:
根据框架原理,Shadow通过动态代理机制将插件Activity包装成
ShadowActivity
。当使用宿主Activity作为context启动插件组件时:尝试过的方案:
请求建议:
根据框架设计文档,能否指导如何:
PluginContainerActivity
等专用容器传递上下文?@shifujun
The text was updated successfully, but these errors were encountered: