マニフェストへのビルド変数の追加

build.gradle ファイルで定義されている変数を AndroidManifest.xml ファイルに追加する必要がある場合は、manifestPlaceholders プロパティを使用して追加できます。このプロパティは、以下に示すように Key-Value ペアのマップを受け取ります。

android {
        defaultConfig {
            manifestPlaceholders = [hostName:"www.example.com"]
        }
        ...
    }
    

さらに、プレースホルダのいずれかを次のような属性値としてマニフェスト ファイルに追加できます。

<intent-filter ... >
        <data android:scheme="http" android:host="${hostName}" ... />
        ...
    </intent-filter>
    

ビルドツールではデフォルトで、アプリのアプリケーション ID${applicationId} プレースホルダで指定することもできます。この値は、現在のビルドの最終的なアプリケーション ID(ビルド バリアントによる変更を含む)と常に一致します。これは、ビルド バリアント同士でさえ、ID の一意の名前空間(インテント アクションなど)を使用する場合に役立ちます。

たとえば、次のような build.gradle ファイルの場合:

android {
        defaultConfig {
            applicationId "com.example.myapp"
        }
        productFlavors {
            free {
                applicationIdSuffix ".free"
            }
            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 の設定をご覧ください。