Android Gradle 插件

Android Gradle插件繼承于Java插件酥筝,具有Java插件的的特性梅忌;現(xiàn)在就新建1個(gè) APP工程,演示App的工程目錄悦施,以及開發(fā)中常用的Gradle配置;


App工程目錄

新建了1個(gè)APP工程去团,上圖就是工程常用的App工程目錄抡诞;

其中包括app Project穷蛹,和rootProject;

每個(gè)Project都 包含1個(gè)build.gralde文件,其中rootProject還包含1個(gè)settings.gralde文件昼汗;

現(xiàn)在先來分析rootProject肴熏,App工程的根目錄

build.gradle 配置文件:


rootProject的build.gradle文件

repositories 配置倉庫,默認(rèn)依賴的是google和jcenter顷窒,當(dāng)我們配置依賴倉庫的時(shí)候蛙吏,Gradle就會(huì)去倉庫里尋找我們的依賴;

dependencies:也是配置依賴鞋吉,由于Gradle是屬于第三方的插件鸦做,所以需要依賴于他們的classPath

allprojects 是針對于所有的工程項(xiàng)目配置,在根目錄配置谓着,子目錄就不需要重復(fù)配置了


現(xiàn)在我們接著看根目錄下的settings.gralde

接著創(chuàng)建1個(gè)Moudle泼诱,命名為Lib_test;

此時(shí)看settings.gralde文件


rootProject的settings.gradle

需要在工程內(nèi)配置的Moudle都需要此文件中注冊

此外工程中還有

local.properties:配置工程的sdk和ndk目錄

local.properties

工程的gradle文件夾


gradle文件夾

該文件夾下有個(gè)wrapper,wrapper其實(shí)就是對Gradle的一層包裝,我們在項(xiàng)目開發(fā)中赊锚,其實(shí)是有的都是Wrapper這種方式治筒,內(nèi)部是一堆的腳本,所以我們在工程中沒有配置gradle的時(shí)候舷蒲,提示的也不是noFound耸袜,而是提示下載并構(gòu)建;

gradle-wrapper.properties內(nèi)部是這樣的

其中distributionUrl我們需要稍微關(guān)注下阿纤,決定了我媽媽依賴的是哪個(gè)版本的Gradle句灌,上圖可以看到我的工程依賴的就是4.6版本;

好了以上計(jì)算rootProject目錄下的文件解釋欠拾,現(xiàn)在接著看下我們主工程(app)下的文件



app下的build.gradle

Android Gradle的工程配置胰锌,都是在andorid{}中,這個(gè)是唯一的1個(gè)入口藐窄,通過在它內(nèi)部的配置资昧,我們可以對Android Gradle工程進(jìn)行自定義的配置;

我們先解釋下標(biāo)準(zhǔn)配置荆忍,之后在開始對gradle的自定義格带;

App插件id:com.android.application

Library的插件id:com.android.library

Test插件id:com.android.test

由于我們app的一個(gè)APP工程,所以使用apply plugin:'com.android.application' 依賴該插件

接著看android{}中的配置

compileSdkVersion:配置我們編譯的Android 工程的SDK

defaultConfig:默認(rèn)的配置刹枉,它是一個(gè)ProductFlavor,之后會(huì)解釋ProductFlavor叽唱,現(xiàn)在只需要知道ProductFlavor允許我們根據(jù)不同的情況同時(shí)生成多個(gè)不同的apk包即可;

defaultConfig{

applicationId:包名微宝,默認(rèn)null,構(gòu)建的時(shí)候是從AndroidManifest.xml文中讀取的棺亭,也就是manifest中的pack值

minSdkVersion:最低支持的Android系統(tǒng)的ApI

targetSdkVersion:表明我們是基于哪個(gè)Andorid 系統(tǒng)開發(fā)的

versionCode:App應(yīng)用內(nèi)部的版本號(hào)

versionName:App應(yīng)用的版本名稱,對外蟋软,用戶可見

testInstrumentationRunner:默認(rèn)是android.support.test.runner.AndroidJUnitRunner镶摘,配置單元測試時(shí)候使用的Runner

}

buildType{}是1個(gè)域?qū)ο笏宰透鶶ourceSet一樣,有release,debug等不同 的BuildType凄敢;

release{

minifyEnabled:是否啟動(dòng)混淆

proguardFiles:混淆文件

}

dependencies{...}依賴庫


以上就是一個(gè)APP工程默認(rèn)創(chuàng)建的文件解釋碌冶;現(xiàn)在開始我們開始增加1些我們自定義的配置

1:配置測試App的包名,也就是測試包名


測試包名:

2:對生成的App簽名

App工程的debug是有個(gè)默認(rèn)的debug簽名的涝缝,而release版本是沒配置簽名的波丰,所以我們構(gòu)建release版本的時(shí)候就需要自己簽名了获黔;

現(xiàn)在我們就生成2個(gè)簽名文件骚烧,1個(gè)debug環(huán)境使用血筑,1個(gè)在relese環(huán)境使用,保存在app目錄下消恍;


在build.gradle中配置簽名,需要使用到signingConfig{}對生成的app簽名


配置簽名信息


以上就是配置了App的簽名以现,我們只要在之后的構(gòu)建應(yīng)用類型中使用即可完成簽名

3:構(gòu)建不同的應(yīng)用類型

Android Gradle內(nèi)置了debug和release2種構(gòu)建類型狠怨,這兩種的主要差別就在于能否在設(shè)備上調(diào)試和簽名不一樣,其他文件和資源都是一致的

構(gòu)建不同的應(yīng)用類型主要是在buildTypes里面配置邑遏,那我們就接著看看這里面的可配置修改信息


上圖是常見的支持的debug和release版本的buildTypes佣赖;

minifyEnabled :是否啟動(dòng)混淆

proguardFiles:混淆文件位置


我們構(gòu)建下該情況下的apk,

可見记盒,在還為配置簽名的情況下憎蛤,debug模式默認(rèn)是簽名的,而release版本是未簽名的纪吮;現(xiàn)在配置上簽名


配置上簽名后俩檬,重新Build就多了1個(gè)app-release簽完名的apk文件了


debuggable:配置該apk是否可供調(diào)試

jniDebuggable:配置該apk是否可供調(diào)試jni代碼

multiDexEnabled:配置是否啟用自動(dòng)拆分多個(gè)dex的功能,解決65535

shrinkResources:配置是否自動(dòng)清理未使用的資源碾盟,默認(rèn)是false

zipAlignEnabled :這個(gè)是Android為我們提供的整理優(yōu)化apk文件的工具


以上就是基礎(chǔ)功能的BuildType棚辽,跟BuildType相關(guān)的還有多渠道打包,同樣是構(gòu)建不同的包冰肴;

參考Android Gradle的多渠道構(gòu)建


4:自定義BuildConfig

5:源集合-SourceSet

未完待續(xù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屈藐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熙尉,更是在濱河造成了極大的恐慌联逻,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件检痰,死亡現(xiàn)場離奇詭異包归,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)攀细,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門箫踩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爱态,“玉大人,你說我怎么就攤上這事境钟〗醯#” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵慨削,是天一觀的道長洞渔。 經(jīng)常有香客問我,道長缚态,這世上最難降的妖魔是什么磁椒? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮玫芦,結(jié)果婚禮上浆熔,老公的妹妹穿的比我還像新娘。我一直安慰自己桥帆,他們只是感情好医增,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著老虫,像睡著了一般叶骨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祈匙,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天忽刽,我揣著相機(jī)與錄音,去河邊找鬼夺欲。 笑死跪帝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洁闰。 我是一名探鬼主播歉甚,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扑眉!你這毒婦竟也來了纸泄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤腰素,失蹤者是張志新(化名)和其女友劉穎聘裁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弓千,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衡便,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镣陕。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谴餐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呆抑,到底是詐尸還是另有隱情岂嗓,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布鹊碍,位于F島的核電站厌殉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侈咕。R本人自食惡果不足惜公罕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耀销。 院中可真熱鬧楼眷,春花似錦、人聲如沸熊尉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帽揪。三九已至,卻和暖如春辅斟,著一層夾襖步出監(jiān)牢的瞬間转晰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工士飒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留查邢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓酵幕,卻偏偏與公主長得像扰藕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子芳撒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

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

  • 從這章開始我們就開始介紹Android Gradle插件了邓深,會(huì)通過幾章由淺入深的詳細(xì)的介紹Android Grad...
    acc8226閱讀 2,293評論 1 15
  • 轉(zhuǎn)載注明出處:http://www.reibang.com/p/5255b100930e 0. 前言 完全由個(gè)人翻...
    王三的貓阿德閱讀 2,515評論 0 4
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng),請點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,131評論 8 72
  • 這一章主要針對項(xiàng)目中可以用到的一些實(shí)用功能來介紹Android Gradle笔刹,比如如何隱藏我們的證書文件芥备,降低風(fēng)險(xiǎn)...
    acc8226閱讀 7,610評論 3 25
  • 說明 本文主要介紹和Gradle關(guān)系密切、相對不容易理解的配置舌菜,偏重概念介紹萌壳。部分內(nèi)容是Android特有的(例如...
    jzj1993閱讀 15,624評論 1 62