Android中使用Gradle來(lái)構(gòu)建App項(xiàng)目的入門(mén)指南
gradle是Android開(kāi)發(fā)中引入的全新的構(gòu)建系統(tǒng),因?yàn)槿碌臉?gòu)建系統(tǒng)主要是出于下面的目的:
1. 方便復(fù)用代碼和資源
2. 構(gòu)建多種版本的apk更見(jiàn)簡(jiǎn)單,不論是為多渠道構(gòu)建不同的apk還是構(gòu)建不同環(huán)境的apk(debug,release)
3. 方便配置,擴(kuò)展,自定義構(gòu)建過(guò)程
4. 良好的IDE集成
為什么選擇Gradle?
Gradle主要有以下幾個(gè)有點(diǎn):
1. 使用領(lǐng)域驅(qū)動(dòng)語(yǔ)言(DSL)來(lái)描述構(gòu)建邏輯
2. 構(gòu)建腳本使用Groovy,可以方便的定制構(gòu)建邏輯
3. 內(nèi)建的依賴(lài)管理系統(tǒng),使用Maven或者Ivy
4. 非常靈活??梢允褂米罴褜?shí)踐但并不強(qiáng)制
5. 良好的IDE支持
Gradle項(xiàng)目使用項(xiàng)目根目錄下的build.gradle文件來(lái)配置
一個(gè)最簡(jiǎn)單的Java項(xiàng)目的build.gradle如下
apply plugin: 'java'
這表示改項(xiàng)目會(huì)使用Gradle的java插件,該插件是Gradle默認(rèn)提供的,java插件提供了構(gòu)建java應(yīng)用和運(yùn)行測(cè)試的功能。
最簡(jiǎn)單的Android項(xiàng)目build.gralde
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.11.1'
}
}
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
}
該Android構(gòu)建文件包含3個(gè)部分:
1.buildscript { ... } 配置驅(qū)動(dòng)構(gòu)建過(guò)程的代碼,意思就是buildscript中的配置僅僅在構(gòu)建過(guò)程中起作用,也就是構(gòu)建程序所使用的配置。
上面的代碼中就聲明了我們的構(gòu)建程序會(huì)使用Maven中央倉(cāng)庫(kù),并且有一個(gè)classpath依賴(lài)是指向一個(gè)Maven庫(kù)的。這個(gè)Maven庫(kù)就是Android Gradle插件,版本號(hào)是0.11.1。
2.隨后就是使用這個(gè)Android插件,和之前使用Java插件一樣。
3.最后,android { ... }配置了Android項(xiàng)目構(gòu)建時(shí)需要的所有參數(shù)。
默認(rèn)情況下,只需要指定compileSdkVersion和buildtoolsVersion,compileSdkVersion指定使用哪個(gè)版本的sdk編譯,buildToolsVersion指定使用哪個(gè)版本的構(gòu)建工具。
注意點(diǎn):
1. 只需要使用android插件,再使用Java插件會(huì)報(bào)錯(cuò).
2. 在local.properties中使用sdk.dir屬性指定SDK路徑,或者你可以使用ANDROID_HOME環(huán)境變量。
項(xiàng)目結(jié)構(gòu)
Gradle采用約定優(yōu)于配置的原則,最簡(jiǎn)單方式是使用一個(gè)默認(rèn)的目錄結(jié)構(gòu)。當(dāng)然目錄結(jié)構(gòu)是可以自己修改的。
默認(rèn)情況下,android gradle項(xiàng)目的代碼都在src目錄下,src下會(huì)有兩個(gè)目錄main和androidTest,其中main目錄下是項(xiàng)目代碼,androidTest目錄下是測(cè)試代碼。
src/main/ src/androidTest/
在main和androidTest目錄下面,針對(duì)不同類(lèi)型的code,又不會(huì)不同的目錄。
對(duì)于Java和Android的Gradle插件,Java代碼和Java資源分別對(duì)應(yīng)了java目錄和resources目錄。Android插件還需要一些其他的目錄和文件,比如
AndroidManifest.xml res/ assets/ aidl/ rs/ jni/
下面我們來(lái)看一下如何更改這些默認(rèn)的配置。
Android工程,默認(rèn)情況下,java文件和resource文件分別在src/main/java和src/main/res目錄下,在build.gradle文件,andorid{}里面添加下面的代碼,便可以將java文件和resource文件放到src/java和src/resources目錄下。(注意,如果你在gradle文件中修改了,只需要重新sync一下,gradle會(huì)自動(dòng)創(chuàng)建新的目錄,并將對(duì)應(yīng)的文件移動(dòng)到新的目錄下)
sourceSets {
main {
java {
srcDir 'src/java'
}
resources {
srcDir 'src/resources'
}
}
}
更簡(jiǎn)便的寫(xiě)法是
sourceSets {
main.java.srcDirs = ['src/java']
main.resources.srcDirs = ['src/resources']
}
數(shù)組里其實(shí)是可以指定多個(gè)目錄,這樣就可以將代碼和資源放置到多個(gè)目錄下。
在看一個(gè)Android項(xiàng)目的例子:
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
androidTest.setRoot('tests')
}
}
這里的main code其實(shí)使用的就是Android Gradle的默認(rèn)值,而androidTest不再使用默認(rèn)的androidTest目錄,而是使用tests目錄。
相關(guān)文章
Android使用Intent顯示實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Android使用Intent顯示實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
關(guān)于Android bitmap你不知道的一些事
這篇文章主要為大家詳細(xì)介紹了關(guān)于Android bitmap你不知道的一些事,使用bitmap需要注意的一些細(xì)節(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
詳解Android studio實(shí)現(xiàn)語(yǔ)音轉(zhuǎn)文字功能
這篇文章主要介紹了如何通過(guò)Android studio調(diào)用科大訊飛的語(yǔ)音轉(zhuǎn)文字功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03
android使用service和activity獲取屏幕尺寸的方法
這篇文章主要介紹了android使用service和activity獲取屏幕尺寸的方法,實(shí)例分析了基于service和activity兩種方法獲取屏幕尺寸的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08
Android斷點(diǎn)續(xù)傳下載器JarvisDownloader的示例
本篇文章主要介紹了Android斷點(diǎn)續(xù)傳下載器JarvisDownloader的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
a2sd+狀態(tài)下應(yīng)用程序丟失的解決方法詳細(xì)解析
用了a2sd+和SD分區(qū)方案的朋友可能會(huì)遇到突然某次開(kāi)機(jī)之后,a2sd+失效,同時(shí)發(fā)生丟失若干應(yīng)用程序的現(xiàn)象或者安裝軟件提示空間不足2013-09-09
Android從觸碰屏幕開(kāi)始的事件采集解析及分發(fā)
這篇文章主要為大家介紹了Android從觸碰屏幕開(kāi)始的事件采集解析及分發(fā),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
基于Android自定義控件實(shí)現(xiàn)刮刮樂(lè)效果
這篇文章主要介紹了基于Android自定義控件實(shí)現(xiàn)刮刮樂(lè)效果 的相關(guān)資料,需要的朋友可以參考下2015-12-12
Android Studio Gradle依賴(lài)沖突解決方法
這篇文章主要給大家介紹了關(guān)于Android Studio Gradle依賴(lài)沖突解決的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Android Studio具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

