簡介
Project相當(dāng)于eclipse里面的工作區(qū)間,module相當(dāng)于其project。module可以作為狹義上的模塊,就是可以多個(gè)app公用的module,如果新建module就會(huì)看到不止有phone module這個(gè)項(xiàng),還有其他的庫什么的。
application的module的有一個(gè)手機(jī)圖標(biāo)
個(gè)人理解:project是應(yīng)用的樣式,module是應(yīng)用里面的具體模塊。
Module的新建
Module目錄結(jié)構(gòu)
目錄文件 作用
build module編譯時(shí)所生成文件的目錄
lib 第三方依賴庫所在目錄
src module源碼所在目錄
src\andrroidTest android Studio生成的測試模塊,可刪除
src\main module代碼目錄,結(jié)構(gòu)和Eclipse中的差不多了
src\test 單元測試模塊,可刪除
.gitignore module中的git管理文件
app.iml module中的IDEA 項(xiàng)目文件
build.gradle module自動(dòng)編譯的配置文件
proguard-rules.pro module代碼混淆配置文件
module/build目錄
module的編譯文件目錄,編譯中生成的中間文件就在這里
我們編譯最終生成的apk就在build/outputs/apk目錄下,里面包含了app-debug.apk, app-debug-unaligned.apk,app-release-unaligned.apk三種apk, 另外app-release.apk是生成在module的根目錄下。
lib目錄
第三方庫存放目錄,我們可以把需要的第三方庫jar文件放到這里,*.so也同樣放在這里??梢栽赑roject Structure中管理它的依賴關(guān)系,也可以在build.gradle中直接修改。
src目錄
module源碼目錄,我們工作的主要地方
.gitignore文件
module模塊的git管理文件,可對module單獨(dú)管理。
app.iml文件
同Project中的*.iml一樣。管理module的配置
build.gradle文件
這個(gè)文件是Module的gradle配置文件,也可以算是整個(gè)項(xiàng)目最主要的gradle配置文件。
proguard-rules.pro文件
module中的代碼混淆配置文件,使用方式和Eclipse中一樣。在build.gradle中設(shè)置片斷用來啟用混淆。
創(chuàng)建
選擇第一個(gè),手機(jī)和平板都可以使用的模塊,第一個(gè)新建的module默認(rèn)為app。
新建一個(gè)module做為library
library/build/outputs下有個(gè)arr文件夾,里面存放這該模塊的arr壓縮文件,而MyApplication2項(xiàng)目的app/build/outputs下沒有arr,只有apk文件夾,看到apk文件瞬間也就了解兩者的區(qū)別了。
arr與java的jar類似,只是google為了封裝一些具有android特性的文件(例如xml配置文件、資源文件等)而創(chuàng)建的壓縮類型
上圖中,右鍵選中app,選擇“Open Module Settings”,彈出如下界面
依賴成功
新建一個(gè)module形式的第三方library的通用做法是
(1)新建一個(gè)library形式的module,刪掉這個(gè)module中src/main目錄里面的所有文件(包括刪掉java、res、AndroidManifest.xml)
(2)復(fù)制第三方庫的AndroidMainfest.xml、res、src文件(夾)到庫目錄的src/main目錄中
(3)將src/main目錄下的src目錄重命名(Shift+F6)為java
(4)刪除庫module中的build.gradle文件(注意不要修改錯(cuò)了地方)中的dependencies和release模塊
Module的刪除
點(diǎn)擊箭頭處的減號,就可以刪掉了。同時(shí)我們要去掉module對其他module的依賴
然后會(huì)發(fā)現(xiàn),StickyScrollView這個(gè)module的圖標(biāo)消失了,可以刪除,而且是從硬盤上直接delete掉。
Project的目錄
目錄文件 作用
.gradle gradle項(xiàng)目產(chǎn)生文件夾(自動(dòng)編譯工具產(chǎn)生的文件)
.idea IDEA項(xiàng)目文件夾(開發(fā)工具產(chǎn)生的文件)
app module模塊
build 構(gòu)建時(shí)生成文件的地方
gradle gradle環(huán)境支持文件夾
.gitignore git源碼管理文件
build.gradle gradle項(xiàng)目自動(dòng)編譯的配置文件
gradle.properties gradle運(yùn)行環(huán)境配置文件
gradlew 自動(dòng)完成 gradle 環(huán)境的linux mac 腳本,配合gradle 文件夾使用
gradlew.bat 自動(dòng)完成 gradle 環(huán)境的windows 腳本,配合gradle 文件夾使用
local.properties Android SDK NDK 環(huán)境路徑配置
MyApplication.iml IDEA 項(xiàng)目文件
setting.gradle gradle 項(xiàng)目的子項(xiàng)目包含文件
.gradle目錄
gradle 運(yùn)行時(shí)自動(dòng)生成的目錄,一般情況不做修改,不需要納入項(xiàng)目源代碼管理中。
.idea目錄
Intellij IDEA 運(yùn)行時(shí)候生成的文件目錄,一般情況不做修改,不需要納入項(xiàng)目源代碼管理中。
Intellij IDEA是JetBrains公司推出的Java集成開發(fā)環(huán)境,Android Studio是基于IDEA Commutity Edition開發(fā)的,Community 版本不僅是免費(fèi)的而且是開源的。
module(app)
每一個(gè)module可看成在Eclipse中的一個(gè)Project,里面的文件結(jié)構(gòu)與父類差不多。里面也能包含build.gradle、gradle.properties、setting.gradle 等相關(guān)gradle文件,若沒有定義,則在項(xiàng)目中使用父類的設(shè)置。
build目錄
編譯時(shí)產(chǎn)生文件,不需要修改,也不需要納入項(xiàng)目源代碼管理中
gradle目錄
可以看到里面wrapper目錄下有兩個(gè)文件,里面有一些項(xiàng)目對gradle的配置信息,我們來看下gradle-wrapper.properties里的內(nèi)容
可以看到里面聲明了gradle的目錄與下載路徑以及當(dāng)前項(xiàng)目使用的gradle版本
.gitignore文件
git對項(xiàng)目文件管理,可以在里面添加你不希望納入git管理的文件
Android Studio已經(jīng)自動(dòng)幫我們添加了一些不需要的文件,也可以按照同樣的格式來加入自己的文件。
build.gradle文件
項(xiàng)目的編譯環(huán)境配置,可以說是Gradle最主要的配置文件。
這里是對Project的配置,是最頂層的配置,在module中同樣有一個(gè)build.gradle文件,是對module的配置,如果module里沒有進(jìn)行配置,將使用這里的配置信息。一個(gè)是聲明倉庫的源,這里可以看到是指明的jcenter(), jcenter可以理解成是一個(gè)新的中央遠(yuǎn)程倉庫,兼容maven中心倉庫,而且性能更優(yōu)。
gradle.properties文件
配置gradle運(yùn)行環(huán)境的文件,比如配置gradle運(yùn)行模式,運(yùn)行時(shí)jvm虛擬機(jī)的大小。在創(chuàng)建的項(xiàng)目中,暫時(shí)是沒有內(nèi)容的。
gradlew & gradlew.bat 文件
分別是linux下的shell腳本和windows下的批處理文件,它們的作用是根據(jù)gradle-wrapper.properties文件中的distributionUrl下載對應(yīng)的gradle版本。這樣就可以保證在不同的環(huán)境下構(gòu)建時(shí)都是使用的統(tǒng)一版本的gradle,即使該環(huán)境沒有安裝gradle也可以,因?yàn)間radle wrapper會(huì)自動(dòng)下載對應(yīng)的gradle版本。
local.properties文件
配置android NDK,SDK的地方,非android項(xiàng)目可能沒有這個(gè)文件,這個(gè)路徑根據(jù)不同想電腦不同
MyApplication.iml文件
編譯項(xiàng)目時(shí)生成的文件,其名為‘項(xiàng)目名.iml’,iml文件是Android Studio識別項(xiàng)目的配置文件,跟Eclipse里面的.project文件作用類似。
setting.gradle文件
聲明當(dāng)前項(xiàng)目中含有什么module。如果有多個(gè)module會(huì)以‘,’分開,如:include ‘:app’, ‘:app2’