0%

第6章:插件化技术基础知识

这是第二部分【解决方案】的第一章

加载外部dex

加载外部dex主要有3个步骤:

  1. 从服务器下载插件 apk到手机 sdcard(需要sdcard权限)
  2. 读取插件apk中的dex,生成对应的 DexClassLoader
  3. 使用DexClassLoader 的loadClass 方法读取插件 dex 中的任何一个类

在理解原理的时候,可以把插件App放在主App的 assets 目录中,用于替代从服务器下载插件。

接下来的部分是例子演示,这里不表。

插件的瘦身

在插件化编程过程中会出现某个moudule在测试的时候需要,但是在正式环境中不需要,因此,可以把这个module打包成jar包,之后使用provided引用:

provided files(“lib/classes.jar”)

因为关键字provided只支持jar包,而不支持module

Application 的插件化解决方案

在插件中可能自定义Application,插件会在这个自定义的Application的onCreate中做一些初始化工作,但我们知道插件的Application是没机会执行的,此时,我们可以在宿主的自定义的Application的onCreate方法中,手动把这些插件Application都反射出来,执行他们的onCreate,不过这样一来,插件Application就是没有生命周期的,它彻底沦为一个普通类。

1
2

//示例代码参见: https://github.com/BaoBaoJianqiang/ZeusStudy1.8
谢谢你的鼓励