Gradle目錄解析
Gradle 是以 Groovy 語言為基礎(chǔ)偎快,面向Java應(yīng)用為主◎嚷梗基于DSL(領(lǐng)域特定語言)語法的自動(dòng)化構(gòu)建工具滨砍。Gradle這個(gè)工具集成了構(gòu)建往湿,測(cè)試妖异,發(fā)布和其他,比如軟件打包领追,生成注釋文檔等功能他膳。之前eclipse使用ant進(jìn)行軟件的構(gòu)建功能,需要配置一大堆的xml绒窑,但是在gradle中就不需要了棕孙。
目前主流的打包方式有ant,maven,gradle。gradle是近幾年發(fā)展起來的自動(dòng)化構(gòu)建工具些膨,解決ant構(gòu)建上的繁瑣代碼蟀俊。比如在ant上發(fā)布多渠道的包,你需要自己寫腳本替換渠道名稱订雾,而在gradle中就不需要了肢预。已經(jīng)內(nèi)建支持多渠道打包。
Gradle的文件結(jié)構(gòu)
./build.gradle
./gradle.properties
./gradlew
./gradlew.bat
./local.properties
./setting.gradle
./XXX.iml
./app/build.gradle
./app/app.iml
./app/proguard-rules.pro
./builld.gradle 和 ./app/build.grade
gradle項(xiàng)目自動(dòng)編譯的時(shí)候要讀取的配置文件洼哎。比如指定項(xiàng)目的依賴包等烫映。build.grade有兩個(gè)沼本,一個(gè)是全局的,一個(gè)是在模塊里面锭沟。全局的build.grade主要設(shè)置的是聲明倉庫源抽兆,gradle的版本號(hào)說明等。
./build.gradle:
buildscript {
repositories {
// 聲明倉庫源族淮,比如我們構(gòu)建了一個(gè)安卓的庫辫红,現(xiàn)在想要把庫上傳到j(luò)center中供別人一起使用,則可以上傳到j(luò)center中
// 具體上傳步驟見:http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0227/2502.html
jcenter()
}
dependencies {
// 說明gradle的版本號(hào)
classpath 'com.android.tools.build:gradle:1.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
// 所有項(xiàng)目都繼承這個(gè)配置
allprojects {
repositories {
mavenLocal()
jcenter()
}
}
./app/build.grade 設(shè)置了模塊的gradle構(gòu)建配置
// 說明這個(gè)模塊是安卓項(xiàng)目瞧筛,如果是多模塊開發(fā)厉熟,有可能有的值為java/war
apply plugin: 'com.android.application'
// 配置了所有android構(gòu)建的參數(shù)
android {
// 編譯使用SDK版本
compileSdkVersion 23
// 編譯工具的版本
buildToolsVersion "23.0.1"
defaultConfig {
// 包名
applicationId "com.awesomeproject"
// sdk最低支持版本
minSdkVersion 16
// 目標(biāo)SDK版本,如果目標(biāo)設(shè)備的API版本正好等于此數(shù)值较幌,就不會(huì)為此程序開啟兼容性檢查判斷的工作
targetSdkVersion 22
// 版本號(hào)
versionCode 1
versionName "1.0"
// 原生
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
buildTypes {
// 發(fā)布時(shí)候的設(shè)置
release {
// 是否進(jìn)行混淆
minifyEnabled false
// 混淆使用文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
// 依賴的工具包
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.facebook.react:react-native:0.11.+'
}
./app/proguard-rules.pro
這個(gè)和上面說的一樣混淆文件
./gradle.properties
grade的運(yùn)行環(huán)境配置揍瑟,比如使用多少內(nèi)存之類的。
./gradlew 和 ./gradlew.bat
自動(dòng)完成 gradle 環(huán)境的腳本乍炉,在linux和mac下直接運(yùn)行g(shù)radlew會(huì)自動(dòng)完成gradle環(huán)境的搭建绢片。
./local.properties#
配置SDK或者NDK的環(huán)境路徑,各個(gè)機(jī)器上這個(gè)變量可能都是不一樣的岛琼,所以不應(yīng)該進(jìn)入版本庫
./setting.gradle#
整個(gè)項(xiàng)目的管理底循,比如這個(gè)項(xiàng)目包含哪些模塊等。
./XXX.iml 和 ./app/app.iml#
iml是Intellij模塊文件槐瑞。Intellij是一款JAVA的IDE熙涤。Android Studio是基于開源的Intellij IDEA開發(fā)出來的IDE。所以Android Studio有的IDE功能是需要有.iml才能使用的困檩。比如我們刪除了iml文件祠挫,可能就在Android Studio中看不到一些目錄了。
參考
IDEA 及 Gradle 使用總結(jié)[使用 Gradle 管理你的 Android Studio 工程]
(http://www.open-open.com/lib/view/open1437144995334.html)[史上最詳細(xì)的Android Studio系列教程四--Gradle基礎(chǔ)]
(http://segmentfault.com/a/1190000002439306)用Gradle 構(gòu)建你的android程序