Android studio gradle高階使用(一)
阿新 • • 發佈:2019-01-24
簡單介紹
在android studio中新建一個工程,開啟app資料夾下這個Module的build.gradle配置檔案,也可以算是整個專案最主要的gradle配置檔案,預設配置如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.ds.test"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs' , include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
testCompile 'junit:junit:4.12'
}
接下來,認識下他們:
/*
apply plugin表明當前module是一個app
如果是library則寫成 apply plugin: 'com.android.library';
* */
apply plugin: 'com.android.application'
//android {...} 配置了android相關的構建選項:
android {
compileSdkVersion 26//編譯的sdk版本
buildToolsVersion "26.0.2"//構建工具版本
defaultConfig {//defaultConfig 配置了AndroidManifest中的一些引數,在構建時會覆蓋AndroidManifest
applicationId "com.ds.test"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {//buildTypes 配置瞭如何構建app,預設有debug和release兩種
release {
minifyEnabled false//是否進行混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//混淆檔案的位置
}
}
}
/*
dependencies 表明了當前module依賴關係,一個module可以用三種方式依賴。
* */
dependencies {
//compile project(":lib")//方式1.依賴統一工程下的另一個module
compile fileTree(dir: 'libs', include: ['*.jar'])//方式2.依賴libs目錄下的jar檔案
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'//方式3.依賴遠端庫
testCompile 'junit:junit:4.12'
}
學習一些技巧
1.自定義apk包名包含資訊是否為debug或是release版本、打包時間、版本號等。
2.將build.gradle中數字相關的定義在gradle.properties檔案中。
build.gradle檔案:
/*
apply plugin表明當前module是一個app
如果是library則寫成 apply plugin: 'com.android.library';
* */
apply plugin: 'com.android.application'
//android {...} 配置了android相關的構建選項:
android {
compileSdkVersion COMPILE_SDK_VERSION as int//編譯的sdk版本
buildToolsVersion BUILD_TOOLS_VERSION//構建工具版本
defaultConfig {//defaultConfig 配置了AndroidManifest中的一些引數,在構建時會覆蓋AndroidManifest
applicationId APPLICATION_ID
minSdkVersion MIN_SDK_VERSION as int
targetSdkVersion TARGET_SDK_VERSION as int
versionCode VERSION_CODE as int
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
applicationVariants.all { variant ->
variant.outputs.each { output ->
def fileName = "${variant.flavorName}_release_v${variant.versionName}.apk"
if (variant.buildType.isDebuggable()) {
fileName = "${variant.flavorName}_debug_v${variant.versionName}.apk"
}
output.outputFile = new File(output.outputFile.parent, fileName)
}
}
}
buildTypes {//buildTypes 配置瞭如何構建app,預設有debug和release兩種
release {
minifyEnabled false// 是否進行混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'// 混淆檔案的位置
}
}
//構建不同的編譯版本
productFlavors {
demo {
applicationId APPLICATION_ID1
versionName VERSION_NAME+"_"+buildTime()
}
full {
applicationId APPLICATION_ID2
versionName VERSION_NAME+"_"+buildTime()
}
}
}
def buildTime() {
return new Date().format('yyyyMMdd')
}
/*
dependencies 表明了當前module依賴關係,一個module可以用三種方式依賴。
* */
dependencies {
//compile project(":lib")//方式1.依賴統一工程下的另一個module
compile fileTree(dir: 'libs', include: ['*.jar'])//方式2.依賴libs目錄下的jar檔案
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'//方式3.依賴遠端庫
testCompile 'junit:junit:4.12'
}
gradle.properties檔案
APPLICATION_ID = com.ds.test
APPLICATION_ID1 = com.ds.test1
APPLICATION_ID2 = com.ds.test2
COMPILE_SDK_VERSION = 26
BUILD_TOOLS_VERSION = 26.0.2
MIN_SDK_VERSION = 15
TARGET_SDK_VERSION = 26
VERSION_CODE = 1
VERSION_NAME = 1.0
經過上面的配置,我們可生成四種名字的apk:
demo_debug_v1.0_20171120.apk
demo_release_v1.0_20171120.apk
full_debug_v1.0_20171120.apk
full_release_v1.0_20171120.apk