当前位置: 首页 > 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 多工程方案 

http://www.lryc.cn/news/265255.html

相关文章:

  • 数字图像处理-空间域图像增强-爆肝18小时用通俗语言进行超详细的总结
  • 【Java】【SQL】DATE_FORMAT函数详解
  • Pooling方法总结(语音识别)
  • Java可变参数(学习推荐版,通俗易懂)
  • 异步编程Promise
  • Centos上的默认文本编辑器vi的操作方法积累
  • 海康rtsp拉流,rtmp推流,nginx部署转flv集成
  • 【Python百宝箱】时序之美:Python 时间序列探秘与创新
  • flutter开发实战-第一帧布局完成回调实现
  • Windows11编译VTM源码生成Visual Studio 工程
  • [数据结构进阶 C++] 二叉搜索树(BinarySearchTree)的模拟实现
  • PostGIS学习教程十四:更多的空间连接
  • 【爬虫软件】孔夫子二手书采集
  • P8736 [蓝桥杯 2020 国 B] 游园安排
  • 初识Docker-什么是docker
  • maven的pom.xml设置本地仓库
  • Qt获取屏幕DPI缩放比
  • Spring MVC控制层框架
  • vmware安装银河麒麟V10高级服务器操作系统
  • 掌握Jenknis基础概念
  • AWS 知识二:AWS同一个VPC下的ubuntu实例通过ldapsearch命令查询目录用户信息
  • Ubuntu 常用命令之 fdisk 命令用法介绍
  • 论文中公式怎么降重 papergpt
  • 27. 过滤器
  • 做一个wiki页面是体验HTML语义的好方法
  • 金融CRM有用吗?金融行业CRM有哪些功能
  • @XmlAccessorType+@XmlElement完美解决Java类到XML映射问题
  • 软件渗透测试有哪些测试流程?权威安全测试报告的重要性
  • 安防视频融合云平台/智慧监控平台EasyCVR如何添加验证码调用接口?
  • 浏览器输入一个url,它的解析过程