博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android一个人的组件化:组件隔离,模块调试
阅读量:2357 次
发布时间:2019-05-10

本文共 2266 字,大约阅读时间需要 7 分钟。

组件隔离,模块调试

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

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

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

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

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

settings.gradle

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

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

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

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

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

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

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

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

include ':app'//必要的include ':必要的xxx'//壳app 要加载的Librarygradle.ext.isAppMap =        [/** -1 剔除; 0 libaray; 1 APP*/         ':占位' : -2,         ':libraryA': 0,         ':libraryB': -1,        ]gradle.ext.isDebug = truegradle.ext.debugModelApp = falsefor (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

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

转载地址:http://ftbtb.baihongyu.com/

你可能感兴趣的文章
Squid中文权威指南-第9章 Cache拦截
查看>>
Squid中文权威指南-第10章 与其他Squid会话
查看>>
Squid中文权威指南-第11章 重定向器
查看>>
Squid中文权威指南-第12章 验证辅助器
查看>>
samba配置
查看>>
不要在linux上启用net.ipv4.tcp_tw_recycle参数
查看>>
UML建模——使用EA工具开发时序图实践及经验
查看>>
centos 7源码编译安装qemu-kvm和spice
查看>>
Gobject 学习总结
查看>>
git - 简明指南
查看>>
CentOS 6&7 安装使用多个GCC版本(GCC4.9,GCC5.3,GCC6.2)
查看>>
LD_PRELOAD作用
查看>>
mysql 5.7忘记密码及重新更改目录,无相关文件
查看>>
spice 0.14.0添加新功能
查看>>
ubuntu下安装tcpdump
查看>>
Linux 问题故障定位,看这一篇就够了
查看>>
Linux线程学习总结
查看>>
计算机网络时间同步技术原理介绍
查看>>
CentOS 6.x 如何升级 glibc 2.17
查看>>
Reed-Solomon 编码算法
查看>>