组件化项目部署
学习目录
一:组件化项目的意义:
面试技巧:资历够了,如何在最短时间打动面试官?全是组件化开发
开发需求:不相互依赖,可以项目销户,任意组合,高度解耦
团队效率:分模块打包,测试,统一版本管理(每个模块都能进行版本管理)
我们看下大公司的:
组件化可以将所有模块进行高度隔离 ,比如说在订单模块中调用了我的内容/信息
可以任意将两个模块组装成一个新的app
不互相依赖,但是可以相互销户
二:Phone Moudule 和 Android Library 区别,切换
三:新建common公共库,order订单,personal个人信息库
common公共库 用来管理公共库
例如下图
order订单库 管理订单信息
personal个人信息库
四:Gradle搭建组件化项目环境
在app的build.gradle中,添加公共库依赖
implementation project(':common') // 公共基础库
// 如果是集成化模式,做发布版本时。各个模块都不能独立运行了
if (isRelease) {
implementation project(':order')
implementation project(':personal')
}
五:集成式模块化开发,组件化模式开发
首先我们要了解 什么是集成式模块开发 什么是组件化模块开发
集成式模块开发:
1:打包整个项目apk,子模块不可以独立运行
2: moudle的build.gradle是library
apply plugin: 'com.android.library'
组件化模块开发:
1:子模块可以独立运行
2:每个组件的build.gradle都是application
apply plugin: 'com.android.application'
整个控制器在项目的config.gradle中
ext {
// 定义一个项目全局变量isRelease,用于动态切换:组件化模式 / 集成化模式
// false: 组件化模式(子模块可以独立运行),true :集成化模式(打包整个项目apk,子模块不可独立运行)
isRelease = false
//省略...
}
Gradle搭建组件化项目环境
组件化开发规范:
Phone Moudle 和 Android Library 可以动态切换 通过gradle来配置
六:组件化开发的临时代码,集成化打包时动态隔离
如果配置资源路径,方便测试环境,打包的时候不集成到正式环境
// 配置资源路径,方便测试环境,打包不集成到正式环境
sourceSets {
main {
if (!isRelease) {
// 如果是组件化模式,需要单独运行时
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
} else {
// 集成化模式,整个项目打包apk
manifest.srcFile 'src/main/AndroidManifest.xml'
java {
// release 时 debug 目录下文件不需要合并到主工程
exclude '**/debug/**'
}
}
}
}