一、項目視圖模式
在開始之前,確保你的 Project 面板使用的是 【Android】 視圖(默認)。這是最常用的視圖,它將相關文件按功能邏輯分組展示。
💡 你也可以切換到 【Project】 視圖查看完整的文件系統結構。
二、頂級項目結構
一個標準的 Android 項目包含以下頂級目錄和文件:
項目 | 說明 |
---|---|
.gradle/ | Gradle 構建系統的緩存目錄(自動生成,無需手動修改)。 |
.idea/ | Android Studio 的 IDE 配置文件(自動生成,與具體 IDE 相關)。 |
app/ | 應用模塊的主目錄,包含所有源代碼、資源和配置。這是我們最常操作的部分。 |
gradle/ | 包含 Gradle Wrapper 的 jar 包和屬性文件,用于在沒有全局安裝 Gradle 的機器上運行構建。 |
build.gradle ?(Project) | 項目級別的構建腳本,定義適用于所有模塊的全局配置,如倉庫(repositories)和依賴管理插件(dependencies)。 |
settings.gradle | 定義哪些模塊(Module)屬于這個項目。對于單模塊項目,通常只包含?include ':app' 。 |
gradle.properties | Gradle 構建的屬性配置文件,可以設置 JVM 參數、構建選項等。 |
gradlew ,?gradlew.bat | Gradle Wrapper 的 Unix 和 Windows 腳本,用于在命令行執行構建任務。 |
? 核心:我們開發的重心幾乎都在
app/
模塊中。
三、應用模塊結構 (app/
)
進入 app/
目錄,這是整個 Android 應用的核心。其結構如下:
1.?src/
?目錄(源碼與資源)
這是存放所有源代碼和資源文件的地方。主要包含 main
、androidTest
、test
等子目錄。
??src/main/
?- 主要源碼與資源
這是應用的主體部分。
子目錄/文件 | 說明 |
---|---|
java/ | 存放所有的 Kotlin 或 Java 源代碼文件。包結構(如?com.example.myapp )對應于此。 |
res/ | 資源(Resources)目錄,存放所有非代碼資源。這是最復雜的部分,詳見下文。 |
AndroidManifest.xml | 應用的清單文件,是整個應用的“身份證”和“配置中心”。它聲明了: |
- 應用的包名(package name) | |
- 應用圖標(android:icon )和名稱(android:label ) | |
- 所需的權限(<uses-permission> ) | |
- 應用組件(Activities, Services, BroadcastReceivers, ContentProviders) | |
- 應用的主題(theme)和啟動 Activity | |
assets/ | 存放原始資源文件,這些文件會原封不動地打包進 APK。常用于存放數據庫文件、HTML 文件、字體文件等。可通過?AssetManager ?訪問。 |
??res/
?目錄詳解
res/
目錄下的每個子目錄都有特定用途,命名規則嚴格。
目錄 | 用途與說明 |
---|---|
drawable/ | 存放圖片資源(PNG, JPG, GIF)和?可繪制對象(Drawable)的 XML 定義(如?shape ,?selector )。 |
layout/ | 存放?Activity 和 Fragment 的布局 XML 文件(如?activity_main.xml )。定義了用戶界面的結構。 |
mipmap/ | 專門存放應用圖標(Launcher Icon)。與?drawable ?不同,系統會根據設備分辨率從不同?mipmap ?文件夾(hdpi, xhdpi, xxhdpi, xxxhdpi)中選擇合適的圖標。推薦將?ic_launcher.png ?放在這里。 |
values/ | 存放各種?值資源?的 XML 文件。 |
-?strings.xml :應用中所有的字符串文本。強烈建議不要在代碼中硬編碼字符串! | |
-?colors.xml :顏色值定義(如?#FF0000 )。 | |
-?dimens.xml :尺寸定義(如?16dp ,?24sp )。 | |
-?styles.xml :樣式和主題定義。 | |
-?themes.xml :主題資源(現代項目可能使用此文件)。 | |
anim/ | 存放視圖動畫(View Animation)的 XML 文件(如平移、旋轉、透明度變化)。 |
animator/ | 存放屬性動畫(Property Animation)的 XML 文件。 |
raw/ | 存放原始音頻、視頻或其他文件。與?assets/ ?類似,但可以通過?R.raw.filename ?直接引用。 |
xml/ | 存放其他任意的 XML 配置文件,如?SharedPreferences ?的配置、搜索配置等。 |
💡 最佳實踐:將資源分類存放,使用清晰的命名(如
btn_submit_background.xml
,ic_settings.xml
),并在strings.xml
中管理所有文本。
??src/androidTest/
?- Android 測試
- 包含在真實設備或模擬器上運行的?Instrumented Tests(儀器化測試)。
- 使用 Android SDK 中的測試框架(如 JUnit, Espresso)。
- 代碼通常放在?
java/
?目錄下,與主代碼包名一致。
??src/test/
?- 本地單元測試
- 包含在本地 JVM 上運行的?Unit Tests(單元測試)。
- 用于測試純 Kotlin/Java 邏輯,不依賴 Android SDK。
- 使用 JUnit 框架。
2.?build/
?目錄
- 存放 Gradle 構建過程中生成的所有文件,如編譯后的 class 文件、打包的 APK、資源索引等。
- 這是自動生成的目錄,不應手動修改。清理項目(Clean Project)會刪除此目錄。
3.?libs/
?目錄
- 用于存放?第三方 JAR 或 AAR 庫文件。
- 如果將庫文件放在這里,需要在?
build.gradle
?中通過?implementation files('libs/xxx.jar')
?引用。 - 現代開發更推薦使用遠程依賴(如 Maven Central),通過?
implementation 'groupId:artifactId:version'
?添加。
4.?build.gradle
?(Module: app)
- 模塊級別的構建腳本,定義了?
app
?模塊特有的配置。 - 關鍵配置包括:
android {compileSdk 34 // 編譯時使用的 Android SDK 版本defaultConfig {applicationId "com.example.myapp" // 應用的唯一 IDminSdk 24 // 最低支持的 Android 版本targetSdk 34 // 目標 Android 版本versionCode 1 // 內部版本號(整數)versionName "1.0" // 用戶可見的版本名}buildTypes {release {minifyEnabled false // 是否啟用代碼混淆proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}} }dependencies {implementation 'androidx.core:core-ktx:1.13.1'implementation 'androidx.appcompat:appcompat:1.7.0'implementation 'com.google.android.material:material:1.12.0'// ... 其他依賴 }
dependencies
?塊是添加項目依賴(庫)的地方。
5.?proguard-rules.pro
- 如果啟用了代碼混淆(
minifyEnabled true
),此文件用于編寫 ProGuard 混淆規則,防止關鍵代碼被錯誤混淆。
四、總結:一張圖看懂工程結構
MyApplication/ <-- 項目根目錄
├── app/ <-- 應用模塊
│ ├── build/ <-- 構建輸出(自動生成)
│ ├── libs/ <-- 第三方庫(JAR/AAR)
│ ├── src/
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml <-- 應用清單
│ │ │ ├── java/ <-- Kotlin/Java 源碼
│ │ │ │ └── com/example/myapp/
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── ...
│ │ │ ├── res/ <-- 資源文件
│ │ │ │ ├── drawable/ <-- 圖片/Drawable
│ │ │ │ ├── layout/ <-- 布局文件
│ │ │ │ ├── mipmap/ <-- 應用圖標
│ │ │ │ ├── values/ <-- 字符串/顏色/尺寸
│ │ │ │ └── ...
│ │ │ └── assets/ <-- 原始資源
│ │ ├── androidTest/ <-- Android 測試
│ │ └── test/ <-- 本地單元測試
│ └── build.gradle <-- 模塊構建腳本
├── gradle/ <-- Gradle Wrapper
├── .gradle/ <-- Gradle 緩存
├── build.gradle <-- 項目構建腳本
├── settings.gradle <-- 項目設置
└── gradle.properties <-- Gradle 屬性
五、結語
感謝您的閱讀!如果你有任何疑問或想要分享的經驗,請在評論區留言交流!