專案總覽

Android Studio 中的「專案」包含可定義應用程式工作區的所有內容,包括原始碼、資產、測試程式碼和建構設定。

當您啟動新專案時,Android Studio 會為所有檔案建立必要的結構,並顯示在 Android Studio 的「Project」視窗中。如要開啟這個視窗,請依序選取「View」>「Tool Windows」>「Project」

本頁提供專案中主要元件的總覽。

模組

「模組」是一組來源檔案和建構設定,可讓您將專案分為不同的功能單元。專案可以有一或多個模組,而一個模組可以使用另一個模組做為依附元件。而每個模組都可單獨建構、測試及偵錯。

當您在自己的專案中建立程式碼程式庫、或是想為不同類型的裝置 (例如手機和穿戴式裝置) 建立不同的程式碼和資源組合,但想將所有檔案保留在相同的專案範疇並共用部分程式碼時,額外的模組便相當實用。

如要在專案中新增模組,請依序點選「File」>「New」>「New Module」

Android Studio 提供幾種不同類型的模組:

Android 應用程式模組
提供存放應用程式原始碼、資源檔案和應用程式層級設定的容器,例如模組層級建構檔案和 Android 資訊清單檔案。建立新專案時,預設的應用程式模組名稱為「app」。

Android Studio 提供以下類型的應用程式模組:

  • 手機和平板電腦
  • Automotive
  • Wear OS
  • 電視
  • 基準設定檔產生器
  • Benchmark

每種模組都會為對應的應用程式或裝置類型提供必要檔案和一些適用的程式碼範本。

如要進一步瞭解如何新增模組,請參閱「為新裝置新增模組」一文。

功能模組
代表可使用 Play Feature Delivery 的應用程式模組化功能。舉例來說,您可以利用功能模組,依使用者的需求提供應用程式的特定功能,或是透過 Google Play 免安裝技術提供免安裝體驗。

Android Studio 提供以下類型的功能模組:

  • 動態功能模組
  • 免安裝動態功能程式庫模組

詳情請參閱 Play Feature Delivery 相關說明。

程式庫模組
提供可重複使用程式碼的容器,可在其他應用程式模組中作為依附元件,或是匯入其他專案。在結構上,程式庫模組與應用程式模組相同,但是在建構時並不會產生 APK,而是會建立程式碼封存檔案,因此無法安裝到裝置上。

在「Create New Module」視窗中,Android Studio 提供以下類型的程式庫模組:

  • Android 程式庫:包含 Android 專案支援的所有檔案類型 (原生 C++ 程式碼除外),包括 Java 和 Kotlin 原始碼、資源和資訊清單檔案。建構結果是一個 Android ARchive (AAR) 檔案,可用來新增為 Android 應用程式模組的依附元件。
  • Android 原生資料庫:包含 Android 專案支援的所有檔案類型,類似 Android 程式庫。不過,Android 原生資料庫也可以包含原生 C++ 原始碼。建構結果是一個 Android ARchive (AAR) 檔案,可用來新增為 Android 應用程式模組的依附元件。
  • Java 或 Kotlin 程式庫:僅包含 Kotlin 或 Java 來源檔案。建構結果是一個 Java Archive (JAR) 檔案,可用來新增為 Android 應用程式模組或其他 Kotlin/Java 專案的依附元件。

模組有時也稱為「子專案」,因為 Gradle 也將模組稱為專案。

如果您建立了一個程式庫模組,並想要新增為 Android 應用程式模組的依附元件,必須按照下列方式進行宣告:

Groovy

dependencies {
    implementation project(':my-library-module')
}

Kotlin

dependencies {
    implementation(project(":my-library-module"))
}

專案檔案

根據預設,Android Studio 會在 Android 檢視畫面中顯示專案檔案。這個檢視畫面並不會依照磁碟中實際的檔案階層呈現,而是按照模組和檔案類型分類來簡化專案主要來源檔案之間的瀏覽方式,並且隱藏不常使用的某些檔案或目錄。

Android 檢視畫面與磁碟上的結構有部分差異,那就是 Android 檢視畫面會:

  • 在頂層「Gradle Script」群組中,顯示所有與專案建構相關的設定檔。
  • 顯示模組層級群組中每個模組的所有資訊清單檔案 (在不同變種版本和建構類型有不同的資訊清單檔案時)。
  • 在單一群組中顯示所有額外資源檔案,而非顯示每個資源限定詞的個別資料夾。舉例來說,啟動器圖示的所有密度版本都會並列顯示。

在每個 Android 應用程式模組中,檔案會以下列群組顯示:

資訊清單
包含 AndroidManifest.xml 檔案。
java
包含 Kotlin 和 Java 原始碼檔案,並以套件名稱分隔,包括 JUnit 測試程式碼。
res
內含所有非程式碼的資源,例如 UI 字串和點陣圖,會分割成對應的子目錄。如要進一步瞭解可能的資源類型,請參閱「應用程式資源總覽」。

專案檢視畫面

如要查看專案的實際檔案結構 (包括在「Android」檢視畫面中隱藏的所有檔案),請從「Project」視窗頂端的選單中選取「Project」

選取「Project」檢視畫面後,可看到更多檔案和目錄,包括:

module-name/
build/
包含建構輸出內容。
libs/
包含私人程式庫。
src/
包含以下子目錄中模組的所有程式碼和資源檔案:
androidTest/
含有在 Android 裝置上執行檢測測試的程式碼。詳情請參閱在 Android Studio 中進行測試相關說明。
cpp/
包含使用 Java Native Interface (JNI) 的原生 C 或 C++ 程式碼。詳情請參閱 Android NDK 說明文件
main/
包含「main」來源集檔案:所有建構變化版本共用的 Android 程式碼和資源 (其他建構變化版本的檔案位於同層目錄中,例如,偵錯建構類型的檔案在 src/debug/ 中):
AndroidManifest.xml
說明應用程式及其每個元件的性質。詳情請參閱應用程式資訊清單總覽。
java/
包含 Kotlin 或 Java 程式碼來源;如果應用程式同時含有 Kotlin 和 Java 原始碼,則會包含兩者的程式碼來源。
kotlin/
只包含 Kotlin 程式碼來源。
res/
包含應用程式資源,例如可繪項目檔案和 UI 字串檔案。詳情請參閱應用程式資源總覽。
assets/
包含要依原樣編譯成 APK 檔案的檔案。舉例來說,此為存放材質和遊戲資料的絕佳位置。您可以使用 URI 瀏覽此目錄,做法就像瀏覽一般檔案系統,然後再使用 AssetManager 以位元組串流的形式讀取檔案。
test/
包含在主機 JVM 上執行本機測試的程式碼。
build.gradlebuild.gradle.kts (模組)
定義模組專屬的建構設定。如果使用 Groovy 做為建構指令碼語言,正確檔案名稱為 build.gradle,使用 Kotlin 指令碼時則為 build.gradle.kts
build.gradlebuild.gradle.kts (專案)
定義適用於所有模組的建構設定。如果使用 Groovy 做為建構指令碼語言,正確檔案名稱為 build.gradle,使用 Kotlin 指令碼時則為 build.gradle.kts。這是專案不可缺少的檔案,因此請在修訂版本控管作業中與所有其他原始碼一併進行維護。

如要進一步瞭解其他建構檔案,請參閱「建構設定」一文。

專案結構設定

如要變更 Android Studio 專案的各項設定,請開啟 按一下「Project Structure」對話方塊 檔案 >專案架構。其中包含以下部分:

  • Project︰設定 Gradle 和 Android Gradle 外掛程式的版本,以及存放區位置名稱。
  • SDK Location︰設定專案使用的 JDK、Android SDK 和 Android NDK 位置。
  • Variables︰可讓您編輯在建構指令碼中使用的變數。
  • Modules︰可讓您編輯模組專屬的建構設定,包括目標和最低 SDK、應用程式簽名,以及程式庫依附元件。每個模組的設定頁面分成以下幾個分頁:
    • Properties︰指定用於編譯模組的 SDK 和建構工具版本。
    • Signing︰指定用於簽署應用程式的憑證。
  • Dependencies:列出此模組的程式庫、檔案和模組依附元件。您可以在這個窗格中新增、修改及刪除依附元件。如要進一步瞭解模組依附元件,請參閱「設定建構變化版本」一文。

  • Build Variants︰可讓您為專案設定各種變種版本和建構類型。

    • Flavors︰您可以建立多個建構「變種版本」,每個變種版本分別指定一組設定,例如模組的最低和目標 SDK 版本,以及版本代碼和版本名稱

      舉例來說,您可以定義一個最低 SDK 為 21、目標 SDK 為 29 的變種版本,以及另一個最低 SDK 為 24、目標 SDK 為 33 的變種版本。

    • Build Types︰可讓您建立及修改建構設定,詳情請參閱「設定建構變化版本」一文。根據預設,每個模組都有「偵錯」和「發布」建構類型,您可以視需要定義更多類型。