Android 專案結構深入解析
當你建立一個 Android 專案時,Android Studio 會生成許多檔案與目錄。理解這些檔案的用途對於開發至關重要。
重要:切換專案檢視模式
預設或有時候 Android Studio 會顯示 Project 模式(類似檔案總管),這時你不會看到
manifests 這種虛擬目錄。
請點擊左上角的下拉選單(通常顯示 "Project"),將其切換為 Android 模式。這樣此教學的結構才會與你看到的畫面一致。在 Android 模式下,我們可以更清晰地看到歸納後的結構:
app (模組目錄)
這是你主要工作的目錄,包含了 App 的原始碼與資源。
manifests 目錄
這是 Android View 為了方便管理而顯示的虛擬目錄,實際在檔案系統中的位置是 app/src/main/AndroidManifest.xml。
- AndroidManifest.xml:這是 App 的「身分證」。
- 宣告 App 的名稱、圖示 (Icon)、主題 (Theme)。
- 列出所有的 Activities (頁面)、Services、Broadcast Receivers 等元件。
- 宣告 App 需要的 權限 (Permissions),例如網路存取、相機、定位等。
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application ...>
<activity android:name=".MainActivity" exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
kotlin+java 目錄
這裡存放所有的 Kotlin (與 Java) 原始碼檔案。通常會有三個子目錄:
- com.example.myapp:主要的程式碼(MainActivity, Data Models, ViewModels 等)。
- com.example.myapp (androidTest):UI 測試 (Instrumented Test) 的程式碼,執行在模擬器或實機上。
- com.example.myapp (test):單元測試 (Unit Test) 的程式碼,執行在電腦的 JVM 上。
res (資源目錄)
這裡存放非程式碼的資源檔案。Android 會自動為這些資源生成 R 類別的 ID,方便在程式碼中引用(例如 R.string.app_name)。
- drawable/:圖片檔(PNG, JPEG, WebP)與向量圖(XML Vector Drawable)。
- layout/:傳統 XML 佈局檔(在 Compose 專案中較少用到,除非混用舊版 View 系統)。
- mipmap/:應用程式的啟動圖示 (App Icons)。通常有不同解析度的版本。
- values/:
colors.xml:定義顏色代碼。strings.xml:定義文字字串。這對於多國語系 (Localization) 非常重要,你不應該在程式碼中寫死 (Hardcode) 文字。themes.xml:定義 App 的全域樣式(主要用於傳統 View 系統或設定狀態列顏色等)。
- xml/:其他 XML 設定檔(例如網路安全性設定、捷徑設定)。
Gradle Scripts (建置腳本)
Android 使用 Gradle 作為建置系統。這裡通常有兩個主要的 build.gradle.kts 檔案:
build.gradle.kts (Project: My Application)
這是專案層級的設定檔,定義全域的設定,例如 Gradle Plugin 的版本。通常不需要頻繁修改。
// Project-level build.gradle.kts
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.jetbrains.kotlin.android) apply false
}
build.gradle.kts (Module: app)
這是模組層級的設定檔,也是你最常修改的地方。
// Module-level build.gradle.kts
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
}
android {
namespace = "com.example.myfirstapp"
compileSdk = 34 // 編譯時使用的 SDK 版本
defaultConfig {
applicationId = "com.example.myfirstapp" // 上架時的唯一 ID
minSdk = 24 // 最低支援版本
targetSdk = 34 // 目標適配版本
versionCode = 1 // 內部版本號 (整數)
versionName = "1.0" //顯示版本號 (字串)
}
// ...
}
dependencies {
// 這裡宣告第三方套件依賴
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.material3)
// ...
}
libs.versions.toml (Version Catalog)
在較新的 Android Studio 專案中,你會看到 gradle/libs.versions.toml 檔案。這是 Gradle 的 Version Catalog 功能,用來集中管理依賴套件的版本。
這樣的好處是,如果你的專案有多個模組 (Modules),它們可以共享同一個版本號設定,不用擔心版本衝突。
小結
- Manifest:權限與元件宣告。
- Java/Kotlin:邏輯程式碼。
- Res:圖片、字串資源。
- Gradle:依賴管理與建置設定。
了解這些結構後,你已經具備了解讀 Android 專案的基礎能力。接下來,我們將深入探討 Gradle 的運作細節。