由于android開發(fā)在谷歌的帶領(lǐng)下,從以往的eclipse這個(gè)IDE大規(guī)模的遷移到了android studio上闯估,所以沥阱,更好的了解掌握相關(guān)的知識(shí)也是非常有必要的。
在android studio下開發(fā)少梁,谷歌儼然已經(jīng)幫我們做好了很多準(zhǔn)備工作,從模板到編譯打包矫付。其中一項(xiàng)凯沪,關(guān)于配置的構(gòu)建,里面涉及到了除java之外的很多東西买优,這就是Gradle妨马。
我們先只從Android Studio里對(duì)Gradle的配置入手挺举,里面的配置多多少少需要我們自己去調(diào)配,比如一些第三方在講怎么配置他們的庫(kù)的時(shí)候會(huì)告訴我們?cè)黾铀麄兊南嚓P(guān)的一些dependencies就可以使用了烘跺。但是除此之外湘纵,還可以看到其他的一些配置參數(shù),這些也是需要我們更加深入的了解掌握的滤淳。
究其根本梧喷,Gradle的構(gòu)建是基于Groovy語(yǔ)言的,Groovy語(yǔ)言又是Java平臺(tái)下一種面向?qū)ο蟮木幊陶Z(yǔ)言脖咐。它是一種動(dòng)態(tài)語(yǔ)言铺敌,其功能類似于Python,Ruby屁擅,Perl和Smalltalk偿凭。它可以用作Java平臺(tái)的腳本語(yǔ)言,動(dòng)態(tài)編譯為Java虛擬機(jī)(JVM)字節(jié)碼派歌,并與其他Java代碼和庫(kù)進(jìn)行互操作弯囊。
而Gradle的核心是基于Groovy的豐富的可擴(kuò)展的域特定語(yǔ)言(DSL)。Gradle通過(guò)提供可以根據(jù)需要進(jìn)行組合的聲明性語(yǔ)言元素將聲明式構(gòu)建推送到一個(gè)新的層次胶果。這些元素還為Java匾嘱,Groovy,OSGi稽物,Web和Scala項(xiàng)目提供了逐個(gè)常規(guī)的支持奄毡。更重要的是折欠,這種聲明性語(yǔ)言是可擴(kuò)展的贝或。添加您自己的新語(yǔ)言元素或增強(qiáng)現(xiàn)有的元素,從而提供簡(jiǎn)潔锐秦,可維護(hù)和易于理解的構(gòu)建咪奖。
所以我們看到的那些配置根本上可以理解為被Gradle封裝過(guò)的Groovy語(yǔ)言。
對(duì)于此要深入理解的話酱床,就需要我們深入其中去學(xué)習(xí)羊赵。但是我們要首先明確的是深入理解Android的Gradle。
在這個(gè)基礎(chǔ)之后扇谣,我們緊接著去看看一個(gè)默認(rèn)創(chuàng)建出來(lái)的gradle大概會(huì)有哪些內(nèi)容
//這是一個(gè)添加了一些插件設(shè)置和依賴庫(kù)的build.gradle文件
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'//添加apt命令
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "xxxx.com.newsframe"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.0'
apt 'com.google.dagger:dagger-compiler:2.0.2'
//指定注解處理器
compile 'com.google.dagger:dagger:2.0.2'
//dagger公用api
provided 'org.glassfish:javax.annotation:10.0-b28'
//添加android缺失的部分javax注解
compile project(':hZDodo')
compile project(':fRecyclerView')
}
然后我們跟隨者谷歌官方的配置構(gòu)建流程介紹去了解掌握
1昧捷、編譯器將您的源代碼轉(zhuǎn)換成 DEX(Dalvik Executable) 文件(其中包括運(yùn)行在 Android 設(shè)備上的字節(jié)碼),將所有其他內(nèi)容轉(zhuǎn)換成已編譯資源罐寨。
2靡挥、APK 打包器將 DEX 文件和已編譯資源合并成單個(gè) APK。不過(guò)鸯绿,必須先簽署 APK跋破,才能將應(yīng)用安裝并部署到 Android 設(shè)備上簸淀。
3、APK 打包器使用調(diào)試或發(fā)布密鑰庫(kù)簽署您的 APK:
a毒返、如果您構(gòu)建的是調(diào)試版本的應(yīng)用(即專用于測(cè)試和分析的應(yīng)用)租幕,打包器會(huì)使用調(diào)試密鑰庫(kù)簽署您的應(yīng)用。Android Studio 自動(dòng)使用調(diào)試密鑰庫(kù)配置新項(xiàng)目拧簸。
b劲绪、如果您構(gòu)建的是打算向外發(fā)布的發(fā)布版本應(yīng)用,打包器會(huì)使用發(fā)布密鑰庫(kù)簽署您的應(yīng)用盆赤。要?jiǎng)?chuàng)建發(fā)布密鑰庫(kù)珠叔,請(qǐng)閱讀在 Android Studio 中簽署您的應(yīng)用。
4弟劲、在生成最終 APK 之前祷安,打包器會(huì)使用 zipalign 工具對(duì)應(yīng)用進(jìn)行優(yōu)化,減少其在設(shè)備上運(yùn)行時(shí)的內(nèi)存占用兔乞。
構(gòu)建流程結(jié)束時(shí)汇鞭,您將獲得可用來(lái)進(jìn)行部署、測(cè)試的調(diào)試 APK庸追,或者可用來(lái)發(fā)布給外部用戶的發(fā)布 APK霍骄。
自定義構(gòu)建配置
Gradle 和 Android 插件可幫助您完成以下方面的構(gòu)建配置:
buildTypes
對(duì)應(yīng)上面的一個(gè)小例子我們可以看到有一個(gè)buildTypes(構(gòu)建類型),在buildTypes閉包(closure)里里有一個(gè)release閉包淡溯。
buildTypes定義 Gradle 在構(gòu)建和打包您的應(yīng)用時(shí)使用的某些屬性(需要梯子)通常針對(duì)開發(fā)生命周期的不同階段進(jìn)行配置读整。例如,調(diào)試構(gòu)建類型支持調(diào)試選項(xiàng)咱娶,使用調(diào)試密鑰簽署 APK米间;而發(fā)布構(gòu)建類型則可壓縮、混淆 APK 以及使用發(fā)布密鑰簽署 APK 進(jìn)行分發(fā)膘侮。您必須至少定義一個(gè)構(gòu)建類型才能構(gòu)建應(yīng)用——Android Studio 默認(rèn)情況下會(huì)創(chuàng)建debug and release build types (構(gòu)建類型)屈糊。
Dependencies
構(gòu)建系統(tǒng)管理來(lái)自您的本地文件系統(tǒng)以及來(lái)自遠(yuǎn)程存儲(chǔ)區(qū)的項(xiàng)目依賴項(xiàng)。這樣一來(lái)琼了,就不必手動(dòng)搜索逻锐、下載依賴項(xiàng)的二進(jìn)制文件包以及將它們復(fù)制到項(xiàng)目目錄內(nèi)。
ProGuard
構(gòu)建系統(tǒng)讓您能夠?yàn)槊總€(gè)構(gòu)建變體指定不同的 ProGuard 規(guī)則文件雕薪。構(gòu)建系統(tǒng)可在構(gòu)建過(guò)程中運(yùn)行 ProGuard 對(duì)類進(jìn)行壓縮和混淆處理昧诱。
defaultConfig
配置產(chǎn)品風(fēng)味(Configure Product Flavors)
創(chuàng)建產(chǎn)品風(fēng)味與創(chuàng)建構(gòu)建類型類似:只需將它們添加到 productFlavors {} 代碼塊并配置您想要的設(shè)置。產(chǎn)品風(fēng)味支持與 defaultConfig 相同的屬性所袁,這是因?yàn)?defaultConfig 實(shí)際上屬于 ProductFlavor 類盏档。這意味著,您可以在 defaultConfig {} 代碼塊中提供所有風(fēng)味的基本配置纲熏,每種風(fēng)味均可替換任何默認(rèn)值妆丘,例如 applicationId锄俄。
----簡(jiǎn)單而詳細(xì)的列舉了幾個(gè)build.gradle文件里的ScriptBuild-----
官方文檔里這樣給我們說(shuō)到:
創(chuàng)建自定義構(gòu)建配置需要您對(duì)一個(gè)或多個(gè)構(gòu)建配置文件(或 build.gradle 文件)進(jìn)行更改。這些純文本文件使用域特定語(yǔ)言 (DSL) 以 Groovy 語(yǔ)言描述和操作構(gòu)建邏輯勺拣,后者是一種適用于 Java 虛擬機(jī) (JVM) 的動(dòng)態(tài)語(yǔ)言奶赠。您無(wú)需了解 Groovy 便可開始配置構(gòu)建,因?yàn)?**Android Plugin for Gradle **引入了您需要的大多數(shù) DSL 元素药有。如需了解有關(guān) Android 插件 DSL 的更多信息毅戈,請(qǐng)閱讀 DSL 參考文檔。
--------------未完待續(xù)----------------------------------------------------------