Hola, soy Luis y hoy les traigo este nuevo post.
Para empezar, tenemos que reemplazar las propiedades en la aplicación, como el nombre del paquete, el nombre de la aplicación, el icono de la aplicación, la URL de la base de datos, el color del tema, etc.
Luego, generar un nuevo archivo de almacén de claves y luego publique el archivo apk. Se convierte en una gran molestia.
Pero bueno, ¿por qué no automatizamos el proceso de construcción? Podemos adquirir las propiedades necesarias para cambiar de una api.
Luego, las propiedades se cambiarán en la aplicación y se publicarán automáticamente. Suena genial, ¿verdad? Bueno, entonces ¿Cómo lo vamos a hacer? Veamos qué podemos hacer.
Para este post, digamos que tenemos 2
empresas con las que tenemos un acuerdo, Google y Facebook. Entonces necesitamos 2
aplicaciones diferentes para ellos, con diferentes propiedades.
En esta parte, mostraré qué modificaciones se necesitan en la aplicación de Android. En la siguiente parte, mostraré cómo modificar las propiedades con un código Python.
Índice
Determine las propiedades
Primero, necesitamos determinar qué propiedades debemos cambiar cada vez. En esta aplicación de muestra, vamos a cambiar lo siguiente:
- Nombre del paquete.
- Nombre de la aplicación.
- Color del tema.
- Icono de la aplicación.
- Archivo de almacén de claves.
Planifique cómo hacerlo antes de hacerlo
Ahora, primero piense en por qué necesitamos cambiar el nombre del paquete. En una aplicación de Android, la aplicación considera la identificación de la aplicación como el nombre del paquete del proyecto.
Puedes comprobar el resultado del método context.getPackageName ()
; en cualquier archivo java para estar seguro. Cambiar la identificación de la aplicación en el nivel del módulo build.gradle
, luego compile y ejecute el proyecto, y la salida de context.getPackageName ()
; también cambiará.
Cada aplicación en Google Play Store debe tener un nombre de paquete separado. Así es como separan las aplicaciones. Es por eso que necesitamos cambiar la identificación de la aplicación para cada aplicación para cambiar el nombre del paquete fácilmente.
Gracias a Google, si no nos dieran la posibilidad de cambiar el nombre del paquete simplemente cambiando la identificación de la aplicación, tendríamos que cambiar los nombres de las carpetas del paquete y el nombre del paquete en todos los archivos java para cambiar el nombre del paquete de todo el proyecto.
Sería una tarea enorme y dolorosa. Pero ahora no tenemos que hacer eso.
La identificación de la aplicación se establece en el nivel del módulo del archivo build.gradle
y podemos obtener esa identificación de aplicación desde cualquier lugar del proyecto usando método context.getPackageName ();
.
Por lo tanto, no necesitamos almacenar la identificación de la aplicación en ningún otro lugar. Pero tenemos que poner el nombre de la aplicación en el file strings.xml
(también conocido como archivo de recursos de cadena), porque configuramos el nombre de la aplicación en el manifiesto desde el archivo de recursos de cadena.
Nuevamente, tenemos que almacenar el color del tema en el archivo colors.xml
(también conocido como archivo de recursos de color). Mira, tenemos que cambiar tantos archivos.
Pero, ¿qué pasa si almacenamos todas estas cosas en un solo lugar y luego usamos las propiedades de ese archivo? ¿Es posible crear recursos de cadena y color de forma dinámica desde otro archivo?
¡Sí lo es! Almacenaremos las propiedades en el gradle.properties
archivar y generar variables de compilación y recursos a partir de ellos. Si no entiende de lo que estoy hablando, no se preocupe. Lo obtendrá cuando lo vea.
Para el icono de la aplicación, no es necesario almacenarlo como un campo. Anularemos el archivo de icono con nuestro nuevo icono. Eso estará bien.
Y, por último, almacenaremos la información del almacén de claves en un .properties
y establezca la configuración de firma en el archivo build.gradle
de nivel de módulo.
Estos son los cambios necesarios en la aplicación. Escribiremos algo de código Python en la siguiente parte para modificar las propiedades desde afuera. Hablaré sobre el plan del código Python más tarde.
Modificar el código de la aplicación
Mantendremos la mayor parte de la información de propiedades en el archivo gradle.properties
y en el archivo build.gradle
de nivel de aplicación.
Agregue las siguientes líneas en el archivo gradle.properties
.
Hemos establecido los valores predeterminados para las propiedades. Tenga en cuenta que no hemos establecido el valor predeterminado para el icono de la aplicación.
En realidad, no es necesario. Sobrescribiremos el icono de la aplicación anterior directamente.
A continuación, abra el nivel de la aplicación expediente build.gradle
. Realice los siguientes cambios.
Archivo build.gradle de nivel de aplicación.
Note que usamos resValue
para crear valor en los recursos. resValue "string", "app_name", APP_NAME
significa que esto creará un campo de recursos de cadena con el nombre app_name
, y su valor será el valor del campo APP_NAME
del expediente gradle.properties
.
Similar, resValue "color", "colorPrimary", THEME_COLOR
crea un campo de recursos de color con nombre colorPrimary
y valor de THEME_COLOR
valor de campo.
Y mira el buildConfigField "String", "APP_NAME", ""$APP_NAME""
crea un campo constante BuildConfig
. Hablaremos de esto en un momento.
Entonces, resValue
crea un nuevo campo de recursos. Por lo tanto, debe eliminar cualquier campo de recurso con el mismo nombre del recurso xmls
.
Quite las siguientes líneas del strings.xml
y colors.xml
. Si no lo hace, obtendrá error Duplicate resources
al crear la aplicación.
strings.xml
colors.xml
Ahora construya el proyecto desde Construir> Reconstruir Proyecto
o Construir> Hacer proyecto
.
Abierto AndroidManifest.xml
y cambie la referencia del icono.
android:icon="@drawable/app_icon" android:roundIcon="@drawable/app_icon"
De hecho, nuestras principales modificaciones en la aplicación están hechas. Ahora tienes que usar las variables de compilación y los recursos que se generan. ¿Cómo usas? Sabes cómo utilizar las variables de recursos.
Si no puedes recordar R.color.colorPrimary
es la forma de conseguir el recurso colorPrimary
.
Borraste el campo colorPrimary
de recursos en el archivo colors.xml
pero gradle
generó automáticamente el campo colorPrimary
, porque lo dijiste en el archivo build.gradle
¿Y recuerdas que hablé del campo constante de BuildConfig
?
Vea el siguiente fragmento:
Aquí usamos BuildConfig.APP_NAME;
para acceder al campo APP_NAME
. Gradle creó este campo porque agregamos buildConfigField "String", "APP_NAME", ""$APP_NAME""
en el nivel de la aplicación expediente build.gradle
.
Aquí está el archivo BuildConfig.java
que es generado automáticamente por gradle
:
El campo APP_NAME
constante, junto con otros campos, se genera automáticamente.
Así que ahora, básicamente, las modificaciones de nuestra aplicación están hechas, vayamos a la parte 2
para ver cómo podemos cambiar las propiedades desde fuera de la aplicación y luego construir la apk
.
Gracias por leer este post.
Añadir comentario