build.gradle
ファイルで定義されている変数を AndroidManifest.xml
ファイルに追加する必要がある場合は、manifestPlaceholders
プロパティを使用して追加できます。このプロパティは、以下に示すように Key-Value ペアのマップを受け取ります。
Groovy
android { defaultConfig { manifestPlaceholders = [hostName:"www.example.com"] } ... }
Kotlin
android { defaultConfig { manifestPlaceholders["hostName"] = "www.example.com" } ... }
さらに、プレースホルダのいずれかを次のような属性値としてマニフェスト ファイルに追加できます。
<intent-filter ... >
<data android:scheme="https" android:host="${hostName}" ... />
...
</intent-filter>
デフォルトでは、アプリのアプリケーション ID もビルドツールにより ${applicationId}
プレースホルダに設定されます。この値は、現在のビルドの最終的なアプリケーション ID(ビルド バリアントによる変更を含む)と常に一致します。
これは、ビルド バリアント間でもインテントのアクションなどの識別子に一意の名前空間を使用する場合に役立ちます。
たとえば、build.gradle
ファイルが次のようであったとします。
Groovy
android { defaultConfig { applicationId "com.example.myapp" } productFlavors { free { applicationIdSuffix ".free" } pro { applicationIdSuffix ".pro" } } }
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" } productFlavors { create("free") { applicationIdSuffix = ".free" } create("pro") { applicationIdSuffix = ".pro" } } }
この場合、次のようにアプリケーション ID をマニフェストに追加できます。
<intent-filter ... >
<action android:name="${applicationId}.TRANSMOGRIFY" />
...
</intent-filter>
また、「free」プロダクト フレーバーをビルドした場合のマニフェストは次のようになります。
<intent-filter ... >
<action android:name="com.example.myapp.free.TRANSMOGRIFY" />
...
</intent-filter>
詳しくは、アプリケーション ID の設定をご覧ください。