定义一个名为common_config.gradle的文件放在工程根目录下。内容如下:
project.ext{
//java语言
javaVersion = 8
javaMaxHeapSize = '4G'
//Android编译版本
compileSdkVersion = 27
buildToolsVersion = "27.0.3"
minSdkVersion = 17
targetSdkVersion = 27
//混淆
minifyEnable = true
shrinkResEnable = minifyEnable
//JDK版本兼容
sourceCompatibility = this.&getJavaVersion()
targetCompatibility = this.&getJavaVersion()
}
def getJavaVersion(){
switch(project.ext.javaVersion){
case "7":
return JavaVersion.VERSION_1_7
case "8":
return JavaVersion.VERSION_1_8
default:
return JavaVersion.VERSION_1_6
}
}
1.某个工程modle的build.gradle想要引用配置的话,如下:
apply from: "${project.rootDir}/common_config.gradle"
android {
compileSdkVersion project.ext.compileSdkVersion
buildToolsVersion project.ext.buildToolsVersion
defaultConfig {
minSdkVersion project.ext.minSdkVersion
targetSdkVersion project.ext.targetSdkVersion
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled project.ext.minifyEnable
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility project.ext.sourceCompatibility
targetCompatibility project.ext.targetCompatibility
}
}
2.同时对所有modle添加配置的话,则在工程根目录下的build.gradle下添加如下:
subprojects {
apply from: "${project.rootDir}/common_config.gradle"
dependencies {
testCompile 'junit:junit:4.12'
}
}
比如工程包含两个module:app和otherpart,其中app依赖于otherpart,在otherpart/libs目录下存放; 依赖函数库。
为了otherpart能正常引用aar文件中的类,需要在otherpart/build.gradle文件中添加如下:
android{
...
//为了能够在工程的libs目录中找到其中的aar文件
repositories {
flatDir {
dirs 'libs'
}
}
}
dependencies {
//aar文件的依赖配置
compile(name: 'aar的名字' , ext: 'aar')
}
如果其他模块依赖于otherpart的aar,则需要在根目录下的build.gradle添加如下:
allprojects {
repositories {
...
flatDir {
dirs '../otherpart/libs'
}
}
}
在app下的build.gradle文件中进行配置如下:
android {
signingConfigs {
//** 需要替换成自己项目的值,其中***.keystore文件和build.gradle位于同级目录
myConfig {
storeFile file("***.keystore")
storePassword "***"
keyAlias "***"
keyPassword "***"
}
}
buildTypes {
debug {
// debug版本可签名也可不签名
signingConfig signingConfigs.myConfig
//是否混淆
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
release {
// 签名配置
signingConfig signingConfigs.myConfig
//是否混淆
minifyEnabled true
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
allprojects {
repositories {
mavenCentral()
jcenter()
}
}
获取函数库的原理:
以EventBus为例:
compile 'de.greenrobot:eventbus:2.4.0'
GROUP_ID:ARTIFACT_ID:VERSION
此处GROUP_ID是de.greenrobot,ARTIFACT_ID是eventbus,VERSION是2.4.0。
GROUP_ID:标识函数库所属的Group。
ARTIFACT_ID:标识函数库的名字。
VERSION:标识函数库的版本号。