前提:要做好项目代码的各个版本数据控制管理,首先我们就得先学习gradle进阶的认知,毕竟平时我们开发也不重视gradle的脚本编写。
组件化管理---build.gradle进阶知识
1.项目依赖版本统一管控:
方式一:在project中创建统一的ext{}对版本数字进行控制:
然后针对module中的build.gradle统一使用这边的版本号:
当然注意将‘ ’引号换成“ ”,$才能正常使用。
三种写法,可以用最精简的方式写。
优势:项目可能有多个library工程,而且这些版本号会随着时间,新Android系统的发布而升级修改,为了省去一个个目录去修改版本号,在主目录下可以快捷而且不遗漏的更新所有版本号。而在组件化中方便切换项目的module类型等
缺陷:
在Android studio3.2.1中,如果你再创建cotlin的module,因为工具默认写法ext.kotlin_version = '1.2.71',就会导致拨错
强迫症不严重的就可以当创建module(cotlin)报错再过来修改为正常值,java工程无影响。
方式二:在project里gradle.properties配置方案:
先看配置属性:
然后调用:
这个方案就可以解决那些强迫症晚期的心头刺了(无意中自己也中枪了(*^▽^*)),在gradle.roperties中所有储存的都为String类型,这也就导致需要常用的类型转化。
这样就能方便快捷的整理版本号了。是不是少了很多烦恼。
扩展使用:
1.热修复扩展,直接在properties.gradle中设置一个TINKER_ENABLE来控制是否添加热修复插件功能
2.插件化扩展,控制依赖的lib库模块是否可以独立运行,控制是一整个apk运行或者是组件单独就可以运行。
常规的build.gradle进阶使用方案
1.秘钥的高端操作,方便编译
2.常用操作解析:
3.gradle的方法封装外放操作,简化gradle中的内容。
4.依赖三方库support:appcompat-v7红线提示
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes
在Android 3.0后增加了新功能,
api("com.alibaba:arouter-api:1.4.1") {
exclude group: 'com.android.support' //处理appcompat-v7携带版本不同导致的报错
}
exclude group将三方库中的冲突support所有库都排除
指定module:
api("com.afollestad.material-dialogs:core:0.9.5.0") {
exclude group: 'com.android.support', module: 'support-v13'
exclude group: 'com.android.support', module: 'support-vector-drawable'
}
补充建议:
另外还有一个建议,在我们自己创建library给别人使用时,如果需要依赖com.android.support的话,建议用provided的方式依赖(android studio3.0中更改为compileOnly),这样只会在编译时有效,不会参与打包。以免给使用者带来不便。
例:
provided 'com.android.support:appcompat-v7:26.1.0'
provided 'com.android.support:design:26.1.0'
provided 'com.android.support:support-vector-drawable:26.1.0'
5.集合命名式封装依赖库
统一在project的根目录配置ext:
就先写到这里了,对看官有用请点赞,谢谢支持^_^
若想了解更多操作请评论留言。