Android 專案目錄結構解讀
我們新建一個 Android 工程之後,發現專案有很多資料夾和檔案,對於初學者可能搞不清到底從哪裡下手,哪些需要關注,哪些暫時不用理會,以縮短學習成本。下面我們來一個個介紹下。

我們新建一個 Android 工程,工程名叫 AndroidCourse,在 Android Studio 中展示如下:

專案結構
-
AndroidCourse
專案名
-
.gradle .idea
這兩個目錄專案構建時生成的快取檔案,開發者無需干預。
-
app
開發者需要操作的大多在這個目錄下面,裡面包含了程式碼檔案、資原始檔、jar 包等等,後面我們展開這個目錄詳細講解。
-
build
編譯時自動生成的檔案,開發者無需干預。
-
gradle
這個目錄下包含了 gradle wrapper 的配置檔案。
-
.gitignore
這個檔案是用來將指定的目錄或檔案排除在版本控制之外的,這樣你在 git 合併或者提交時,並不會比對這些檔案,也不會將這些檔案的本地改動提交。
-
AndroidCourse.iml
iml檔案是所有IntelliJ IDEA專案都會自動生成的一個檔案(Android Studio 是基於 IntelliJ IDEA 開發的),用於標識這是一個 IntelliJ IDEA 專案,開發者無需干預。
-
build.gradle
這是專案全域性的 gradle 構建指令碼,大多數情況不需要操作該檔案。
-
gradle.properties
這個檔案是全域性的 gradle 配置檔案,在這裡配置的屬性將會影響到專案中所有的 gradle 編譯指令碼。
-
gradlew gradlew.bat
這兩個檔案是用來在命令列介面中執行 gradle 命令的,其中 gradlew 是在 Linux 或 Mac 系統中使用的,gradlew.bat 是在 Windows 系統中使用的。
-
local.properties
配置 Android SDK 的路徑,自動生成的,也可以手動修改路徑。
-
README.md
markdown 檔案,這是我自己新增的,用於備註一些資訊。
-
settings.gradle
配置專案的模組。如果需要引入其它模組的話,可以在這個檔案裡新增,通常專案不需要修改。
重點講解 app 資料夾
下面我們把 app 資料夾展開重點講解,對於初學者,或者在大多數情況下,我們只需要在這裡面操作。

專案結構
-
libs
放一些 jar 包,比如你接入第三方平臺的話,例如微信分享、支付、QQ登陸等等,那麼你可能需要把他們提供的 jar 包放在該目錄下,或者參照第三方平臺提供的 demo,讓你放在哪,就放在哪。
-
src
這個資料夾就是存放各種資源了,包括程式碼資源、圖片資源等等。
-
src/androidTest
單元測試的程式碼。
-
src/main
(5顆星)最主要的資料夾。
-
src/main/assets
放置一些不需要被編譯成二進位制的檔案,比如內建的db檔案。
-
src/main/java
java程式碼都在這裡。
-
src/main/res/anim
預設是沒有這個資料夾的,這個檔案是我新建的,當你需要存放動畫xml資源的時候,你就需要新建這麼一個資料夾 anim,大家先記著,用到時候就知道有這麼回事了。
-
src/main/res/drawable
存放自定義的背景xml檔案,用來設定檢視的背景。注意,我這種說法是實際開發中就這麼做的,當然,你也可以把圖片放裡面,不是不可以。
-
src/main/res/drawable-xxhdpi
這個資料夾預設也是沒有的,是我新建的,當然實際上你還可以新建drawable-hdpi、drawable-xhdpi、drawable-xxxhdpi,用來存放不同尺寸的 圖片資源 。
-
src/main/res/layout
存放佈局 xml 檔案,包括 Activity 的佈局檔案,自定義 View 的佈局檔案等等。
-
src/main/res/mipmap-*
存放不同尺寸的 APP 的啟動圖示。
-
src/main/res/values
存放顏色、單位、自定義屬性、樣式等 xml 檔案。
-
src/main/res/AndroidManifest.xml
每一個 Activity 都需要在這個檔案裡面註冊,還可以設定預設啟動的 Activity,設定許可權等等。
-
src/test
單元測試程式碼。
-
.gitignore
和外層 .gitignore 類似,將制定目錄或檔案排除在版本控制之外。
-
app.iml
和外層 .iml 檔案一樣,IntelliJ IDEA 專案自動生成的檔案,不需要干預。
-
build.gradle
這個還是很重要的,當然,初學者暫止也無需關心。Android Studio 通過 Gradle 來構建專案,我們可以在 build.gradle 配置很多資訊,例如需要引入的庫、release 包和 debug 包的不同配置、各個渠道包的配置等等。Gradle 是一個知識體系,深入學習的話還是有很多內容的。
-
proguard-rules.pro
混淆檔案。我們防止別人通過安裝包獲取到原始碼,所以通過此檔案對程式碼進行混淆,從而破壞程式碼的閱讀性。可以指定部分包下面的程式碼混淆,或者指定部分檔案混淆;也可以指定部分檔案不混淆,任由你配置。