# Gradle 配置 Android 工程 #
隨着Android studio 的普及,gradle 也開始在android 開發着中普及起來。這裏分享一下個人grale 腳本以及對gradle的認識。
1.Gradle 的基本結構
整個工程的gradle 由 project build.gradle, seetings.gradle,gradle.properties,module build.gradle 組成。
## 1.project build.gradle ##
projects build.gradle是項目全部模塊須要的資源。以及配置各個module中的公共資源,如版本號,build tool 等信息
ext {
applicationId = "com.tracelijing.immediately"
buildToolsVersion = "23.0.2"
compileSdkVersion = 23
minSdkVersion = 14
targetSdkVersion = 23
versionCode = 1
versionName = "1.0.0"
}
## 2.settings.gradle: ##
這個文件是用來配置多模塊的,好比你的項目有兩個模塊module-app,module-tlibrary,那麼你就須要在這個文件中進行配置,格式以下:
include ':app', ':tlibrary'
## 3.gradle.properties: ##
gradle 配置文件,好比能夠配置簽名相關信息如keystore位置,密碼,keyalias等。
## 4.module.gradle: ##
主要是配置每一個子module 的細節,上面咱們也提到了在root build.gradle 中聲明子module 公用的信息,下面咱們看下子module 中如何使用 rootProject 的信息。
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
- android 中 module 的區分主要有如下兩中
Android application module
apply plugin: 'com.android.application'
android project module
apply plugin: 'com.android.library'
- 工程依賴,jar 包管理
導入jar包
` compile files('libs/xxx.jar')`
導入工程
`compile project(':module-A')`
導入aar
`compile 'com.aaa.xxx:core:1.0.1@aar'`
排除依賴
`compile (group:'xxx',name:'xxx',version:'xxx'){
exclude group:'xxx',module:'xxx'//module對應的就是artifactId}`
- 簽名管理
簽名是一個很敏感的東西,因此咱們應該妥善的保管。這裏咱們能夠把簽名發展本地。
定義一個keystore.properties
store_file=D\:\\Code\\immediately.jks
store_password=123456
key_alias=123456
key_password=123456
signingConfigs {
def Properties props = new Properties()
def propFile = new File('signing.properties')
if (propFile.canRead()) {
props.load(new FileInputStream(propFile))
signingConfigs {
release {
storeFile file(props['store_file'])
storePassword props['store_password']
keyAlias props['key_alias']
keyPassword props['key_password']
}
debug {
storeFile file(props['store_file'])
storePassword props['store_password']
keyAlias props['key_alias']
keyPassword props['key_password']
}
}
} else {
signingConfigs {
debug {
println 'signing.properties not found'
}
}
}
}
- 輸出管理
由於須要常常打包,apk 文件和 mapping 文件不在同一處比較麻煩因此重現定義了一下 apk 文件 已經 mapping 文件的輸出路徑,這樣方便了管理資源
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
def intoFile = "D:\\immediateRelease"
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//這裏修改apk文件名
def fileName = "immediatel-${defaultConfig.versionCode}-${releaseTime()}.apk"
output.outputFile = new File(intoFile, fileName)
}
if (variant.getBuildType().isMinifyEnabled()) {
variant.assemble.doLast {
copy {
from variant.mappingFile
into intoFile
rename { String fileName ->
"mapping-${defaultConfig.versionCode}-${releaseTime()}.txt"
}
}
}
}
}
}
## 總結 ##
本篇只講了 gradle 的基本結構和一些基本配置。
詳細請參考 github https://github.com/lijing01/immediately
Gradle 能夠作不少事情,以後會進一步的學習。android