Este artículo está disponible como video y está vinculado al final de la publicación.
Android App Bundle es el formato de publicación de aplicaciones de Android en el mundo moderno del desarrollo de Android.
Las aplicaciones que lo usan han visto un archivo promedio 15% de ahorro de tamaño en los dispositivos del usuario en comparación con una aplicación universal. Puede aprovechar estos ahorros y versiones simplificadas sin tener que realizar ningún cambio en el código de su aplicación, simplemente cambiando a un paquete de aplicaciones de Android.
Para obtener más información sobre cómo crear su primer paquete de aplicaciones de Android, lea la publicación anterior de esta serie.
Pero puede tomar el asunto en sus propias manos y modular y optimizar aún más su instalación utilizando Play Feature Delivery.
Una aplicación modular creará límites claramente definidos entre partes separadas de su aplicación. Esto tiene ventajas en varios niveles.
En muchos casos, solo necesita reconstruir partes de su aplicación. Esto le permite reducir los tiempos de construcción. Con tiempos de construcción más cortos y límites claros entre módulos, es probable que mejore la velocidad de diseño.
Además, en Google Play Store lo hemos visto
Reducir el tamaño de descarga inicial de una aplicación en 3 MB puede generar un aumento en las instalaciones de aproximadamente un 1%.
En esta publicación, aprenderá sobre las funciones de los paquetes de aplicaciones de Android que permiten la publicación de funciones de Play. Estas funciones le permiten reducir aún más el tamaño de su aplicación. Y le presentaré las API que puede usar para proporcionar funcionalidad condicionalmente o bajo demanda, así como más opciones de configuración.
Puedes usar Android Studio para guiarte a través del flujo de «Nuevo formulario». Pero miraremos debajo del capó cuando te dejes llevar y cómo puedes modificar tu configuración más adelante.
Cuando comienza a modularizar una aplicación utilizando módulos de funciones, su línea de base es instalar los módulos de tiempo. Aquí ya puede obtener beneficios como una mayor velocidad de construcción y velocidad de diseño.
La configuración básica de un módulo que se está instalando tiene este aspecto:
Las partes más importantes son el espacio de nombres de la distribución, xmlns:dist="http://schemas.android.com/apk/distribution"
y el delivery
atributo de configuración para establecer install-time
.
Un módulo configurado de esta manera se instalará en el dispositivo cuando se solicite la instalación inicial.
Por defecto cada install-time
el módulo se fusionará con el módulo base, que los crea no removible. Si desea poder eliminar un módulo que se está instalando más tarde, todo lo que tiene que hacer es configurar el archivo removable
el valor del atributo a true
.
La desinstalación de módulos puede ser útil para tutoriales, flujos de registro u otros módulos de gran tamaño que desea tener a mano durante la configuración inicial, pero que probablemente ya no serán útiles una vez que se complete el flujo.
Proporcionamos la API de PlayCore para requerir que los módulos se instalen y desinstalen, y hablaré de eso más adelante en esta publicación.
Nota para dispositivos anteriores a Android Lollipop 5.0
El mecanismo para instalar el módulo de funciones requiere que los dispositivos se ejecuten en Android Lollipop 5.0 o posterior. Para versiones anteriores de Android, el contenido del módulo de funciones se puede colocar en el apk básico. Para habilitarlo explícitamente, debe establecer el valor de fusión de inclusión en verdadero dentro de la etiqueta del módulo.
<dist:fusing dist:include=”true”>
Además de la entrega del tiempo de instalación, la entrega condicional es otra forma de solicitar un módulo de funciones. La instalación puede depender del nivel de API del dispositivo, el país del usuario o las capacidades de un dispositivo.
Así es como puede verse un AndroidManifest completamente configurado.
No es necesario establecer todas estas condiciones y es poco probable que deba utilizarlas todas en una forma. Repasemos paso a paso.
Para configurar la entrega condicional, agregue el dist:conditions
etiqueta.
A continuación, puede declarar límites de nivel de API inferior y superior utilizando min-api
es max-api
.
Son útiles cuando tiene un módulo específico para ciertos niveles de API.
Además, cada usa la función El elemento de AndroidManifest se puede utilizar como condición de instalación. Utilizando la device-feature
atributo, puede asegurarse de que se proporcione una función a un usuario solo cuando su dispositivo tenga las capacidades técnicas para usar una función.
Si bien, de forma predeterminada, todos los usuarios pueden descargar todas las funciones siempre que haya una aplicación disponible, puede optar por que algunas funciones solo estén disponibles para determinados países. Esta es una excelente manera de ubicar su aplicación.
Para hacer esto, agregue el archivo user-countries
etiqueta y luego el código de país de dos letras para un país determinado.
Cuando quieres funcionalidad por no estar disponible en un conjunto específico de países, asegúrese de configurar dist:exclude=”false”
. Si quieres una característica estar disponible solo establecer el valor en true
.
A veces, todo lo que tiene es un gran activo que desea proporcionar a los usuarios, como un modelo de TensorFlow. En los casos en los que no tenga un código asociado con un módulo de funciones, asegúrese de configurar hasCode
para false
en el archivo AndroidManifest del módulo.
<application android:hasCode="false" />
Esto le permitirá al compilador saber no se debe crear ningún archivo dex.
Si no establece hasCode en falso cuando no hay código en un módulo, se lanzarán excepciones en tiempo de ejecución.
Para tener en sus manos el tiempo exacto de instalación, puede utilizar instalación bajo pedido. Esto significa que puede llamar a una API para instalar el módulo. después la aplicación se ha descargado e instalado en el dispositivo del usuario.
El uso de instalar bajo demanda ahorra tiempo y tamaño de la descarga inicial.
En AndroidManifest, deberá configurar la opción de entrega en on-demand
. Luego, puede usar la API de PlayCore para descargar, instalar y desinstalar módulos dentro del flujo de su aplicación.
Le recomiendo que consulte la muestra de PlayCoreKtx en GitHub y vea el video vinculado a continuación para obtener una introducción detallada a la sección de entrega bajo demanda de Play Feature Delivery.
¡Buena modularización!