Injetar variáveis de build no manifesto

Caso você precise inserir variáveis no arquivo AndroidManifest.xml que estão definidas no arquivo build.gradle, isso poderá ser feito com a propriedade manifestPlaceholders (link em inglês). Essa propriedade usa um mapa de pares de chave-valor, conforme mostrado aqui:

Groovy

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

Kotlin

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

Você pode inserir um dos marcadores no arquivo de manifesto como um valor de atributo como este:

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

Por padrão, as ferramentas de compilação também fornecem o ID do aplicativo no marcador ${applicationId}. O valor sempre corresponde ao ID do aplicativo final para o build atual (incluindo mudanças por variantes de compilação). Isso é útil quando você quer usar um namespace exclusivo para identificadores, como uma ação da intent, mesmo entre suas variantes de compilação.

Por exemplo, se o arquivo build.gradle tiver esta aparência:

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"
        }
    }
}

Então, você poderá inserir o ID do aplicativo no manifesto da seguinte forma:

<intent-filter ... >
    <action android:name="${applicationId}.TRANSMOGRIFY" />
    ...
</intent-filter>

E o resultado do manifesto quando você criar a variação "free" do produto será este:

<intent-filter ... >
   <action android:name="com.example.myapp.free.TRANSMOGRIFY" />
    ...
</intent-filter>

Para ver mais informações, leia Definir o ID do aplicativo.