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:
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:
android {
defaultConfig {
applicationId "com.example.myapp"
}
productFlavors {
free {
applicationIdSuffix ".free"
}
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.