The Android Developer Challenge is back! Submit your idea before December 2.

Cómo insertar variables de compilación en el manifiesto

Si necesitas insertar variables en el archivo AndroidManifest.xml que se definen en tu archivo build.gradle, puedes hacerlo por medio de la propiedad manifestPlaceholders. Esta propiedad toma una asignación de pares clave-valor, como se muestra a continuación:

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

Luego, puedes insertar uno de los marcadores de posición en el archivo de manifiesto como un valor de atributo de la siguiente manera:

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

De forma predeterminada, las herramientas de compilación también proporcionan el ID de aplicación de tu app en el marcador de posición ${applicationId}. El valor siempre coincide con el ID de app final de la compilación actual (incluidas las modificaciones que realizan las variables de compilación), lo que resulta útil cuando quieres usar un espacio de nombres único para los identificadores como una acción de intent, incluso entre tus variantes de compilación.

Por ejemplo, si tu archivo build.gradle tiene el siguiente aspecto:

android {
        defaultConfig {
            applicationId "com.example.myapp"
        }
        productFlavors {
            free {
                applicationIdSuffix ".free"
            }
            pro {
                applicationIdSuffix ".pro"
            }
        }
    }
    

Entonces, podrás insertar el ID de app en tu manifiesto de la siguiente manera:

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

Y el resultado del manifiesto una vez que compilaste el tipo de producto "gratuito" será el siguiente:

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

Para obtener más información, lee Cómo configurar el ID de aplicación.