gradle统一入口版本管理的初衷是解决一个项目只要一个地方修改,各个有引用的模块便可以自动生效,从而达到了一个地方修改各个地方生效的好处,同时能保持gradle引用库版本的一致。
以下是某个Module下的build.gradle文件
def packageTime() {
return new Date().format("yyyy-MM-dd")
}
def versionMajor = 1
def versionMinor = 1
def versionPatch = 0
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion
defaultConfig {
applicationId "com.syinix.android"
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode 1
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
debug {
keyAlias 'androiddebugkey'
keyPassword 'android'
storeFile file('/Users/kokawaki/.android/debug.keystore')
storePassword 'android'
}
releaseConfig {
storeFile "${System.env.MY_APP_PRIVATE_KEY}"
keyAlias "${System.env.MY_APP_ALIAS}"
storePassword "${System.env.MY_APP_STORE_PW}"
keyPassword "${System.env.MY_APP_PW}"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//官方库
implementation rootProject.ext.supportLibs
}
上面大概有三种变量:def | ${System.env.xx} | rootProject.ext.xx
一.def
首先讲一下 def ,这个就很容易理解 是用来定义变量的关键字类似js中的var、let、const。
二.${System.env.xx}
${System.env.xx}是指在在根目录下的gradle.properties文件里去添加参数如下图:
三.rootProject.ext.xx
rootProject.ext.xx的用法就有2种了:
3.1一种是在根目录下的build.gradle文件里去添加
1、在项目级别的build.gradle文件底部添加ext信息:
ext {
minSdkVersion = 16
targetSdkVersion = 27
compileSdkVersion = 27
buildToolsVersion = '27.0.3'
// App dependencies
supportLibraryVersion = '27.0.2'
ijkPlayerVersion = '0.8.8'
}
2、在模块级别的build.gradle文件中引用
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
api "tv.danmaku.ijk.media:ijkplayer-java:$rootProject.ijkPlayerVersion"
3.2放到另一个单独的xxx.gradle文件中去,然后在根目录下的build.gradle文件中去引入
module调用:
四.新建gradle文件
1.首先切换为project目录
2.整个工程目录下,new -> File
3.输入gardle文件的名称,需注意以".gardle"结尾