設定應用程式模組

本頁說明模組層級 build.gradle.kts 中的實用應用程式設定 檔案。除了概略介紹 build.gradle.kts 檔案取得以下操作說明:

  • 變更不同建構設定的應用程式 ID。
  • 根據應用程式 ID 安全地調整命名空間。

設定應用程式 ID

每個 Android 應用程式都有專屬的應用程式 ID,看起來像 Java 或 Kotlin 套件 名稱,例如 com.example.myapp。這組 ID 可在 請前往 Google Play 商店瀏覽。

應用程式 ID 是由模組的 applicationId 屬性定義 build.gradle.kts 檔案 (如下所示)。更新 applicationId 的值 方法是將 com.example.myapp 換成 應用程式的 ID:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Groovy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

雖然應用程式 ID 看起來類似傳統 Kotlin 或 Java 套件 應用程式 ID 的命名規則 比較嚴格:

  • 必須包含至少兩個區隔 (一或多個點)。
  • 每個區隔的開頭都必須是英文字母。
  • 所有字元都必須為英數字元或底線 [a-zA-Z0-9_]。

在 Android 中建立新專案時 StudioapplicationId 是 系統會自動指派您在設定期間選擇的套件名稱。個人中心 從技術上來說 這兩項資源在技術上可以直接獨立切換 。

以下是設定應用程式 ID 的建議做法:

  • 讓應用程式 ID 與命名空間相同。不重複 兩個屬性可能會有混淆,但只要保持不變 不用擔心
  • 發布應用程式後,請勿變更應用程式 ID。如有變更 Google Play 商店會將後續上傳的資料視為新的應用程式。
  • 明確定義應用程式 ID。如果應用程式 ID 未明確 使用 applicationId 屬性定義後,系統會自動採用相同的 做為命名空間也就是說,變更命名空間 這通常不是您想要的內容
,瞭解如何調查及移除這項存取權。

變更測試用應用程式 ID

根據預設,建構工具會將應用程式 ID 套用至 檢測設備測試 APK 會使用指定建構變數的應用程式 ID,後面加上 .test。舉例來說, com.example.myapp.free 個建構變數 含有應用程式 ID com.example.myapp.free.test

雖然這應該並非必要,但您可以透過 在 defaultConfig 中定義 testApplicationId 屬性 productFlavor 區塊。

設定命名空間

每個 Android 模組都有一個命名空間,做為 Kotlin 或 Java 使用 套件名稱 產生的 RBuildConfig 類別。

命名空間是由模組的 namespace 屬性所定義 build.gradle.kts 檔案,如以下程式碼片段所示。namespace 一開始會設為您選擇的套件名稱 建立專案

Kotlin

android {
    namespace = "com.example.myapp"
    ...
}

Groovy

android {
    namespace "com.example.myapp"
    ...
}

將應用程式建構成最終的應用程式套件 (APK) 時,Android 建構工具會使用命名空間做為應用程式產生的 R 命名空間 類別,可用來存取 應用程式資源。 例如,在上述建構檔案中,R 類別是在 com.example.myapp.R

您為 build.gradle.kts 檔案的 namespace 屬性設定的名稱 一律必須與專案的基本套件名稱相符,因此, 活動和其他應用程式碼您可以在 但這些檔案必須使用R 來自 namespace 屬性的命名空間

為了簡化工作流程,請確保命名空間與 應用程式 ID (預設是應用程式 ID)

變更命名空間

在大部分情況下,您應將命名空間和應用程式 ID 與預設值相同然而,您可能需要將 可以調整程式碼的結構,或是避免命名空間衝突。

在這些情況下,藉由更新 模組 build.gradle.kts 檔案中的 namespace 屬性,與 應用程式 ID開始連結前,請確認您的應用程式 ID 為 因此變更命名空間並不會同時變更 應用程式 ID如要進一步瞭解命名空間對 應用程式 ID,請參閱「設定應用程式 ID」。

如果 namespace 有不同的名稱 而 Gradle applicationId 則是建構工具會複製 並在建構作業結束時,將應用程式 ID 新增至應用程式的最終資訊清單檔案。 因此,如果您在建構完成後檢查 AndroidManifest.xml 檔案 package 屬性已設為 應用程式 ID合併資訊清單的 package 屬性是指 實際上,Google Play 商店和 Android 平台會用來識別您的應用程式。

變更測試用命名空間

androidTesttest 來源集的預設命名空間為主要命名空間 命名空間,並在結尾加上 .test。舉例來說, build.gradle 檔案中的 namespace 屬性是 com.example.myapp, 系統預設會將測試命名空間設為 com.example.myapp.test。 如要變更測試用命名空間,請使用 testNamespace敬上 屬性,如以下程式碼片段所示:

Kotlin

android {
    namespace = "com.example.myapp"
    testNamespace = "com.example.mytestapp"
    ...
}

Groovy

android {
    namespace "com.example.myapp"
    testNamespace "com.example.mytestapp"
    ...
}

注意:請勿在上方設定 testNamespacenamespace 設為相同的值,否則為命名空間 會發生衝突。

如要進一步瞭解如何測試,請參閱「在 Android 上測試應用程式」一文。