1.插件化开发原理? 新的解决方案: 第一点:不需要安装APK文件,直接可以使用其中的资源 第二点:插件APK资源是在主程序运行中获取的(类库强大) --- 运行时可以干这些事情

2.插件化架构设计? 假设:登录设计(LoginActivity) 代理模式 - 静态代理(选择性监听我想要的方法)

看框架:看包结构和类结构
      角色划分:
      目标接口:自定义目标接口(IPlugin)
      目标对象:具体的Activity(开发者定义的Activity,我们需要提供基类:PluginActivity、PluginFragmentActivity、PluginFragment、PluginService、PluginReceiver、PluginContentProvider......)
      代理对象:需要自定义(ProxyPluginActivity、ProxyPluginFragmentActivity、ProxyPluginService等等)
      
      演示效果:基于DL(Dynamic Loading)


      第一步:加载插件程序
      第二步:启动插件程序
      第三步:通过代理类实现

     PluginProxyActivity
     代理对象需要持有目标对象的引用
      
     目的:就是为了获取目标对象Activity中资源,拿到资源之后,再将这些资源显示到代理对象上面
复制代码

3.Activity、FragmentActivity实现 定义插件化架构设计: 第一步:定义目标接口 第二步:定义目标对象 第三步:定义代理对象 第四步:实现目标对象

目标对象 - 插件程序的生命周期方法,都是由代理对象进行管理和控制
复制代码
注意:目标对象的生命周期的方法不要回调代理对象的生命周期方法,如果回调,那么会出现回调死循环
 第五步:实现代理对象
               代理对象的生命周期管理 — 在清单文件中配置,有系统帮助我们管理



               ProxyPluginActivity代理对象的attach方法的执行流程
               1、主程序调用pluginManager.startPluginActivity启动Activity
               2、系统会自动调用代理对象的onCreate方法
               3、在代理对象(ProxyPluginActivity)的onCreate方法中调用impl.onCreate(getIntent());
                              进行初始化目标对象(也就是管理具体的插件程序)
               4、在ProxyImpl类中启动插件launchTargetActivity
               5、在launchTargetActivity方法中调用attach方法,绑定代理对象的目标对象
复制代码

因为我们代理Activity(ProxyPluginActivity)修饰符不要写成了抽象类,否则 宿主主程序引用出错

adb push D:\AndroidProject\Architect_PluginB_Simple\app\build\outputs\apk\app-debug.apk /storage/emulated/0/DynamicLoadHost //5.0记得开启读写权限