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.