Use Build Variants (Native y React Native) para configurar diferentes entornos en Android Studio | Autor: Chloe McMullen | easyfundraid.org.uk | Noviembre de 2021
Como desarrolladores, todos sabemos que normalmente existe una forma fácil de hacer algo y una forma correcta de hacer algo. He visto algunas implementaciones locas de intercambio entre entornos, así como algunas implementaciones simples. Estoy aquí para decirte que configurar diferentes entornos para tu proyecto de Android (afortunadamente) es fácil. De hecho, Android Studio también facilita el cambio entre código de producción altamente seguro y código de depuración menos seguro, ¡pero este es el tema de otro día!
Aunque incluí React Native en esta guía, si su código nativo es particularmente simple o sigue el mismo proceso en producción y puesta en escena, es posible que ni siquiera necesite dividir su entorno Android. En easyfundraid, lo necesitamos para intercambiar las claves API requeridas por la base de código local.Solo sé que no es Incorrecto Utilice la misma configuración para dos entornos que utilicen la misma lógica y claves. Pero incluso en este caso, es útil utilizar Build Variants para permitir que se instalen en el dispositivo las versiones de ensayo y de producción de la misma aplicación.
Si desea un tutorial de imágenes claras, desplácese hacia abajo hasta «Comenzar». Si desea aprender a usarlos, desplácese hacia abajo hasta «Ejemplo para cambiar». Esto es TLDR:
- Ingrese su proyecto y asegúrese de que su gradle esté sincronizado.
File > Project Structure
. escogerBuild Variants
Cristal.escogerBuild Flavors
Etiqueta.- Haga clic en
+
Y eligeAdd Flavor Dimension
. Nombre este atributo que distinguirá (p. Ej.env
). - Haga clic en
+
Y eligeAdd Product Flavor
Nombre el entorno al que apuntará. Haga esto para todos los entornos (como ensayo y producción). - Edite cualquier otra configuración dentro y haga clic en
OK
despues de terminar. - Vuelve a sincronizar tu gradle.Ahora debería ver dos opciones
Build Variants
Etiqueta.
Abra su proyecto en Android Studio. Para las aplicaciones nativas de Android, esto abrirá toda la carpeta del proyecto.Para las aplicaciones React Native, esto abrirá su android
carpeta.Si tiene problemas para abrir el proyecto sin errores (un problema sorprendentemente común), intente File > Invalidate Caches / Restart
luego haga clic en Invalidate and Restart
Si falla, deberá recurrir a StackOverflow.
Suponiendo que todo salió bien hasta ahora (no siempre), debería poder sincronizar sus archivos gradle y comenzar a usarlos.
Abierto File > Project Structure
, O presione Control + Alt + Shift + S
En Windows o Command + ;
En Mac.Cuando aparezca el cuadro de diálogo de estructura del proyecto, seleccione Build Variants
Cristal.
Las variantes de compilación le permiten controlar cómo se compila su aplicación.dentro Build Types
Tab, ha creado dos: release
con debug
Esto le permite controlar si la aplicación debe construirse de diferentes formas en función de este estado, o si debe exponer características que de otro modo no estarían disponibles.Sin embargo, para permitir diferentes entornos, las pestañas que nos interesan son Flavors
Etiqueta.
Agregar una nueva Flavor Dimension
Mantenga el tipo de sabor que distinguirá.Para los propósitos de esta guía, es environments
(o env
Abreviado).A continuación, elija Add Product Flavor
Y para crear un sabor para el escenario y la producción.
Revise las diferentes configuraciones disponibles y decida si desea agregar configuraciones adicionales aquí.Por ejemplo, quiero que mi aplicación de ensayo sea .staging
Así que lo puse en el escenario Application ID Suffix
Esto me permite descargar tanto la versión de prueba como la versión de producción de la aplicación en el mismo dispositivo Android sin sobrescribir entre sí.
Después de completar la configuración (puede cambiarla en cualquier momento más adelante), haga clic en Apply
o OK
. Necesita sincronizar sus archivos Gradle nuevamente porque esto aplicará los cambios a build.gradle (:app)
documento.
flavorDimensions 'env'
productFlavors
staging
dimension 'env'
applicationIdSuffix '.staging'
prod
dimension 'env'
También deberías tener dos nuevas opciones Build Variants
Panel (se abre en la esquina inferior izquierda de la ventana de Android Studio). Puede usarlo para intercambiar entre diferentes variantes.
Si usa React Native, es posible que observe react-native run-android
Ya no es valido. Para resolver este problema, solo necesita agregar la variante que desea construir y cualquier sufijo que tenga ahora:
react-native run-android --variant StagingDebug --appIdSuffix staging
Da da! El proceso está completo y ahora puede usarlos para distinguir lo que desee.
Icono de aplicación
Por lo tanto, ahora tiene la aplicación temporal y la aplicación de producción instaladas en el mismo dispositivo. El problema es que tienen el mismo icono, entonces, ¿cómo puedes distinguirlos?Puedes añadir Staging
Hasta el final de su nombre, pero ha sido truncado por puntos suspensivos, así que a menos que lo ponga al principio (¡puede!), No lo verá. En la recaudación de fondos fácil, utilizamos diferentes iconos de aplicaciones para distinguir.
Botón derecho del ratón app > res
Carpeta y agregue una nueva Image Asset
.
Esto mostrará un cuadro de diálogo para agregar un nuevo recurso de imagen. Para el propósito de esta demostración, elegí dejar que mi aplicación de ensayo use la función de texto, pero en su lugar, puede hacer una imagen de su elección.Una vez que esté satisfecho de que sus activos se muestran de la forma deseada, haga clic en Next
.
De Res Directory
Menú desplegable para elegir el estilo adecuado para su entorno escénico.luego haga clic en Finish
.
Ahora, cuando reconstruya la aplicación, debería mostrar el nuevo ícono en el entorno donde lo actualizó.
Datos únicos para el medio ambiente
¿Necesita cambiar entre datos (por ejemplo, ID de API) según el entorno al que apunta? ¡No hay problema!
Abre tu build.gradle (:app)
Archiva y encuentra la ubicación que define el sabor del producto. A continuación, agregue una línea de código a cada sabor para indicar el valor que debe usar, en el siguiente formato:
buildConfigField "data type", "config name", 'config value'
Por ejemplo, mis recursos de API podrían verse así:
flavorDimensions 'env'
productFlavors
staging
dimension 'env'
applicationIdSuffix '.staging'
buildConfigField "String", "API_ID", '"API_ID/staging"'
prod
dimension 'env'
buildConfigField "String", "API_ID", '"API_ID/production"'
Tenga en cuenta que para los campos de cadena, necesita Cerco doble valor: '"value"'
.
Una vez que esté satisfecho con estos valores, sincronice su gradle y Build > Make Project
. Ahora puede usar el campo BuildConfig para acceder a este campo en la biblioteca de código nativo de Android: