当前位置: 首页 > news >正文

Android 架构 - 组件化

一、概念

组件化是对单个功能进行开发,使得功能可以复用。将多个功能组合起来就是一个业务模块,因此去除了模块间的耦合,使得按业务划分的模块成了可单独运行的业务组件。(一定程度上的独立,还是依附于整个项目中,想完全独立详见插件化)

功能复用每个组件都是一个单独的功能,可被不同的模块甚至不同的应用所使用。
提高效率每个组件都是一个可单独编译运行的APP,由于拆分使得代码量少,调试起来快。
协同开发组件之间相互独立,使得不同的开发人员能专注于各自的功能开发互不影响。

1.1 结构

依赖关系是上层依赖下层,修改频率是上层高于下层。对于业务组件由于存在页面跳转、方法调用、事件通信等问题需要特别处理,其它组件不存在耦合问题封装成 Library 即可。

壳工程用于整合成完整的APP。(打包环境、签名、混淆、业务模块集成、主题等配置工作)
业务组件依赖于公共组件,既可以作为 Application 单独编译运行调试,又可作 为Library 集成到项目中。对于会复用到业务的功能(如搜索)可以再抽取为基础业务组件层供业务组件依赖。
功能组件依赖于基础组件,提供业务组件所需的基本功能。
基础组件通用的基础功能,一般是第三方库,修改频率极低,可作为SDK供所有项目集成使用。

二、组件单独调试

单工程方案以 module 形式存在,动态配置组件的类型。
多工程方案以 library 形式存在,通过 maven 引入。

二、单工程方案

2.1 创建 config.gradle 统一管理配置

项目根目录创建一个名为 config.gradle 文件,对项目进行全局统一配置,然后在 Program 的 build.gradle 中引入它(也可以不创建引入直接在里面写),最后修改 module 的 build.gradle 替换成自定义的引用。

2.2 动态设置 moudle 类型

        AndroidStudio 在新建一个项目后会在根目录生成一个 gradle.properties 文件,其中定义的常量可以被任何一个 build.gradle 所读取,因此可以定义一个 isRelease 的常量(true 为 Library 集成模式,false 为 Application 调试模式)。 

        同步一下后就可以在每个 moudle 的 build.gradle 中对 isRelease 进行判断并设置相应模式。对 applicationId 也要进行处理(Application 模式下才需要)。

com.android.application项目构建后输出 apk 包,在调试时是一个应用能单独编译运行。
com.android.library项目构建后输出 aar 包,在打包时是一个库文件集成到项目中。
com.android.test

 

2.2 多工程方案 

相关文章:

Android 架构 - 组件化

一、概念 组件化是对单个功能进行开发,使得功能可以复用。将多个功能组合起来就是一个业务模块,因此去除了模块间的耦合,使得按业务划分的模块成了可单独运行的业务组件。(一定程度上的独立,还是依附于整个项目中&…...

数字图像处理-空间域图像增强-爆肝18小时用通俗语言进行超详细的总结

目录 灰度变换 直方图(Histogram) 直方图均衡 直方图匹配(规定化) 空间滤波 低通滤波器 高通滤波器 ​​​​​​​ 本文章讲解数字图像处理空间域图像增强,大部分内容来源于课堂笔记中 灰度变换 图像增强&…...

【Java】【SQL】DATE_FORMAT函数详解

在实际应用开发中,使用sql语句也属于开发者的一部分,这次来说说DATE_FORMAT函数。 引言:实际上在使用Java开发过程中,有很多业务场景下,都有时间类型的参数参与。前后端进行交互的时候,针对时间类型的格式…...

Pooling方法总结(语音识别)

Pooling layer将变长的frame-level features转换为一个定长的向量。 1. Statistics Pooling 链接:http://danielpovey.com/files/2017_interspeech_embeddings.pdf The default pooling method for x-vector is statistics pooling. The statistics pooling laye…...

Java可变参数(学习推荐版,通俗易懂)

定义 可变参数本质还是一个数组 示例代码 注意事项 1.形参列表中,可变参数只能有一个 2.可变参数必须放在形参列表的最后面 注意是最后面。 name也可以为int类型...

异步编程Promise

文章目录 前言一、关于 Promise 的理解与使用1.相关知识补充区别实例对象和函数对象同步回调异步回调Js中的错误(error)和错误处理 2.promise是什么 二、Promise 原理三、Promise 封装 Ajax四、async 与 await总结 前言 在项目中,promise的使…...

Centos上的默认文本编辑器vi的操作方法积累

打开一个文本后,常见的操作方法积累如下: 001-进入或退出插入模式的方法 按下 i 进入插入模式。 按下 Esc 退出插入模式。 002-进入命令模式的方法: 按下 Esc 退出插入模式,然后输入冒号:进入命令模式。 003-退出vi编辑器的方…...

海康rtsp拉流,rtmp推流,nginx部署转flv集成

海康rtsp拉流,rtmp推流,nginx部署转flv集成 项目实际使用并测试经正式使用无问题,有问题欢迎评论留言 核心后台java代码: try {// FFmpeg命令String command "ffmpeg -re -i my_video.mp4 -c copy -f flv rtmp://localho…...

【Python百宝箱】时序之美:Python 时间序列探秘与创新

时光漫游:Python 时间序列分析全指南 前言 在数字化时代,时间序列数据扮演着关键的角色,从金融到气象再到生产制造。本文将引导你穿越Python丰富的时间序列分析工具,探索从基础统计到机器学习和深度学习的各个层面。无论你是初学…...

flutter开发实战-第一帧布局完成回调实现

flutter开发实战-第一帧布局完成回调实现 在开发中,我们有时候需要在第一帧布局完成后调用一些相关的方法。这里记录一下是实现过程。 Flutter中有多种不同的Binding,每种Binding都负责不同的功能。下面是Flutter中常见的Binding: 这里简单…...

Windows11编译VTM源码生成Visual Studio 工程

VTM介绍 VTM作为H266/VVC标准的官方参考软件,一直用作H266/VVC标准的研究和迭代。关于H2666/VVC标准的介绍、代码、提案、文档等,可以参考H266/VVC编码标准介绍。 官方代码地址: https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM&…...

[数据结构进阶 C++] 二叉搜索树(BinarySearchTree)的模拟实现

文章目录 1、二叉搜索树1.1 二叉搜索数的概念1.2 二叉搜索树的操作1.2.1 二叉搜索树的查找1.2.2 二叉搜索树的插入1.2.3 二叉搜索树的删除 2、二叉搜索树的应用2.1 K模型2.2 KV模型 3、二叉搜索树的性能分析4、K模型与KV模型完整代码4.1 二叉搜索树的模拟实现(K模型…...

PostGIS学习教程十四:更多的空间连接

PostGIS学习教程十四:更多的空间连接 在上一节中,我们看到了ST_Centroid(geometry)和ST_Union([geometry])函数,以及一些简单的示例。在本节中,我们将用它们做一些更详细的事情。 提示:写完文章后,目录可以…...

【爬虫软件】孔夫子二手书采集

项目演示 孔网爬取图书信息 目录结构 [ |-- api-ms-win-core-synch-l1-2-0.dll, |-- api-ms-win-core-sysinfo-l1-1-0.dll, |-- api-ms-win-core-timezone-l1-1-0.dll, |-- api-ms-win-core-util-l1-1-0.dll, |-- api-ms-win-crt-conio-l1-1-0.dll, |-- api…...

P8736 [蓝桥杯 2020 国 B] 游园安排

题目描述 L \mathrm{L} L 星球游乐园非常有趣,吸引着各个星球的游客前来游玩。小蓝是 L \mathrm{L} L 星球 游乐园的管理员。 为了更好的管理游乐园,游乐园要求所有的游客提前预约,小蓝能看到系统上所有预约游客的名字。每个游客的名字由一…...

初识Docker-什么是docker

Docker是一个快速交付应用、运行应用的技术 目录 一、Docker 二、运用场景 一、什么是Docker?它的作用是什么? Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题? Docker允许开发中将应用、依赖、函数库、配置一起打包&…...

maven的pom.xml设置本地仓库

配置 在Maven项目中&#xff0c;您可以在pom.xml文件中配置本地仓库的路径。在pom.xml文件中&#xff0c;您可以添加以下配置来指定本地仓库的路径&#xff1a; <project>...<repositories><repository><id>local-repo</id><url>file://…...

Qt获取屏幕DPI缩放比

获取屏幕缩放比 网上很多代码是用 logicalDotsPerInch 除以 96 来获取屏幕缩放比&#xff1a; // Windows 除以 96&#xff0c;macOS 除以 72 qreal factor window->screen()->logicalDotsPerInch() / 96.0; 当使能了缩放适配后&#xff0c;logicalDotsPerInch 值就不…...

Spring MVC控制层框架

三、Spring MVC控制层框架 目录 一、SpringMVC简介和体验 1. 介绍2. 主要作用3. 核心组件和调用流程理解4. 快速体验 二、SpringMVC接收数据 1. 访问路径设置2. 接收参数&#xff08;重点&#xff09; 2.1 param 和 json参数比较2.2 param参数接收2.3 路径 参数接收2.4 json参…...

vmware安装银河麒麟V10高级服务器操作系统

vmware安装银河麒麟V10高级服务器操作系统 1、下载银河麒麟V10镜像2、VMware安装银河麒麟V10高级服务器操作系统2.1、新建虚拟机2.2、安装虚拟机 3、配置银河麒麟V10高级服务器操作系统3.1、安装vmware tools3.2、配置静态IP地址 和 dns3.3、查看磁盘分区3.4、查看系统版本 1、…...

【Zynq 进阶三】榨干带宽!深度解析 Linux 下 AXI DMA 高速数据搬运与 Cache 一致性实战

【Zynq 进阶三】榨干带宽&#xff01;深度解析 Linux 下 AXI DMA 高速数据搬运与 Cache 一致性实战 文章目录【Zynq 进阶三】榨干带宽&#xff01;深度解析 Linux 下 AXI DMA 高速数据搬运与 Cache 一致性实战&#x1f4dd; 前言&#xff1a;为什么 UIO 搞不定海量数据&#xf…...

Harness Engineering: 为 AI 搭建可持续迭代环境的实践

在公司内部一个 AIGC页面 Verify 项目(下面代号 HelixVerify )中,我们经历了 114 次版本迭代, 将相对benchmark 的风险样本召回率从 最初的 8% 提升至 98.86%,无风险样本通过率从 36.11% 提升至 54.93%。 **整个 114 次迭代中,基本没有代码是我手写的。**从第一个版本开始,所有…...

终极指南:Kalibr视觉惯性标定中的外参初始化策略全解析

终极指南&#xff1a;Kalibr视觉惯性标定中的外参初始化策略全解析 【免费下载链接】kalibr The Kalibr visual-inertial calibration toolbox 项目地址: https://gitcode.com/gh_mirrors/ka/kalibr Kalibr作为一款强大的视觉惯性标定工具箱&#xff08;The Kalibr visu…...

InstructPix2Pix实现Web端图像编辑:前端开发实战

InstructPix2Pix实现Web端图像编辑&#xff1a;前端开发实战 1. 为什么要把InstructPix2Pix搬到浏览器里 你有没有遇到过这样的场景&#xff1a;设计师同事发来一张产品图&#xff0c;需要临时把背景换成纯白&#xff1b;电商运营急着要一组节日主题的海报&#xff0c;但PS操…...

革新性开源工具Win11Debloat:突破Windows 11性能瓶颈的系统优化方案

革新性开源工具Win11Debloat&#xff1a;突破Windows 11性能瓶颈的系统优化方案 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他…...

Windows右键菜单管理终极指南:3分钟打造高效桌面操作环境

Windows右键菜单管理终极指南&#xff1a;3分钟打造高效桌面操作环境 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾因Windows右键菜单过于臃肿而烦恼&…...

Qt图形视图框架性能调优指南:从QGraphicsScene的ItemIndexMethod到视图更新策略

Qt图形视图框架性能调优实战&#xff1a;从索引算法到渲染优化 在开发CAD设计工具或地理信息系统时&#xff0c;我们团队曾遇到一个棘手问题&#xff1a;当场景中的图元数量超过5000个时&#xff0c;平移视图会出现明显的卡顿。通过系统性的性能分析&#xff0c;我们发现90%的C…...

Mac视频预览增强工具:解决MKV文件无法预览问题的全方位方案

Mac视频预览增强工具&#xff1a;解决MKV文件无法预览问题的全方位方案 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://g…...

BilibiliDown高效使用指南:解决20个核心功能难题

BilibiliDown高效使用指南&#xff1a;解决20个核心功能难题 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/Bil…...

保姆级图解:FD-SOI工艺流程中的关键三步(外延生长、应变硅、HKMG)

保姆级图解&#xff1a;FD-SOI工艺流程中的关键三步&#xff08;外延生长、应变硅、HKMG&#xff09; 在智能手机处理器和自动驾驶芯片的制造中&#xff0c;FD-SOI技术正凭借其独特的性能优势成为行业焦点。这项技术通过超薄绝缘层上硅&#xff08;Ultra-Thin Body and Buried…...