directorio
I. Introducción
Debido a la situación del mercado de la distribución de aplicaciones para Android doméstica, cuando publicamos APP, en general, necesita generar múltiples paquetes de canales, subido a un diferentes mercados de aplicaciones. Estos canales requieren paquetes contienen diferentes fuentes de información, o la interacción de APP y la presentación de datos de antecedentes, que aportará los respectivos canales de información. De esta manera, podremos a los principales datos estadísticos del número de descargas para cada mercado de la distribución, el número de usuarios.
Dos, Gradle multicanal paquete
1, la práctica general
En la práctica general en el AndroidManifest
aumento del número de canales:
<meta-data android:name="SDK_CHANNEL" android:value="Channel ID" />
Para cambiar los ajustes de forma manual, y después lleno de nuevo. Por lo tanto, la carga de trabajo repetitivo aumenta considerablemente. Por lo que habrá paquete multi-canal en Android Studio.
2, Gradle multicanal paquete
En este caso, Android Gradle proporciona una forma muy conveniente para nosotros para reemplazar el contenido del archivo AndroidManifest, que es manifestPlaceholder
, Manifest
marcadores de posición.
ManifestPlaceholders
Es ProductFlavor
un tipo de propiedad es un mapa, por lo que podemos configurar muchos marcadores de posición al mismo tiempo. Aquí tenemos que demostrar el uso de manifestPlaceholders por este ejemplo el número de canal de configuración.
En build.gradle
el android
complemento el siguiente código en la etiqueta:
android {
...
productFlavors{
google{
manifestPlaceholders = [
SDKChannel: "google",
app_name : "@string/app_name",
]
}
baidu{
manifestPlaceholders = [
SDKChannel: "baidu",
app_name : "@string/app_name",
]
}
}
}
En el AndroidManifest.xml
código del archivo es la siguiente:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sdk">
<application ...
android:label="${app_name}">
<meta-data
android:name="SDKChannel"
android:value="${SDKChannel}" />
...
</application>
</manifest>
A continuación se echa un vistazo a los efectos de la manada.
Si el número del canal, a continuación, una gran cantidad de aplicaciones, no podemos configurar uno por uno, demasiado cansado, el mantenimiento es un problema, sino que también pueden ser modificados por medio de un volumen productFlavors iterativo.
android {
...
productFlavors{
google{
}
baidu{
}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [SDKChannel: name, app_name : "@string/app_name"]
}
}
Iteramos a través de toda la función de cada ProductFlavor, a continuación, poner su nombre como nombre del canal, es muy conveniente. Aquí no se puede simplemente hacer esto una cosa, cuando se atraviesa ProductFlavor, se puede hacer un montón de que quieres hacer, este es el lugar Gradle flexibles, cuando el programa de escritura del guión.
Android ofrece Gradle aplicación de modo manifestPlaceholders marcador de posición, de manera que podemos reemplazar cualquier formato de archivo de marcador de posición AndroidManifest $ {var}. Así que sus escenarios de uso nombre no se limita a éste canal, por ejemplo, así como la autorización de autenticación ContentProvider, u otra meta información de configuración dinámica. El uso flexible del que nos puede ayudar a hacer un montón de cosas, vamos a construir más flexible y conveniente.