android 组件 隔离,Android一个人的组件化:组件隔离,模块调试

组件隔离,模块调试

承上 Android组件化模块化在移动应用开发中 (序)

查看地址:https://juejin.im/post/5e4d2256f265da575918d381#heading-5

去限制每个library只依赖框架代码并为其添加统一的调试外壳代码,而不是变身app,浪费转换时间,也不需要写两份清单文件。

在此之前简单熟悉一下Gradle能使你的项目构建更快;

Gradle项目的构建分为三个阶段:初始化、配置、执行。在调试时,只去加载需要调试或联合调试的 Module 这样去提高一点构建速度。

settings.gradle

Gradle在初始化阶段会首先去查找setting.gradle文件,查找的规则如下:

查找当前构建目录下的setting.gradle文件。

如果没有找到,则去与当前目录有相同嵌套级别的master目录查找。

如果没有找到,则去父目录查找。

如果没有找到,则进行单项目构建。

如果找到了,Gradle去检查当前项目在settings.gradle中是否有定义。如果没有,则进行单项目构建,否则进行多项目构建。

多项目工程在根目录必须存在setting.gradle文件,单项目工程则可以不需要这个文件。

我们在这个文件内去配置需要调试开发的Library

47d7d30007efd0f8d9ea7c63806806e5.png

include ':app'

//必要的

include ':必要的xxx'

//壳app 要加载的Library

gradle.ext.isAppMap =

[/** -1 剔除; 0 libaray; 1 APP*/

':占位' : -2,

':libraryA': 0,

':libraryB': -1,

]

gradle.ext.isDebug = true

gradle.ext.debugModelApp = false

for (String libraryName : gradle.ext.isAppMap.keySet()) {

if... 决定是否要加载libaray

}

app的build.gradle

...

dependencies {

...

for (String modelName : gradle.ext.isAppMap.keySet()) {

if (gradle.ext.isDebug) {

if (gradle.ext.isAppMap.get(modelName) == 0) {

implementation project(modelName)

}

} else {

implementation project(modelName)

}

}

}

每个library的build.gradle

switch (rootProject.getLoadType(getName())) {

case -1:

return

case 0:

apply plugin: 'com.android.library'

break

}

新建config.gradle

ext {

android = [

compileSdkVersion : 29,

......

]

}

def config = rootProject.ext.android

//相关库依赖

subprojects {

afterEvaluate { mProject ->

if (mProject.hasProperty('android')) {

android {

compileSdkVersion config.compileSdkVersion

......

defaultConfig {

if (mProject.getName().equals('app')) {

applicationId "applicationId"

}

minSdkVersion config.minSdkVersion

targetSdkVersion config.targetSdkVersion

}

}

}

dependencies {

}

}

}

在根项目build.gradle

apply from: "config.gradle"

这样,新建一个Module 基本不需要配置其他,就可以在该Modulen内去实现代码,不同library页面跳转使用ARouter等。

... 未完待续...

作者:caterpillars

链接:https://juejin.im/post/5e5f2efde51d4526d43f3b99

喜欢 就关注吧,欢迎投稿!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值