Android插件化初探
🦽

Android插件化初探

Android 的插件化机制是一种动态加载和执行外部组件的技术,允许在不重启或重新安装主应用的情况下动态扩展应用的功能。
 
实现插件化的简要步骤是
下载并解压 AAR,通过类加载器 ClassLoader 加载 AAR 包中的 Java/Kotlin 类,对于 .so 文件,它们被复制到应用的私有目录,然后通过系统的动态链接器加载到应用的进程空间,之后应用就可以通过 JNI 调用这些 Native 方法。对于布局文件,要注意资源 ID 冲突问题。
 
简要原理是:
1. Hook Android 系统的某些方法。
2. 代理 Activity。需要启动插件中的 Activity 时,实际上启动的是代理 Activity,然后再由代理 Activity 跳转到真正的插件 Activity。同样,可以使用代理服务和广播接收器来启动和管理插件中的相应组件。
3. 资源和类加载器管理,动态加载: 插件化框架动态地加载插件的 APK 文件,使用自定义的类加载器来加载插件中的类。资源合并: 框架在运行时合并宿主和插件的资源,确保插件可以正常使用自己的资源文件。
 
主要作用有如下几点:
模块化和解耦: 插件化有助于将大型应用分解成更小、更易于管理的模块,提高代码的可维护性和可扩展性。
热更新: 允许对应用的某个部分进行更新,而无需重新发布整个应用。
减少 APK 体积: 通过将一些不常用的功能分离到插件中,可以减少主 APK 的体积,从而降低安装包的大小。
功能扩展: 可以根据需要动态添加新功能或修改现有功能,而不影响应用的其它部分。
按需加载: 应用可以根据用户的需要加载相应的插件,从而优化内存和性能的使用。