1 App插件要实现的目标
A. 不能单独运行,必须在主框架中加载运行,不以安装包的形式存在,不在桌面上显示安装图标.
B.可以被主框架搜索,加载,显示并调用
C.可以在主框架中进行管理,安装及卸载
2 App插件实现分析
首先分析下插件机制使用比较成熟的浏览器,android平台下浏览器插件也是以apk的形式存在的,插件apk没有可直接运行的入口并注册特定的服务以被浏览器搜索并加载,浏览器本身定义了一组标准的jni接口,插件必须实现这些接口来完成和浏览器之间通信,同样浏览器也是通过这组固定的接口来加载运行apk插件.
借助浏览器插件实现的基本思路,App插件的实现采取以下技术手段:
A. 实现主程序和插件之前的无障碍调用,使用android:sharedUserId属性,将插件和主程序的该属性设置成一致,保证主程序和插件之前是在一个进程中,消除权限障碍.
B.主程序调用插件的方式
所有插件apk中实现插件描述类,该类中描述插件所实现的基本方法,在主应用中通过反射机制来调用插件的这些方法.主程序和apk插件可以互相获取context进行交互
C 将插件apk中的控件交互封装在apk内部,避免在主程序中去应用插件的控件