【Android 插件化】插件化简介 ( 组件化与插件化 )

简介: 【Android 插件化】插件化简介 ( 组件化与插件化 )

一、组件化与插件化


组件化 是将应用分成若干 Module 模块 , 每个模块称为一个组件 ;


组件化 项目中 , 分为两种模式 , " 集成模式 " 和 " 组件模式 " ;


在开发过程中的 " 组件模式 " 下这些组件可以 独立运行 , 在 " 集成模式 " 下 , 这些组件 相互依赖拼装成一个 APK 安装包 ;



组件化开发的弊端 :


多个模块必须是并发开发 , 模块之间相互依赖 , 如果修改了一个模块 , 那就必须重新打包 ;


插件化开发 , 解决了上述问题 ;



插件化 将应用拆分成若干模块 , 其中有 1 11 个 " 宿主 " 模块 , 若干 " 插件 " 模块 ;


最终打包时 , 将 " 宿主 " 模块 和 " 插件 " 模块 分开进行打包 ;


" 宿主 " 模块 和 " 插件 " 模块 都各自是一个单独 apk 安装文件 ;



插件化 中 , " 宿主 " 模块 和 " 插件 " 模块 可以分开进行编译 , 二者之间互不影响 , 各个模块可以并发进行开发 , " 宿主 " 模块 可以 动态更新插件 ,






二、插件化示例


如像 支付宝 等类似的特大型应用 , 内部提供了几百个小的应用模块 , 不可能在开发时就将其集成进去 , 这些软件的本体只有 100 MB 左右 , 不可能将所有的应用都纳入进去 ;


分辨原生组件与 Web 组件 : 在大型应用中 , 有些应用是使用 WebView 嵌入前端小程序 , 有些是远程组件 , 在 " 开发者选项 " 中 , 打开 " 显示布局边界 " 选项 , 如果是 WebView 就只有一个框 , 如果是原生组件 , 对应的 TextView , ImageView 等都有各自的边界 , 借助布局边界显示可分辨出该第三方小程序是 前端 WebView 界面还是原生应用 ;


打开 " 显示布局边界 " 选项 :


8.png


支付宝主界面效果 : 主界面是原生界面 ;

8.png



饿了么界面时 WebView 界面 , 主要内容是 前端小程序 开发的 ;


8.png


财富管理模块的股票模块 , 是原生应用 ;


8.png


支付宝的主体框架是 Android 原生应用 , 其中的第三方功能 , 小程序 , 基本都是 Web 前端页面 ;


目前这类应用的开发趋势是使用 Web 应用 替换 原生应用 ;



股票模块这类 原生应用 , 一般不会在支付宝开发时 , 打包在其中 , 而是通过 插件化 机制 , 动态部署其插件 apk ;


这类软件第一次打开时 , 需要下载该模块的 插件 apk , 并安装 , 此时会卡顿以下 , 之后可以流畅访问 ;






三、插件化标准引入


插件化 中 , " 宿主 " 模块 和 " 插件 " 模块 可以分开进行编译 , 二者之间互不影响 , 各个模块可以并发进行开发 , " 宿主 " 模块 可以 动态更新插件 ;


" 宿主 " 模块是当前运行的应用 , " 插件 " 模块是下载的插件模块编译后打包的 apk 文件 ;


在不安装 插件 apk 的情况下 , 调用该 插件中的功能 , 如 Activity , Service , 代码逻辑等 ;



不是任意 apk 文件都可以接入到 " 宿主 " 插件中 , 要接入的 apk 必须符合一定的标准 ;


在 apk 插件没有安装 , 因此不存在上下文 , 调用插件中的 Activity 界面时 , 需要将上下文传给插件的 Activity ,


目录
相关文章
|
27天前
|
SQL 人工智能 Dart
Android Studio的插件生态非常丰富
Android Studio的插件生态非常丰富
42 1
|
7月前
|
缓存 程序员 定位技术
Android Studio 插件,那些被大厂优化的程序员们
Android Studio 插件,那些被大厂优化的程序员们
|
2月前
|
Android开发
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
71 0
|
3月前
|
开发工具 Android开发 git
Android实战之组件化中如何进行版本控制和依赖管理
本文介绍了 Git Submodules 的功能及其在组件化开发中的应用。Submodules 允许将一个 Git 仓库作为另一个仓库的子目录,有助于保持模块独立、代码重用和版本控制。虽然存在一些缺点,如增加复杂性和初始化时间,但通过最佳实践可以有效利用其优势。
44 3
|
3月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
51 2
|
7月前
|
Android开发
Android 插件化
Android 插件化
72 0
|
7月前
|
缓存 算法 Java
Linux内核新特性年终大盘点-安卓杀后台现象减少的背后功臣MGLRU算法简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
|
7月前
|
存储 编解码 API
Android Media Framework(一)OpenMAX 框架简介
OpenMAX IL是Khronos Group为嵌入式和移动设备设计的低层级接口,用于统一调用音频、视频和图像编解码器,确保跨平台兼容性。它包括Core API(管理组件加载和方法调用)和Component API(组件实现,如源、接收器、编解码器等)。组件通过端口进行数据交互,客户端使用Core API加载和控制组件。Android引入OMX IL以支持不同芯片上的编解码器。组件状态包括Loaded、Idle、Executing和Invalid。组件架构涉及参数配置、命令处理和缓冲区管理,数据交换通过回调函数完成,端口持有预分配或组件自分配的缓冲区。
108 0
|
7月前
|
存储 Android开发
Android插件化-Broadcast篇,2024年最新安卓面试自我介绍
Android插件化-Broadcast篇,2024年最新安卓面试自我介绍
|
7月前
|
Android开发 Kotlin API
Android插件化探索与发现,kotlin协程切换线程
Android插件化探索与发现,kotlin协程切换线程