Gradle_配置公共global.gradle檔案
阿新 • • 發佈:2018-12-27
在Android Studio
開發Android工程時,可能一個工程要依賴多個Module
,而每個Module
裡又有各自單獨的bulid.gradle
檔案,每個bulid.gradle
都有自己的版本號或者配置規則,如果每個Module的bulid.gradle
檔案都要配置,那麼工作就會變得繁瑣,所以本章講解如何通過一個公共的global.gradle檔案,來配置整個專案的bulid.gradle
。
建立global.gradle
檔案
// 用來存放應用中的所有配置變數,統一管理,而不再是每個moudle裡都自己寫一份,修改起來更加的方便
ext {
// 支援庫版本號
supportLibraryVersion = '25.3.1'
// Android API 資訊
android = [apkName :'package', // 配置打包後的apk的名稱
compileSdkVersion : 26, //編譯的SDK版本
buildToolsVersion : '26.0.2', //
applicationId : 'cn.com.agree.sdk.runtime.dev', //應用Id
minSdkVersion : 19, //相容的最低SDK版本
targetSdkVersion : 22, //用於提高指定版本的裝置上程式執行體驗
versionCode : 1, //版本號
versionName : '1.0.0', //版本名
multiDexEnabled : true] //新增多dex分包支援
// 簽名配置
signConfigs = ['storeFile' : '../keystore/release.keystore' , //簽名檔案uri
'storePassword': '123456', //密匙庫口令
'keyAlias' : 'release-key', //簽名別名
'keyPassword' : '123456'] //簽名口令
// 依賴包管理
dependencies = ['libSupportV7' : 'com.android.support:appcompat-v7:' + supportLibraryVersion,
'libSupportV4' : 'com.android.support:appcompat-v4:' + supportLibraryVersion,
'libSupportMultidex' : 'com.android.support:multidex:1.0.1',
'support_design' : 'com.android.support:design:' + supportLibraryVersion,
'support_annotations' : 'com.android.support:support-annotations:' + supportLibraryVersion,
'libRecyclerview' : 'com.android.support:recyclerview-v7:' + supportLibraryVersion]
}
工程根目錄下的bulid.gradle
檔案配置
// 引入'global.gradle檔案
apply from: this.file('global.gradle')
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
app目錄下的bulid.gradle
檔案配置
apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion // 配置編譯SDK版本
buildToolsVersion rootProject.ext.android.buildToolsVersion // 配置編輯工具版本
defaultConfig {
applicationId rootProject.ext.android.applicationId // 配置包名
minSdkVersion rootProject.ext.android.minSdkVersion // 配置最低SDK版本
targetSdkVersion rootProject.ext.android.targetSdkVersion //配置目標版本
versionCode rootProject.ext.android.versionCode // 配置版本號
versionName rootProject.ext.android.versionName //配置版本名稱
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
signingConfigs {
debug { //配置debug模式的證書資訊
keyAlias rootProject.ext.signConfigs.keyAlias
keyPassword rootProject.ext.signConfigs.keyPassword
storeFile file(rootProject.ext.signConfigs.storeFile)
storePassword rootProject.ext.signConfigs.storePassword
}
release { //配置release模式的證書資訊
keyAlias rootProject.ext.signConfigs.keyAlias
keyPassword rootProject.ext.signConfigs.keyPassword
storeFile file(rootProject.ext.signConfigs.storeFile)
storePassword rootProject.ext.signConfigs.storePassword
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
lintOptions {
abortOnError false
}
}
repositories {
flatDir {
dirs 'libs'
}
}
// 自定義APK安裝包名
android.applicationVariants.all {
variant ->
variant.outputs.all {
output ->
def outputFile = output.outputFile
if (outputFile.name.contains("debug")) {
outputFileName = new File("${rootProject.ext.android.apkName}-debug-${rootProject.ext.android.versionName}.apk")
} else if (outputFile.name.contains("release")) {
outputFileName = new File("${rootProject.ext.android.apkName}-release-${rootProject.ext.android.versionName}.apk")
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile rootProject.ext.dependencies.libSupportV7
compile rootProject.ext.dependencies.support_design
compile rootProject.ext.dependencies.support_multidex
}