DroidPlugin新手须知

这个插件的工程结构是什么样的?

答:请先导入到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


8.DroidPlugin增加宿主app中所有的权限

9.host的app中的project.properties文件中增加manifestmerger.enabled=true


10.@Andy Zhang 张总,插件App里面有一个NFC服务,需要在manifest里面配置aid,但是这个aid系统读不到,一直刷不了卡

Andy Zhang  14:53:18

嗯,对,需要在宿主中配置。

勇敢的少年啊。  14:53:43

只需要配置aid就行了吗?

Andy Zhang  14:55:18

activity都要配置。

Andy Zhang  14:55:24

这种系统读的必须要转发。。

Andy Zhang  14:55:27

否则不行的

勇敢的少年啊。  14:57:49

怎么转发

勇敢的少年啊。  14:58:45

哦~ 意思就是插件的Activity都要配置在宿主里吗?


11、您好,DroidPlugin的开发者,想基于DroidPlugin做一些应用,现在碰到这个问题:无法在插件中注册一些具有特殊Intent Filter的Service以供Android系统、已经安装的其他APP调用。    请问是否有解决方案了

Andy Zhang  16:50:05

这个暂时不行

Andy Zhang  16:50:18

只宿主做转发


12. 先入为主  16:16:18

宿主完全不能调用插件的代码吗?@Andy Zhang

Andy Zhang  16:58:58

不能

Andy Zhang  16:59:15

不可以,除非用contentprovider



Andy Zhang  10:27:03

1、插件与宿主没法共用jar,因为如果共用,可能会导致插件无法独立运行、插件的其它class如果跟宿主名称重复会出现冲突、无法解耦合。

奋斗  10:27:32

@Andy Zhang  ApkPlug这个差简化,他们 做的就是插件和host运行在同一个进程里面的

Andy Zhang  10:28:20

2、通讯目前只能用android标准协议,目前正在做更好的费那个事。

奋斗  10:28:33

@Andy Zhang  插件的classLoader跟host的classLoader不一样

Andy Zhang  10:28:42

3、不运行在同一个进程是为了保证稳定性和动态升级。

Andy Zhang  10:28:45

嗯,对的。

(∩_∩)Joe  10:28:57

如果不是要求plugin越小越好,我也不赞成共用

Andy Zhang  10:29:21

平行空间 也是基于DroidPlugin做的,有大部分代码是基于DroidPlugin

Andy Zhang  10:29:37

所以DroidPlugin经过剪裁和修改时可以支持任何APP的启动的。

你可能感兴趣的:(DroidPlugin新手须知)