7

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

 3 years ago
source link: https://blog.csdn.net/shulianghan/article/details/117391407
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

original.png
韩曙亮 2021-05-30 20:40:50 631

一、组件化与插件化


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

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

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

组件化开发的弊端 :

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

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

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

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

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

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

二、插件化示例


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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

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

三、插件化标准引入


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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK