Android項目結(jié)構(gòu)(翻譯)

原文鏈接

項目概述

一個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)相比有下面一些變化:


ProjectStructure
  • 顯示所有的工程的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類型瞭吃。

ProjectView2

當你選擇了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:列出該模塊依賴的類庫,文件和模塊靡挥。你可以在改部分添加序矩,修改、刪除依賴跋破。

查看更多資源信息###

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末簸淀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子幔烛,更是在濱河造成了極大的恐慌啃擦,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饿悬,死亡現(xiàn)場離奇詭異令蛉,居然都是意外死亡,警方通過查閱死者的電腦和手機狡恬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門珠叔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弟劲,你說我怎么就攤上這事祷安。” “怎么了兔乞?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵汇鞭,是天一觀的道長。 經(jīng)常有香客問我庸追,道長霍骄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任淡溯,我火速辦了婚禮读整,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咱娶。我一直安慰自己米间,他們只是感情好强品,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屈糊,像睡著了一般的榛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上另玖,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音谦去,去河邊找鬼慷丽。 笑死,一個胖子當著我的面吹牛鳄哭,可吹牛的內(nèi)容都是我干的要糊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼妆丘,長吁一口氣:“原來是場噩夢啊……” “哼锄俄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起勺拣,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奶赠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后药有,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毅戈,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年愤惰,在試婚紗的時候發(fā)現(xiàn)自己被綠了苇经。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡宦言,死狀恐怖扇单,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奠旺,我是刑警寧澤蜘澜,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站响疚,受9級特大地震影響兼都,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稽寒,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趟章。 院中可真熱鬧杏糙,春花似錦慎王、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谅河,卻和暖如春咱旱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绷耍。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工吐限, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人褂始。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓诸典,卻偏偏與公主長得像,于是被迫代替她去往敵國和親崎苗。 傳聞我的和親對象是個殘疾皇子狐粱,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,126評論 25 707
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,429評論 2 45
  • 這是一個陰陽魚的圖片胆数,就像大家看到的一樣肌蜻,大體分為兩部分,一條黑色一條白色必尼,然后再黑色里邊有一小部分白色在白色里邊...
    小崽子閱讀 277評論 0 2
  • 今天已經(jīng)是我倆分別兩個月的時間了蒋搜,你也去到了另一個地方,開始了新的生活胰伍。夜也已經(jīng)到了深夜齿诞,卻通過窗前看著那一輪明月...
    一已陌生閱讀 221評論 0 1
  • ?14.對身體的姿勢保持正念 這個方法可以在任何時間、任何地點練習骂租。 先專注在呼吸上祷杈,比平常安靜且深長地呼吸。 不...
    雅璇閱讀 134評論 0 0