Google Play Instant permite a los usuarios interactuar con tu app sin necesidad de instalar APKs en sus dispositivos. En cambio, pueden experimentar la app a través del botón "Probar ahora" en Google Play Store o una URL que crees. Esta forma de entregar contenido facilita el aumento de la interacción con tu app.
Puedes habilitar instantáneamente una función solo si también habilitas de manera instantánea el módulo base de la app. Esto se debe a que, si un usuario desea probar uno de los módulos de funciones instantáneas de la app, su dispositivo también deberá descargar el módulo base de la app para obtener códigos y recursos comunes. Ten en cuenta que, para que sea compatible con Google Play Instant, la descarga del módulo base y la función debe cumplir varios criterios:
- Tamaño máximo: El tamaño combinado de tu módulo base instantáneo y el módulo de funciones habilitadas instantáneamente debe ser de 10 MB como máximo. Para obtener más información, lee Cómo habilitar experiencias instantáneas reduciendo el tamaño de la app o el juego.
- Actividad en segundo plano: Un módulo habilitado de forma instantánea no puede usar servicios en segundo plano. Además, este módulo no puede enviar notificaciones cuando se ejecuta en segundo plano.
Si creas un módulo de funciones instantáneas con Android Studio 3.5 o versiones posteriores, como se describe en esta sección, el IDE habilita instantánea y automáticamente tanto el módulo base como el módulo de funciones y se incluye lo siguiente en el manifiesto de cada módulo:
<manifest xmlns:dist="http://schemas.android.com/apk/distribution"
... >
<dist:module dist:instant="true" />
...
Además, cuando descargas la app y la instalas, los módulos de funciones instantáneas se descargan y se instalan automáticamente con el APK base de la app. Por lo tanto, el IDE también incluye lo siguiente en el módulo de funciones instantáneas.
<dist:module ...>
<dist:delivery>
<dist:install-time />
</dist:delivery>
</dist:module>
Este comportamiento significa que cuando configuras dist:instant="true"
, no puedes incluir también <dist:on-demand />
. Sin embargo, puedes solicitar módulos habilitados instantáneamente on demand dentro de tu experiencia instantánea usando la biblioteca Play Feature Delivery.
Cómo configurar un módulo nuevo para entrega instantánea
Para agregar un módulo de funciones instantáneas a tu proyecto de app con Android Studio, sigue estos pasos:
- Si aún no lo hiciste, abre tu proyecto de app en el IDE.
- Selecciona File > New > New Module en la barra de menú.
- En el diálogo Create New Module, selecciona Instant Dynamic Feature Module y haz clic en Next.
En la sección Configure your new module, haz lo siguiente:
- En el menú desplegable Base application module, selecciona el módulo base de tu app.
- En Module name, especifica el nombre del módulo. El IDE usa ese nombre para identificar el módulo como un subproyecto de Gradle en tu archivo de configuración de Gradle. Cuando compilas tu paquete de aplicación, Gradle usa el último elemento del nombre del subproyecto para insertar el atributo
<manifest split>
en el manifiesto del módulo de funciones. - En Package name, especifica el nombre de paquete del módulo. De forma predeterminada, Android Studio sugiere un nombre de paquete que combina el nombre del paquete raíz del módulo básico y el nombre del módulo que especificaste en el paso anterior.
- En Minimum API level, elige el nivel mínimo de API que admitirá el módulo. Este valor debe coincidir con el del módulo base.
Especifica el título del módulo en un máximo de 50 caracteres. La plataforma usa este título para identificar el módulo ante los usuarios. Por esta razón, el módulo base de la app debe incluir el título del módulo como un recurso de strings, que se puede traducir. Cuando se crea el módulo con Android Studio, el IDE agrega el recurso de cadenas al módulo básico y, luego, inserta la siguiente entrada en el manifiesto del módulo de funciones:
<dist:module ... dist:title="@string/feature_title"> </dist:module>
Marca la casilla junto a Fusing si deseas que ese módulo esté disponible para los dispositivos que ejecutan Android 4.4 (nivel de API 20) y versiones anteriores y se lo incluya en APK múltiples. Android Studio inserta lo siguiente en el manifiesto del módulo para reflejar tu elección.
<dist:module> <dist:fusing dist:include="true" /> </dist:module>
Haz clic en Finish.
Cuando Android Studio termine de crear tu módulo, abre el panel Project y revisa el contenido (selecciona View > Tool Windows > Project en la barra de menú). El código, los recursos y la organización predeterminados deben ser similares a los del módulo de app estándar.
Después de implementar una función para la descarga on demand, obtén información para solicitarla con la biblioteca de Play Feature Delivery.
Cómo implementar la app
Mientras desarrollas una app compatible con módulos de funciones, puedes implementarla en un dispositivo conectado como lo harías normalmente seleccionando Run > Run en la barra de menú (o haciendo clic en Run en la barra de herramientas).
Si el proyecto de tu app incluye uno o más módulos de funciones, puedes elegir qué funciones incluir cuando implementas tu app si modificas tu configuración de ejecución y depuración existente de la siguiente manera:
- Selecciona Run > Edit Configurations en la barra de menú.
- En el panel izquierdo del cuadro de diálogo Run/Debug Configurations, elige la configuración de Android App que desees.
- En Dynamic features to deploy, en la pestaña General, marca la casilla junto a cada módulo de funciones dinámicas que desees incluir cuando implementes la app.
- Haz clic en OK.
De forma predeterminada, Android Studio no implementa tus módulos habilitados instantáneamente como una experiencia instantánea ni utiliza paquetes de aplicaciones para implementar tu app. En cambio, el IDE crea e instala en tu dispositivo los APK que están optimizados para la velocidad de implementación, en lugar del tamaño del APK. Si quieres configurar Android Studio para que compile e implemente APK y experiencias instantáneas desde un paquete de aplicación, modifica la configuración de ejecución y depuración.