



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android多模塊構(gòu)建的結(jié)構(gòu)是怎樣的
本篇內(nèi)容介紹了“Android多模塊構(gòu)建的結(jié)構(gòu)是怎樣的”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓在下帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!Androidstudio不僅允許你為你的app和依賴(lài)庫(kù)創(chuàng)建模塊,同時(shí)也可為Androidwear,AndroidTV,GoogleApp
Engine等創(chuàng)建模塊,而這些單獨(dú)的模塊又可以在一個(gè)單獨(dú)的項(xiàng)目中使用。舉個(gè)栗子,在你的app開(kāi)發(fā)后期階段,你可能需要用到Google
Clound或者AndroidWear。這種情況下,你可以在你的工程下?lián)碛腥齻€(gè)模塊:分別是app,googlecloud,Android
Wear整合。了解在一個(gè)工程下的多模塊構(gòu)建將會(huì)加速你的開(kāi)發(fā)周期。多模塊構(gòu)建的結(jié)構(gòu)通常情況下,一個(gè)工程包含多模塊,這些模塊會(huì)在一個(gè)父目錄文件夾下。為了告訴gradle,該項(xiàng)目的結(jié)構(gòu)以及哪一個(gè)子文件夾包含模塊,你需要提供一個(gè)settings.gradle文件。每個(gè)模塊可以提供其獨(dú)立的build.gradle文件。我們已經(jīng)學(xué)習(xí)了關(guān)于setting.gradle和build.gradle如何正常工作,現(xiàn)在我們只需要學(xué)習(xí)如何使用它們。這是多模塊項(xiàng)目的結(jié)構(gòu)圖:project
├───
setting.gradle
├───
build.gradle
├───
app
│
└───
build.gradle
└───
library
└───
build.gradle這是最簡(jiǎn)單最直接的方式來(lái)創(chuàng)建你的多模塊項(xiàng)目了。setting.gradle文件申明了該項(xiàng)目下的所有模塊,它應(yīng)該是這樣:include
':app',
':library'這保證了app和library模塊都會(huì)包含在構(gòu)建配置中。你需要做的僅僅只是為你的模塊添加子文件夾。為了在你的app模塊中添加library模塊做為其依賴(lài)包,你需要在app的build.gradle文件中添加以下內(nèi)容:dependencies
{
compile
project(':library')
}為了給app添加一個(gè)模塊作為依賴(lài),你需要使用project()方法,該方法的參數(shù)為模塊路徑。如果在你的模塊中還包含了子模塊,gradle可以滿足你得要求。舉個(gè)栗子,你可以把你的目錄結(jié)構(gòu)定義為這樣:project
├───
setting.gradle
├───
build.grade
├───
app
│
└───
build.gradle
└───
libraries
├───
library1
│
└───
build.gradle
└───
library2
└───
build.gradle該app模塊依然位于根目錄,但是現(xiàn)在項(xiàng)目有2個(gè)不同的依賴(lài)包。這些依賴(lài)模塊不位于項(xiàng)目的根目錄,而是在特定的依賴(lài)文件夾內(nèi)。根據(jù)這一結(jié)構(gòu),你需要在settings.xml中這么定義:include
':app',
':libraries:library1',
':libraries:library2'你會(huì)注意到在子目錄下申明模塊也非常的容易。所有的路徑都是圍繞著根目錄,即當(dāng)你添加一個(gè)位于子文件夾下的模塊作為另外一個(gè)模塊的依賴(lài)包得實(shí)惠,你應(yīng)該將路徑定為根目錄。這意味著如果在上例中app模塊想要依賴(lài)library1,build.gradle文件需要這么申明:dependencies
{
compile
project(':libraries:library1')
}如果你在子目錄下申明了依賴(lài),所有的路徑都應(yīng)該與根目錄相關(guān)。這是因?yàn)間radle是根據(jù)你的項(xiàng)目的根目錄來(lái)定義你的依賴(lài)包的。構(gòu)建生命周期理解了構(gòu)建過(guò)程讓你理解多模塊的構(gòu)建變得容易。我們很早前談過(guò)關(guān)于構(gòu)建的生命周期。所以現(xiàn)在你應(yīng)該知道其基本的過(guò)程,但是一些很重要的細(xì)節(jié)可能你并不是很清楚。在***步驟中,即初始化階段,gradle會(huì)尋找到settings.grade文件。如果該文件不存在,那么gradle就會(huì)假定你只有一個(gè)單獨(dú)的構(gòu)建模塊。如果你有多個(gè)模塊,settings.gradle文件定義了這些模塊的位置。如果這些子目錄包含了其自己的build.gradle文件,gradle將會(huì)運(yùn)行它們,并且將他們合并到構(gòu)建任務(wù)中。這就解釋了為什么你需要申明在一個(gè)模塊中申明的依賴(lài)是相對(duì)于根目錄。一旦你理解了構(gòu)建任務(wù)是如何將所有的模塊聚合在一起的時(shí)候,那關(guān)于幾種不同的構(gòu)建多模塊策略就會(huì)變得簡(jiǎn)單易懂。你可以配置所有的模塊在根目錄下的build.gradle。這讓你能夠簡(jiǎn)單的瀏覽到整個(gè)項(xiàng)目的配置,但是這將會(huì)變得一團(tuán)亂麻,特別是當(dāng)你的模塊需要不同的插件的時(shí)候。另外一種方式是將每個(gè)模塊的配置分隔開(kāi),這一策略保證了每個(gè)模塊之間的互不干擾。這也讓你跟蹤構(gòu)建的改變變得容易,因?yàn)槟悴恍枰赋瞿膫€(gè)改變導(dǎo)致了哪個(gè)模塊出現(xiàn)錯(cuò)誤等。gradle的***策略是混合。你可以在根目錄下定義一個(gè)build文件去定義所有模塊相同的熟悉,然后在每個(gè)模塊中的build文件去配置只屬于該模塊的參數(shù)。Android
studio遵循了該原則,其創(chuàng)建了一個(gè)build.gradle文件在根目錄,然后再每個(gè)模塊文件夾下創(chuàng)建了另外一個(gè)build文件。模塊tasks當(dāng)你在你的項(xiàng)目中有多個(gè)模塊的時(shí)候,你需要在運(yùn)行任務(wù)之前想一想。當(dāng)你在命令行界面運(yùn)行一個(gè)task的時(shí)候,gradle將會(huì)找到哪個(gè)模塊將會(huì)執(zhí)行這個(gè)任務(wù)。舉個(gè)栗子,當(dāng)你有個(gè)mobile
app模塊和一個(gè)AndroidWear模塊,你運(yùn)行了gradlew
assembleDebug任務(wù)。當(dāng)你改變其中一個(gè)模塊的文件夾位置,gradle將只會(huì)運(yùn)行哪個(gè)特殊的模塊,縱使你使用了gradle
wrapper在根目錄。舉個(gè)栗子,當(dāng)你運(yùn)行../gradlewassembleDebug在Androidwear模塊的目錄下,其只會(huì)構(gòu)建Android
wear模塊。切換不同的文件夾去執(zhí)行不同的任務(wù)會(huì)讓人很不爽,幸運(yùn)的是,我們有其他的辦法。你可以準(zhǔn)備一個(gè)特別的task來(lái)執(zhí)行你的模塊。舉個(gè)栗子,為了只構(gòu)建Android
Wear模塊,你僅僅只需在根目錄下運(yùn)行g(shù)radlew:wear:assembleDebug。為你的項(xiàng)目添加模塊在Androidstudio中添加新模塊是很容易的一件事,該視圖同時(shí)也會(huì)為你創(chuàng)建build文件。添加Java依賴(lài)庫(kù)當(dāng)你新建了一個(gè)Java模塊,build.grade文件會(huì)是這樣:apply
plugin:
'java'
dependencies
{
compile
fileTree(dir:
'libs',
include:
['*.jar'])
}Java模塊使用了Java插件,這意味著很多Android特性在這兒不能使用,因?yàn)槟悴恍枰uild文件也有基本的庫(kù)管理,你可以添加jar文件在libs文件夾下。你可以添加更多的依賴(lài)庫(kù),根據(jù)第三章的內(nèi)容。給你的app模塊添加Java模塊,這很簡(jiǎn)單,不是嗎?dependencies
{
compile
project(':javalib')
}這告訴了gradle去引入一個(gè)叫做javelin的模塊吧,如果你為你的app模塊添加了這個(gè)依賴(lài),那么javalib模塊將會(huì)總是在你的app模塊構(gòu)建之前構(gòu)建。添加Android依賴(lài)庫(kù)同樣的,我們利用Androidstudio的圖形化界面創(chuàng)建Android模塊,然后其構(gòu)建文件如下:apply
plugin:
'com.android.library'記?。篈ndroid依賴(lài)庫(kù)不僅僅包含了Java代碼,同樣也會(huì)包含Android資源,像manifest和strings,layout文件,在你引入該模塊后,你可以使用該模塊的所有類(lèi)和資源文件。建議我有點(diǎn)建議關(guān)于多模塊項(xiàng)目,并且有些東西你們應(yīng)該了解清楚,知道這些將會(huì)節(jié)約你們的時(shí)間。在Androidstudio中運(yùn)行模塊tasks當(dāng)你有多個(gè)模塊,Androidstudio會(huì)分析出來(lái),并且展示在cradle中g(shù)rade圖形化讓你運(yùn)行模塊間的任務(wù)變得簡(jiǎn)單,但是其沒(méi)有為所有模塊同時(shí)運(yùn)行一個(gè)任務(wù),所以如果你希望這么做,最快的方式是使用命令行。加速你的多模塊構(gòu)建當(dāng)你構(gòu)建你的多模塊項(xiàng)目,gradle會(huì)依次執(zhí)行所有的模塊。當(dāng)你的電腦內(nèi)存夠大的時(shí)候,讓你的構(gòu)建過(guò)程多線程將會(huì)更快。該特性在gradle早已存在,但是其默認(rèn)關(guān)閉。所以如果你希望啟動(dòng)parall
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣西培賢國(guó)際職業(yè)學(xué)院《特殊兒童發(fā)展與學(xué)習(xí)》2023-2024學(xué)年第一學(xué)期期末試卷
- 宣城職業(yè)技術(shù)學(xué)院《數(shù)據(jù)挖掘與R語(yǔ)言》2023-2024學(xué)年第一學(xué)期期末試卷
- 甘肅省酒泉市肅北蒙古族自治縣2024-2025學(xué)年小升初總復(fù)習(xí)數(shù)學(xué)精練含解析
- 重慶工商大學(xué)派斯學(xué)院《建筑環(huán)境熱力學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西信息職業(yè)技術(shù)學(xué)院《空中領(lǐng)航學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京林業(yè)大學(xué)《英語(yǔ)閱讀V》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州省黔南布依族苗族自治州福泉市2025年五年級(jí)數(shù)學(xué)第二學(xué)期期末檢測(cè)試題含答案
- 海南省樂(lè)東縣2025年三下數(shù)學(xué)期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 青海交通職業(yè)技術(shù)學(xué)院《作家作品研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 供應(yīng)商質(zhì)量管理內(nèi)容
- 清華大學(xué)第二彈:DeepSeek賦能職場(chǎng)-從提示語(yǔ)技巧到多場(chǎng)景應(yīng)用
- 2024年江西建設(shè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 人教版小學(xué)六年級(jí)下冊(cè)音樂(lè)教案全冊(cè)
- 16J914-1 公用建筑衛(wèi)生間
- 建筑工程分部分項(xiàng)工程劃分表(新版)
- (新湘科版)六年級(jí)下冊(cè)科學(xué)知識(shí)點(diǎn)
- 新媒體數(shù)字時(shí)代下的編輯出版的轉(zhuǎn)型與創(chuàng)新研究
- 加熱爐預(yù)熱回收系統(tǒng)方案
- 電梯安全管理組織結(jié)構(gòu)圖(精編版)
- 踐行社會(huì)主義核心價(jià)值觀演講稿
- 基本公共衛(wèi)生服務(wù)鄉(xiāng)村兩級(jí)工作職責(zé)
評(píng)論
0/150
提交評(píng)論