-
Notifications
You must be signed in to change notification settings - Fork 522
- 这个插件的工程结构是什么样的?
答:请先导入到Android Studio工程。你会发现有两个工程,一个是TestPlugin,它引用了DroidPlugin的库工程,通过代码简单展示了如何使用DroidPlugin;APITest是一个测试工程,编译后可以当作插件运行在插件系统,用来测试android的各种api。
2.为什么我集成后,奇数次可以打开,偶数次就打不开了?
答:请按照文档中修改
PluginManager.STUB_AUTHORITY_NAME="com.example.droidplugin_stub"
的值。
- 为什么我运行demon的时候安装不上?
答:如果你安装了360手机助手,则是ContentProvider冲突了,请参照文档第四步修改authorities和PluginManager.STUB_AUTHORITY_NAME。
- 如何实现插件和宿主、插件直接的通讯?
答:DroidPlugin系统本身并不提供通讯机制。如有需要请使用Android系统提供的标准apk之间的通讯方式,如果广播、AIDL等方式。但是目前我正在实现更优雅的通讯方式。
- 插件和宿主、插件之间如果共享代码?
答:不行。插件和宿主之间、插件之间都使用了不同的ClassLoader,所以不能互相访问彼此的代码,即使通过反射也不行。因为在一些情况下,插件和宿主可能会使用相同的开源库,比如support V4,但是使用的版本不一致,如果使用同样的ClassLoader来加载,则可能会因为开源库的版本不一致导致冲突。
- 插件和宿主、插件之间如何共享资源?
答:不行。插件和宿主之间、插件之间都使用了不同的AssetManager加载资源,故它们的资源互相隔离,这样才可以实现插件免重新打包。只有这样严格的隔离,才能防止插件和宿主、插件之间的资源id不会冲突。其它插件则通过修改aapt,指定生成的资源id段来解决此事,私以为不够优雅。
7.DroidPlugin支持插件带一个so库吗?64位支持如何?
答:支持。64位支持情况请参见我的提交:https://github.com/Qihoo360/DroidPlugin/commit/534a970440ff149f369f5a11611b191523a0ebe7