Cómo configurar la entrega instantánea

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.

Solo puedes habilitar instantáneamente una función si también habilitas instantáneamente el módulo base de tu app. Esto se debe a que, si un usuario quiere experimentar uno de los módulos de funciones habilitadas instantáneamente de tu app, su dispositivo también debe descargar el módulo base de la app para obtener el código y los 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:

Si creas un módulo de funciones habilitado instantáneamente con Android Studio 3.5 o una versión posterior, como se describe en esta sección, el IDE habilita instantáneamente el módulo base y el de funciones de forma automática, ya que 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 se descarga y se instala la app, los módulos de funciones habilitadas instantáneamente 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:

  1. Si aún no lo hiciste, abre tu proyecto de app en el IDE.
  2. Selecciona File > New > New Module en la barra de menú.
  3. En el diálogo Create New Module, selecciona Instant Dynamic Feature Module y haz clic en Next.
  4. En la sección Configure your new module, haz lo siguiente:

    1. En el menú desplegable Base application module, selecciona el módulo básico de tu app.
    2. 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.
    3. 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.
    4. 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.
    5. 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 básico de la app debe incluir el título del módulo como un recurso de cadenas, que se puede traducir. Cuando se crea el módulo con Android Studio, el IDE agrega el recurso de cadenas al módulo base y, luego, inserta la siguiente entrada en el manifiesto del módulo de funciones:

      <dist:module
          ...
          dist:title="@string/feature_title">
      </dist:module>
      
    6. 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 introduce lo siguiente en el manifiesto del módulo para reflejar tu elección:

      <dist:module>
          <dist:fusing dist:include="true" />
      </dist:module>
      
  5. 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:

  1. Selecciona Run > Edit Configurations en la barra de menú.
  2. En el panel izquierdo del cuadro de diálogo Run/Debug Configurations, elige la configuración de Android App que desees.
  3. 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.
  4. 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.