このページでは、モジュール レベルの build.gradle.kts
で便利なアプリ設定について説明します。
表示されます。また、
build.gradle.kts
ファイルにアクセスして、以下に関する詳細をご確認ください。
- 異なるビルド構成用にアプリケーション ID を変更する。
- 名前空間をアプリケーション ID とは独立にかつ安全に調整する。
アプリケーション ID の設定
すべての Android アプリには、「com.example.myapp」など、Java または Kotlin パッケージ名に似た一意のアプリケーション ID があります。この 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 の命名規則はもう少し厳密になっています。
- 2 つ以上のセグメント(1 つ以上のドット)が必要
- 各セグメントは文字で始まる必要がある
- 使用できる文字は英数字と下線のみ(a~z、A~Z、0~9、_)
Android Studio で新しいプロジェクトを作成した場合、applicationId
には、セットアップ時に選択したパッケージ名が自動的に割り当てられます。技術的には、その後で 2 つのプロパティを独立に切り替えることは可能ですが、おすすめはしません。
アプリケーション ID を設定する際は、次のようにすることをおすすめします。
- アプリケーション ID は名前空間と同じにしておきます。2 つのプロパティの違いに多少混乱する可能性がありますが、同じままにしておけば心配はありません。
- アプリの公開後は、アプリケーション ID を変更しないでください。変更すると、Google Play ストアでそれ以降のアップロードが新しいアプリとして扱われます。
- アプリケーション ID を明示的に定義します。
applicationId
プロパティを使用してアプリケーション ID を明示的に定義しなかった場合、自動的に名前空間と同じ値が割り当てられます。つまり、名前空間を変更するとアプリケーション ID が変更されるという通常は望ましくないことが起こります。
テスト用にアプリケーション ID を変更する
デフォルトでは、ビルドツールは、指定されたビルド バリアントのアプリケーション ID の末尾に .test
を付加したものを使用して、インストゥルメンテーション テスト APK にアプリケーション ID を適用します。たとえば、
com.example.myapp.free
個のビルド バリアント
アプリケーション ID がある
com.example.myapp.free.test
。
必須ではありませんが、defaultConfig
または productFlavor
ブロックで testApplicationId
プロパティを定義することにより、アプリケーション ID を変更できます。
名前空間を設定する
どの Android モジュールにも名前空間があり、その名前空間は生成される R
クラスと BuildConfig
クラスの Kotlin または Java パッケージ名として使用されます。
名前空間は、次のコード スニペットに示すように、モジュールの build.gradle.kts
ファイル内の namespace
プロパティで定義されます。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
プロパティに設定する名前は、アクティビティと他のアプリコードを配置する、プロジェクトのベース パッケージ名に常に一致させる必要があります。他のサブパッケージをプロジェクトに含めることはできますが、それらのファイルでは namespace
プロパティの名前空間を使用して R
クラスをインポートする必要が生じます。
簡単なワークフローにするため、デフォルトのとおり、名前空間をアプリケーション ID と同じにしてください。
名前空間を変更する
ほとんどの場合は、デフォルトのとおり、名前空間とアプリケーション ID は同じにすることをおすすめします。ただし、コードを再編成する場合や、名前空間の競合を避ける必要がある場合には、いずれかの時点で名前空間を変更する必要があります。
このような場合、アプリケーション ID とは独立に(モジュールの build.gradle.kts
ファイル内の namespace
プロパティを更新して)名前空間を変更します。その前に、アプリケーション 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 でのアプリのテストをご覧ください。