Cómo configurar la entrega a pedido

Los módulos de funciones te permiten separar determinados recursos y funciones del módulo base de tu app y, luego, incluirlos en el paquete de aplicación. Mediante Play Feature Delivery, los usuarios pueden, por ejemplo, descargar e instalar esos componentes a pedido después de haber instalado el APK base de tu app.

Por ejemplo, piensa en una app de mensajería de texto que incluye funcionalidad para capturar y enviar mensajes con imágenes, pero solo un pequeño porcentaje de usuarios envía mensajes con imágenes. Tal vez tenga sentido incluir los mensajes con imágenes en un módulo de funciones descargable. De esa manera, la descarga inicial de la app es más chica para todos los usuarios, y solo aquellos que envían mensajes con imágenes deben descargar ese componente adicional.

Ten en cuenta que este tipo de modularización requiere más esfuerzo, y posiblemente tengas que refactorizar el código existente de tu app, de modo que deberás considerar con cuidado cuáles de las funciones de la app sería mejor ofrecer a pedido. Para comprender mejor los casos de uso óptimos y las pautas para las funciones on demand, consulta las prácticas recomendadas de UX para la entrega de funciones on demand.

Si deseas modularizar gradualmente las funciones de la app con el paso del tiempo, sin habilitar opciones de entrega avanzadas, como la entrega a pedido, configura la entrega durante la instalación.

En esta página, encontrarás ayuda sobre cómo agregar un módulo de funciones a tu proyecto de app y configurarlo para la entrega a pedido. Antes de comenzar, asegúrate de usar Android Studio 3.5 o una versión posterior y el complemento de Gradle para Android versión 3.5.0 o posterior.

Cómo configurar un nuevo módulo para entrega a pedido

La forma más fácil de crear un nuevo módulo de funciones es con Android Studio 3.5 o una versión posterior. Dado que los módulos de funciones tienen una dependencia inherente del módulo de la app de base, solo puedes agregarlos a proyectos de apps existentes.

Para agregar un módulo de funciones a tu proyecto de app con Android Studio, haz lo siguiente:

  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 cuadro de diálogo Create New Module, elige 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 base 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 base 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. Haz clic en Next.
  6. En la sección Module Download Options, haz lo siguiente:

    1. Especifica el título del módulo en un máximo de 50 caracteres. La plataforma usa ese título para identificar el módulo ante los usuarios cuando, por ejemplo, confirma si el usuario desea descargar el módulo. 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 strings 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>
      
    2. En el menú desplegable en Install-time inclusion, selecciona Do not include module at install-time. Android Studio introduce lo siguiente en el manifiesto del módulo para reflejar tu elección:

      <dist:module ... >
        <dist:delivery>
            <dist:on-demand/>
        </dist:delivery>
      </dist:module>
      
    3. 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. Eso significa que puedes habilitar el comportamiento a pedido para este módulo e inhabilitar la fusión a fin de omitirlo en dispositivos que no admiten la descarga e instalación de APK divididos. Android Studio introduce lo siguiente en el manifiesto del módulo para reflejar tu elección:

      <dist:module ...>
          <dist:fusing dist:include="true | false" />
      </dist:module>
      
  7. 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 a pedido, obtén información sobre cómo solicitarla usando la biblioteca de Play Core.

Cómo implementar la app

Cuando desarrollas una app compatible con Play Feature Delivery, 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 cuáles incluir cuando implementas tu app modificando la 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 la app usando paquetes de aplicación. En cambio, el IDE crea e instala en tu dispositivo los APK 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.

Recursos adicionales

Para obtener más información sobre cómo usar Play Feature Delivery, consulta el siguiente recurso.

Ejemplos

Codelabs

  • Módulos a pedido, que sirven de ayuda para crear una app que descarga y también instala funciones a pedido

Entradas de blog

Videos