HostApk调用PluginApk中的类的方法1:通过PackageManager的queryIntentActivities方法,获取ResolvInfo和ActivityInfo;new出一个DexClassLoader,加载PluginApk中的类,利用newInstance方式获取类对象;利用反射机制获取类方法;
HostApk调用PluginApk中的类的方法2:面向接口编程,不用反射的方式。(Plugin项目必须通过一个外部jar,并且该jar包必须是以Library方式被添加到Plugin项目的build path中,不能以“外部Jar”的方式添加。原因:外部jar会作为程序的一部分被打包到最终的程序文件中,从而使得Plugin和Host项目中存在包名相同但验证码不同的类文件。)
插件架构设计过的两种应用:系统主题架构和App Store架构。
Android中的theme概念并不是真正的系统主题,所有的系统图标可以通过一种主题文件进行切换,比如状态栏上的系统图标/各种UI控件的图标/桌面等。思路是把每一个主题文件作为一个插件,在系统设置中可以使用不同的插件作为当前系统的主题,然后修改Framework中读取Resources资源的相关代码。
App Stroe架构,设计一个通用的电子商店客户端,并定义标准的和电子商店服务器通讯的机制,把这种通信机制定义为一个或多个interface文件,不同商店厂只要实现interface即可。然后,把实现后的程序作为一个插件安装到手机中,从而使得用户可以选择不同的插件,而不再需要安装那么多个客户端。