gradle在Android中的使用

參考http://www.reibang.com/p/8b8a550246bd居夹,整理為自己需要的方便查看

App

settings.gradle

配置Project和module

include ':app' , ':module1',':module2'

build.gradle

buildscript

gradle自身所使用的資源窘拯。可以聲明的資源包括依賴項迈窟、第三方插件近尚、倉庫地址等

repositories

倉庫 jcenter()、maven()和google()等

dependencies

配置依賴 classpath:'group:name:version'

ext

自定義屬性

  • 只在當前配置文件使用的,在當前文件定義 ext.xxx_name='xxx'谁鳍,使用的時候$xxx_name獲取值
  • 通用自定義配置,單獨定義文件ext{xxx_1='xxx'} 在需要使用的文件中 apply from: '文件名',使用${xxx_1}獲取值

allprojects

為所有項目提供共同所需依賴包

task

task clean(type: Delete) {
    delete rootProject.buildDir
}

運行gradle clean時倘潜,執(zhí)行此處定義的task余佛,刪除根目錄中的build目錄

Module

每個module都有一個build.gradle文件

build.gradle

這里主要就是dependencies,和一些plugin窍荧。主要介紹下plugin辉巡,以'com.android.application'插件為例

plugin

apply plugin:'×××': 二進制插件,一般都是被打包在一個jar里獨立發(fā)布的

apply from:'×××':應用腳本插件蕊退,其實就是把這個腳本加載進來

插件的作用

  • 添加一些task郊楣,幫助完成一些工作
  • 添加一些依賴
  • 給現(xiàn)有對象添加一些擴展,android{}這個配置塊就是Android Gradle插件為Project對象添加的一個擴展
  • 對項目進行一些約定瓤荔,比如應用Java插 件之后净蚤,約定src/main/java目錄下是我們的源代碼存放位置

com.android.application插件

android{} 是Android插件提供的一個擴展類型,可以讓我們自定義Android Gradle工程输硝,是Android Gradle工程配置的唯一入口今瀑。下面列舉一下主要的配置項。

  1. compileSdkVersion 是編譯所依賴的Android SDK的版本点把,這里是API Level橘荠。
  2. buildToolsVersion 是構(gòu)建該Android工程所用構(gòu)建工具的版本。
  3. defaultConfig{} 它是一個ProductFlavor的默認的配置郎逃,后面會介紹ProductFlavor
      1. applicationId 包名哥童,app的唯一標識。跟AndroidManifest里面的package是可以不同的褒翰。package指的是代碼目錄下路徑贮懈;applicationId指的是app對外發(fā)布的唯一標識,會在簽名优训、申請第三方庫朵你、發(fā)布時候用到。
      
      2. minSdkVersion 是支持的Android系統(tǒng)的api level
      
      3. targetSdkVersion 基于哪個Android版本開發(fā)的
      
      4. versionCode app應用內(nèi)部版本號揣非,一般用于控制app升級
      
      5. versionName app應用的版本名稱抡医,一般是發(fā)布的時候?qū)懺赼pp上告訴用戶的
      
      6. multiDexEnabled 是否啟用自動拆分多個Dex的功能
      
      7. ndk{} 多平臺編譯,生成有so包的時候使用妆兑,包括四個平臺'armeabi', 'x86', 'armeabi-v7a', 'mips'
      
      8. flavorDimensions 定義需要定制化的字段魂拦,然后在productFlavors中使用
  1. sourceSets 源代碼集合,是Java插件用來描述和管理源代碼及資源的一個抽象概念搁嗓,是一個Java源代碼文件和資源文件的集合芯勘,我們可以通過sourceSets更改源集的Java目錄或者資源目錄等。
  2. buildTypes 構(gòu)建類型腺逛,內(nèi)置了debug和release兩個構(gòu)建類型荷愕,一般用在代碼混淆
       name:build type的名字
       applicationIdSuffix:應用id后綴
       versionNameSuffix:版本名稱后綴
       debuggable:是否生成一個debug的apk
       minifyEnabled:是否混淆
       proguardFiles:混淆文件
       signingConfig:簽名配置
       manifestPlaceholders:清單占位符
       shrinkResources:是否去除未利用的資源,默認false,表示不去除安疗。
       zipAlignEnable:是否使用zipalign工具壓縮抛杨。
       multiDexEnabled:是否拆成多個Dex
       multiDexKeepFile:指定文本文件編譯進主Dex文件中
       multiDexKeepProguard:指定混淆文件編譯進主Dex文件中
  1. signingConfigs 簽名配置。一個app只有在簽名之后才能被發(fā)布荐类、安裝怖现、使用,簽名是保護app的方式玉罐,標記該app的唯一性屈嗤。
       storeFile: 簽名文件
       storePassword: 簽名證書文件的密碼
       storeType: 簽名證書類型
       keyAlias: 簽名證書中秘鑰別名
       keyPassword: 簽名證書中改密鑰的密碼
  1. productFlavors Gradle的多渠道打包,你可以在不同的包定義不同的變量吊输,實現(xiàn)自己的定制化版本的需求饶号。
       defaultConfig 中定義的 flavorDimensions
       manifestPlaceholders 占位符,我們可以通過它動態(tài)配置AndroidManifest文件一些內(nèi)容季蚂,譬如app的名字
       buildConfigField 是BuildConfig文件的一個函數(shù)茫船,而BuildConfig這個類是Android Gradle構(gòu)建腳本在編譯后生成的,而buildConfigField就是其中的自定義函數(shù)變量
       定義常量 buildConfigField "boolean","isTest","true" 
       就會在BuildConfig類中添加一個變量 public static final boolean isTest = true
       然后我們就可以在代碼中使用   BuildConfig.isTest
  1. dexOptions{} dx命令只是一個腳本扭屁,它調(diào)用的還是Java編寫的dx.jar庫算谈,是Java程序處理的,所以當內(nèi)存不足的時候疯搅,就會內(nèi)存溢出濒生。給dx分配的內(nèi)存是一個G,給它增加內(nèi)存分配來解決這個問題幔欧。

    dexOptions {
        javaMaxHeapSize "2g"
        incremental = true
    }
    

dependencies{}

  • compile fileTree(include: ['.jar'], dir: 'libs')* 依賴本地libs文件夾下的擴展名為jar
  • compile project('×××') 引入某個本地module
  • compile group:name:version

gradle 3.0中依賴implementation、api的區(qū)別

  • api跟以前的compile沒什么區(qū)別丽声,指令依賴會傳遞礁蔗,只需要引入一次,其它module不用再次引入
  • implementation指令依賴是不會傳遞的雁社,也就是說當前引用的第三方庫僅限于本module內(nèi)使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浴井,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子霉撵,更是在濱河造成了極大的恐慌磺浙,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件徒坡,死亡現(xiàn)場離奇詭異撕氧,居然都是意外死亡,警方通過查閱死者的電腦和手機喇完,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門伦泥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事不脯「樱” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵防楷,是天一觀的道長牺丙。 經(jīng)常有香客問我,道長复局,這世上最難降的妖魔是什么冲簿? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮肖揣,結(jié)果婚禮上民假,老公的妹妹穿的比我還像新娘。我一直安慰自己龙优,他們只是感情好羊异,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著彤断,像睡著了一般野舶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宰衙,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天平道,我揣著相機與錄音,去河邊找鬼供炼。 笑死一屋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的袋哼。 我是一名探鬼主播冀墨,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涛贯!你這毒婦竟也來了诽嘉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤弟翘,失蹤者是張志新(化名)和其女友劉穎虫腋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稀余,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡悦冀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滚躯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雏门。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡嘿歌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茁影,到底是詐尸還是另有隱情宙帝,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布募闲,位于F島的核電站步脓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浩螺。R本人自食惡果不足惜靴患,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望要出。 院中可真熱鬧鸳君,春花似錦、人聲如沸患蹂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽传于。三九已至囱挑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沼溜,已是汗流浹背平挑。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留系草,地道東北人通熄。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像找都,于是被迫代替她去往敵國和親棠隐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,506評論 25 707
  • 說明 本文主要介紹和Gradle關系密切檐嚣、相對不容易理解的配置,偏重概念介紹啰扛。部分內(nèi)容是Android特有的(例如...
    jzj1993閱讀 15,576評論 1 62
  • 當畢業(yè)不夠兩年嚎京,身邊的朋友慢慢得有車有房有女朋友周末有自己的節(jié)目,而我覺得很多美好的事情我都遙不可及隐解,找不到可以讓...
    19snow93閱讀 11,821評論 34 192
  • 如果我們需要一個模型鞍帝,讓線程能隨時處理事件但并不退出,這種模型通常稱作Event Loop.實現(xiàn)這種模型的關鍵點在...
    August24閱讀 313評論 0 0
  • 忽然夕陽淹沒了等待 滿街的樹影 安靜了某時某刻 風吹進黃昏的微涼后 我走了 視線開始模糊 誰知道 我一生的入迷 終...
    葛卡閱讀 125評論 3 0