本頁說明模組層級 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 中建立新專案時
Studio,applicationId
是
系統會自動指派您在設定期間選擇的套件名稱。個人中心
從技術上來說
這兩項資源在技術上可以直接獨立切換
。
以下是設定應用程式 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 使用
套件名稱
產生的 R
和 BuildConfig
類別。
命名空間是由模組的 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 平台會用來識別您的應用程式。
變更測試用命名空間
androidTest
和 test
來源集的預設命名空間為主要命名空間
命名空間,並在結尾加上 .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" ... }
注意:請勿在上方設定 testNamespace
和
namespace
設為相同的值,否則為命名空間
會發生衝突。
如要進一步瞭解如何測試,請參閱「在 Android 上測試應用程式」一文。