Android Gradle paquetes multi-canal, la configuración dinámica NombreApl

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 AndroidManifestaumento 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, Manifestmarcadores de posición.

ManifestPlaceholdersEs ProductFlavorun 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.gradleel androidcomplemento 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.xmlcó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.
Aquí Insertar imagen DescripciónAquí Insertar imagen Descripción
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.

Publicados 100 artículos originales · ganado elogios 45 · vistas 640 000 +

Supongo que te gusta

Origin blog.csdn.net/wangzhongshun/article/details/104844228
Recomendado
Clasificación