項目概述
一個Android Studio的項目包含了一個應用的所有資源,包括源碼拒迅、依賴資源、測試代碼撼港、build的配置等坪它。創(chuàng)建一個新的項目,Android Studio創(chuàng)建了所有必要的文件并顯示在左邊的"Project"窗口里(點擊View>Tool Windows>Project)帝牡。下面介紹了項目的核心組件往毡。
Modules###
一個module是一個源文件和build的配置的集合,可以讓你將項目分割成不同的功能模塊靶溜。一個項目可以有一個或多個module开瞭,一個module可以依賴另一個module懒震。每個module可以獨立的build,測試嗤详,調(diào)試个扰。
另外,module經(jīng)常被用作項目的代碼庫葱色,或者是不同設(shè)備如手機递宅、手表等對應的不同的代碼集合。需要注意的是要保證所有的的module在同一個項目下苍狰,且除了主module办龄,其它module要被依賴且用到依賴里的代碼或資源。
你可以點擊File>New>New Module,在項目中添加一個新的module淋昭。
Android Studio提供了一些不同的module類型:
Android app module#####
為應用的源碼俐填、資源文件和app的設(shè)置層級例如:module-level的build文件、Android Manifest文件等提供一個容器翔忽。創(chuàng)建一個新的項目英融,默認的module名字是"app"。
在"Create New Module"窗口歇式,Android Studio提供了下面的app module類型:
- Phone & Table Module 手機驶悟、pad module
- Android Wear Module 手表module
- Android TV Module 電視module
- Glass Module 眼鏡module
上面的每一種都提供一些適合對應的應用或設(shè)備類型的基本的文件和代碼模板。
添加module的更多信息材失,閱讀 Add a Module for a New Device
Library module#####
提供了一個可以復用的代碼容器撩银,可以作為其它項目的依賴或者從其它的項目中導入。"library module"和一個"app module"結(jié)構(gòu)上相同豺憔,但當在build時,它創(chuàng)建的是代碼歸檔文件而不是一個apk够庙,所以不能被安裝在設(shè)備上恭应。
在"Create New Module"窗口,Android Studio提供了下面的library module:
- Android Library:該類型包含一個Android項目支持的所有文件類型耘眨,包括源碼昼榛、資源文件、清單文件等剔难。Build的結(jié)果是一個歸檔文件(Android Archive file AAR),可以作為app module的依賴胆屿。
- Java Library:該類型只包含java源文件。Build的結(jié)果是一個java歸檔文件(Java Archive file JAR)偶宫,可以作為Android app module或java項目的依賴非迹。
Google Cloud module#####
這種module提供一個谷歌云端后臺代碼庫。它為簡單使用HTTP的Java應用引擎纯趋、云端點和云信息提供了必要的代碼和依賴來連接你的應用憎兽。你可以在后臺開發(fā)來提供你的應用需要的云服務冷离。
用Android Studio來創(chuàng)建開發(fā)Google Cloud module可以讓你管理同一個項目的后臺和應用的代碼。你也可以在本地運行和測試后臺代碼纯命。
查看添加Google Cloud module的更多信息 Adding an App Engine Java Servlet Module西剥。查看更多的運行開發(fā)Google Cloud module查看Running, Testing, and Deploying the Backend。
一些人把module作為子項目是可以的亿汞,因為Gradle也可以把module引用為工程瞭空。例如,當創(chuàng)建一個library module并把它作為app module的依賴時疗我,你必須的build文件里聲明:
dependencies {
compile project(':my-library-module')
}
Android顯示類型###
默認Android Studio顯示項目文件以"Android"類型顯示方式展示咆畏。它不會影響硬盤上實際的文件層級,但以module和文件類型的形式來簡潔明了展示項目的核心文件碍粥,隱藏不常用的文件和文件夾鳖眼。和物理實際的文件結(jié)構(gòu)相比有下面一些變化:
- 顯示所有的工程的build-related的配置文件在一個頂層的Gradle Script組。
- 將每個module的manifest文件展示在模塊分組(不同的產(chǎn)品build類型有不同的清單文件)嚼摩。
- 將所有可選擇性的資源文件放在一個單獨的分組钦讳,替換掉分類文件夾的修飾符。例如枕面,所有不同像素的應用icon可以并排顯示愿卒。
每個Android的app module,文件按下面的分組顯示:
manifests######
包含AndroidManifest文件潮秘。
java######
包含java的源碼文件琼开,按不同的包名劃分,包好JUnit測試代碼枕荞。
res######
包含所有的非代碼資源柜候,如xml layout,界面的strings,bitmap圖片躏精,按對應的子文件夾劃分渣刷。更多的資源類型信息,查看Providing Resources矗烛。
Android的Project類型視圖###
查看項目的真實文件結(jié)構(gòu)的所有文件辅柴,包括Android視圖下隱藏的文件,選擇在頂層的Project下拉框中選擇Project類型瞭吃。
當你選擇了Project視圖碌嘀,就可以看到更多的文件和文件夾。其中最終要的如下:
module-name/
build/ 包含build的輸出文件
libs/ 包含私有的庫
src/ 包含所有的代碼和相應模塊下子文件下的所有資源文件
androidTest/包含運行在Android設(shè)備上的測試代碼歪架。
main/ 包含主要的代碼集合:有Android代碼和各種build變形共享的資源(其它build的變體文件在統(tǒng)計的目錄下股冗,比如src/debug/是調(diào)試build類型)
AndroidManifest.xml 描述應用的特性和它的組件。
java/ 包含Java代碼牡拇。
jni/ 包含用Java Native Interface(JNI)生成的原生代碼魁瞪。
gen/ 包含Android Studio生成的Java文件穆律,例如R.java文件和根據(jù)AIDL文件創(chuàng)建的接口等。
res/ 包含應用的資源导俘,比如drawable文件峦耘,layout文件,界面的string旅薄。
assets/ 包含要被編譯在.apk文件的資源文件辅髓。你可以用URI和通過AssetManager讀取字節(jié)流文件的形式來使用這個文件夾下的資源。比如像游戲的數(shù)據(jù)少梁、texture可以放在改目錄下洛口。
test/ 包含運行在JVM上的本地測試代碼。
build.gradle(module) 定義了特定的module的build配置凯沪。
build.gradle(project) 定義了所有module的build的配置第焰。這個文件是項目不可缺少的,所以應該保持該配置與所有源碼的一致妨马。
Project Structure Settings###
改變Android Studio項目的各種設(shè)置挺举,可以點擊File>Project Structure。它包含了下面的部分:
- SDK Location: 設(shè)置項目的JDK, Android SDK, Android NDK的位置烘跺。
- Project: 設(shè)置Gradle湘纵、Android plugin for Gradle的版本,庫的名字滤淳。
- Developer Services:包含從谷歌和其他第三方添加Android Studio add-in組件的設(shè)置梧喷。
- Modules: 允許你編輯特定module的配置,包括目標脖咐、最小版本的SDK铺敌,應用的簽名,依賴庫等屁擅。
Developer Services#####
這部分包含應用使用的一些服務的配置頁适刀。包含下面一些部分:
- AdMob:允許你打開谷歌的AdMob組件,幫助你了解用戶并展示定性的廣告煤蹭。
- Analytics:允許你打開谷歌的Analytics,幫助你觀測應用在不同的設(shè)備環(huán)境上的用戶交互情況取视。
- Authentication:允許你使用谷歌賬號登錄應用硝皂。
- Cloud:允許你為應用打開Firebase云基礎(chǔ)服務。
- Notifications:允許你使用谷歌云信息來實現(xiàn)應用與服務的交互作谭。
應用中打開上面任一項服務會是Android Studio添加必要的依賴和權(quán)限稽物。如果你想啟動哪項服務,每個配置頁面列出了這些和其它的Android Studio的行為配置折欠。
Modules#####
可以在該部分改變項目中每個module的配置贝或。每個module的設(shè)置頁面包含下面的分類:
- Properties:指定編譯該module的SDK和build tools的版本吼过。
- Signing:指定應用的簽名證書
- Flavors: 創(chuàng)建多個build的偏好,每個偏好指定了一些列的配置設(shè)置咪奖,比如module的最小和目標SDK的版本盗忱、版本的名字、版本號羊赵。比如:可以設(shè)置偏好為minimun SDK=15,target SDK=21;另一個偏好設(shè)置為minimum SDK=19, target SDK=23趟佃。
- Build Type:可以創(chuàng)建和修改build的配置。默認的每個module有debug和release的build類型昧捷,但你可以定義更多需要的闲昭。
- Dependencies:列出該模塊依賴的類庫,文件和模塊靡挥。你可以在改部分添加序矩,修改、刪除依賴跋破。