使用单独的一个配置来管理版本
在工程主目录下创建config.gradle文件
ext {
compileSdkVersion = 30
minSdkVersion = 21
targetSdkVersion = 30
junit = "4.13.2"
activity = "1.2.0"
appcompat = "1.2.0"
fragment = "1.3.0"
core_ktx = "1.3.2"
multidex = "2.0.1"
kotlin = "1.5.20"
kotlin_coroutines = '1.3.7'
lifecycle = "2.3.0"
work_manager = "2.5.0"
retrofit = "2.9.0"
okhttp = "4.7.2"
paging = "2.1.2"
room = "2.3.0"
stetho = "1.5.1"
glide = "4.11.0"
big_image_view_pager = "androidx-6.0.1"
hilt = "2.4.0"
}
工程主目录下build.gradle中加载文件
buildscript {
...
apply from: "config.gradle"
...
}
多渠道打包
使用productFlavors
来配置
修改生成的安装包名字
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
if (variant.buildType.name == 'develop' || variant.buildType.name == 'debug') {//测试环境测试版
outputFileName = '包名字'
}
if (variant.buildType.name == 'release') {//发布版本
outputFileName = '包名字'
}
}
}
打开混淆
minifyEnabled true
自动化打包
在app下面的build.gradle中添加下面配置就是自己生成签名的安装包
android {
...
signingConfigs {
config {
storeFile file('')
keyAlias ''
keyPassword ''
storePassword ''
}
}
buildTypes {
release {
//签名工具
signingConfig signingConfigs.config
}
使用统一的变量来管理
compileSdk,minSdkVersion和targetSdkVersion版本使用统一的变量版本来管理,所有的库都使用这个变量,方便后面修改
android {
compileSdk rootProject.ext.compileSdkVersion
defaultConfig {
applicationId ""
minSdk rootProject.ext.minSdkVersion
targetSdk rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
api和implementation的区别
api和implementation是在gradle 3.4+添加的
api
当其他模块依赖于此模块时,此模块使用api声明的依赖包是可以被其他模块使用implementation
当其他模块依赖此模块时,此模块使用implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。