Android Studio中的Gradle詳解


1 Gradle簡介

  • 1.1 Gradle是以Groovy語言為基礎(chǔ),面向Java應(yīng)用為主靡狞。基于DSL(領(lǐng)域特定語言)語法的自動化構(gòu)建工具。
  • 1.2 gradle支持局部構(gòu)建谚中。
  • 1.3 支持多方式依賴管理:包括從maven遠(yuǎn)程倉庫、nexus私服寥枝、ivy倉庫以及本地文件系統(tǒng)的jars或者dirs
  • 1.4 gradle是第一個構(gòu)建集成工具(thefirstbuildintegrationtool)宪塔,與ant、maven囊拜、ivy有良好的相容相關(guān)性某筐。
  • 1.5 輕松遷移:gradle適用于任何結(jié)構(gòu)的工程(Gradlecanadapttoanystructureyouhave.)。你可以在同一個開發(fā)平臺平行構(gòu)建原工程和gradle工程冠跷。通常要求寫相關(guān)測試南誊,以保證開發(fā)的插件的相似性身诺,這種遷移可以減少破壞性,盡可能的可靠抄囚。這也是重構(gòu)的最佳實踐霉赡。
  • 1.6 gradle的整體設(shè)計是以作為一種語言為導(dǎo)向的,而非成為一個嚴(yán)格死板的框架怠苔。
  • 1.7 免費開源

2 Gradle之分步解析

以一個As工程為例進(jìn)行說明
Gradle結(jié)構(gòu)如圖

圖片.png

2.1 根目錄下build.gradle如下(project>build.gradle)

buildscript {
    repositories {
      // 聲明倉庫源類型同廉,比如我們構(gòu)建了一個安卓庫,要想把庫上傳供他人進(jìn)行使用柑司,則可以上傳到j(luò)center中
        jcenter()
    }
    dependencies {
     //當(dāng)前項目使用的gradle版本號
        classpath 'com.android.tools.build:gradle:2.2.3'

    }
}
//所有android項目均有該配置
allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}```
##2.2 `app`目錄下`build.gradle`(module>build.gradle)如下

gradle項目自動編譯的時候要讀取的配置文件迫肖。比如指定項目的依賴包等。
build.grade有兩個攒驰,一個是全局的蟆湖,一個是在模塊里面。
全局的build.grade主要設(shè)置的是聲明倉庫源玻粪,gradle的版本號說明等隅津。

// 說明這個模塊的類型是android項目,如果是多模塊開發(fā)劲室,有可能有的值為java/war
apply plugin: 'com.android.application'
//配置構(gòu)建項目的參數(shù)
android {
//編譯使用的SDK版本
compileSdkVersion 24
//編譯工具的版本
buildToolsVersion "24.0.2"
defaultConfig {
//項目包名伦仍,即是AndroidManifest.xml中package的值
applicationId "com.fcz.funnylife"
//sdk支持的最低版本
minSdkVersion 14
//目標(biāo)Sdk版本
targetSdkVersion 24
//版本號,應(yīng)用升級會用到
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

buildTypes {
  //發(fā)布版本的設(shè)置
    release {
     //是否進(jìn)行混淆
        minifyEnabled false
     //混淆使用的文件
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    }

}

//項目中所依賴的工具包
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
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:24.1.0'
testCompile 'junit:junit:4.12'
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
compile 'com.android.support:recyclerview-v7:24.1.0'
compile 'com.android.support:design:24.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.android.support:cardview-v7:24.2.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
}
}

## 2.3 gradle-wrapper.properties
配置信息

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip

## 2.4 proguard-rules.pro
項目進(jìn)行混淆時的規(guī)則存放文件很洋,需混淆的文件或項目需要說名混淆規(guī)則充蓝,不能混淆的jar包或第三方類庫均需要在此文件中進(jìn)行說明否則項目會出現(xiàn)問題
## 2.5 gradle.properties
grade的運行環(huán)境配置,比如使用多少內(nèi)存之類的喉磁。如:
`org.gradle.jvmargs=-Xmx1536m`
## 2.6 setting.gradle
整個項目的管理谓苟,比如項目包含哪些模塊等。
## 2.7 local.properties
    存放一些系統(tǒng)配置信息
- 在此文件中可查看sdk协怒、ndk等的位置信息(默認(rèn)sdk\ndk路徑涝焙,每個機(jī)器對應(yīng)的路徑可能有所不同),一般在新建項目時已經(jīng)自動配置好了孕暇,無須修改
- 同時可以存放一些用戶自定義的配置信息仑撞,如簽名文件
如:
      ndk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk\\ndk-bundle
      sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk

      key.file=D\:\\workspace\\KeyStore.jks
      keyAlias=key
      keyPassword=123456
      storePassword=123456
- 在`build.gradle`文件中讀取`local.properties`字段

signingConfigs {
config {

        //加載資源>local.properties
        Properties properties = new Properties()
        InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream() ;
        properties.load( inputStream )

        //讀取local.properties文件
        def sdkDir = properties.getProperty('key.file')
        storeFile file( sdkDir )

        //讀取local.properties中字段
        def key_keyAlias = properties.getProperty( 'keyAlias' )
        def key_keyPassword = properties.getProperty( 'keyPassword' ) ;
        def key_storePassword = properties.getProperty( 'storePassword' ) ;

        storePassword key_storePassword
        keyAlias key_keyAlias
        keyPassword key_keyPassword
    }
}



--------------------------------
*后續(xù)內(nèi)容留著待以后補(bǔ)充,同時歡迎給我留言*
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妖滔,一起剝皮案震驚了整個濱河市派草,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铛楣,老刑警劉巖近迁,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異簸州,居然都是意外死亡鉴竭,警方通過查閱死者的電腦和手機(jī)歧譬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搏存,“玉大人瑰步,你說我怎么就攤上這事¤得撸” “怎么了缩焦?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長责静。 經(jīng)常有香客問我袁滥,道長,這世上最難降的妖魔是什么灾螃? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任题翻,我火速辦了婚禮,結(jié)果婚禮上腰鬼,老公的妹妹穿的比我還像新娘嵌赠。我一直安慰自己,他們只是感情好熄赡,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布姜挺。 她就那樣靜靜地躺著,像睡著了一般彼硫。 火紅的嫁衣襯著肌膚如雪炊豪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天乌助,我揣著相機(jī)與錄音溜在,去河邊找鬼陌知。 笑死他托,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仆葡。 我是一名探鬼主播赏参,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沿盅!你這毒婦竟也來了把篓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腰涧,失蹤者是張志新(化名)和其女友劉穎韧掩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窖铡,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡疗锐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年坊谁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滑臊。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡口芍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雇卷,到底是詐尸還是另有隱情鬓椭,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布关划,位于F島的核電站小染,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏祭玉。R本人自食惡果不足惜氧映,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脱货。 院中可真熱鬧岛都,春花似錦、人聲如沸振峻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扣孟。三九已至烫堤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凤价,已是汗流浹背鸽斟。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留利诺,地道東北人富蓄。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像慢逾,于是被迫代替她去往敵國和親立倍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容