Crea una app instantánea que use el complemento de funciones

Precaución: El flujo de trabajo de esta página solo se aplica a desarrolladores que crearon una app instantánea con Android Studio 3.1.

Te recomendamos encarecidamente que, en su lugar, uses Android Studio 3.3 o una versión posterior para crear un paquete compatible con apps instantáneas.

En esta guía, aprenderás a configurar tu entorno de desarrollo para trabajar con apps instantáneas. Luego, aprenderás a crear una app instantánea, ya sea desde el asistente Create project o desde una app existente. También aprenderás a ejecutar y depurar un proyecto de Android Studio que contenga una app instantánea. Por último, la guía proporciona recursos para publicar una app instantánea.

Si todavía no lo hiciste, descarga Android Studio 3.0 o una versión posterior antes de seguir los pasos de esta guía.

Prepara tu entorno de desarrollo

En Android Studio, abre el Android SDK Manager. En la pestaña SDK Platforms, asegúrate de tener instalado Android 6.0 (API nivel 23) o una versión posterior.

Luego, abre la pestaña SDK Tools para instalar los siguientes paquetes:

  • Herramientas de compilación del SDK de Android 26.x o posterior
  • Herramientas de la plataforma del SDK de Android 25.x o posterior
  • Herramientas del SDK de Android (versión más reciente)
  • SDK de desarrollo de Google Play Instant (versión más reciente)
  • Repositorio de compatibilidad (versión más reciente)
    • Todas las dependencias del repositorio de compatibilidad (versión más reciente de cada una)

Solicita solo permisos compatibles

Las apps instantáneas solo pueden usar permisos de la lista que aparece en la guía para hacer que tu app existente pueda ser instantánea con Android App Bundle.

Crea tu app instantánea

Puedes crear una app instantánea con uno de los siguientes flujos de trabajo:

Crea un nuevo proyecto de app instantánea

Para crear una app instantánea, completa los siguientes pasos:

  1. Inicia Android Studio y crea un proyecto nuevo:
    • Si todavía no abriste un proyecto, en la ventana Welcome to Android Studio, haz clic en Start a new Android Studio project.
    • Si ya tienes un proyecto abierto, selecciona File > New Project.
  2. En la ventana Create Android Project, haz lo siguiente:
    1. En el cuadro Application name, ingresa "My First Instant App".
    2. En el cuadro Company domain, ingresa "example.com".
    3. Deja Package name como "com.example.myfirstinstantapp".
    4. Haz clic en Next.
  3. En la ventana Target Android Devices, haz lo siguiente:
    1. Asegúrate de que esté seleccionada la opción Phone and Tablet.
    2. En la lista Minimum SDK, marca Include Android Instant App support. Haz clic en Next.
  4. En la ventana Customize Instant App Support, deja la configuración predeterminada. Haz clic en Next.
  5. En la ventana Add an Activity to Mobile, selecciona Empty Activity. Haz clic en Next.
  6. En la ventana Configure Activity haz lo siguiente:
    • En el cuadro Instant App URL Host, ingresa "myfirstinstantapp.example.com" (sin comillas).
    • En el cuadro Instant App URL route, ingresa "/hello" (sin comillas).
    • Mantén los valores predeterminados de las otras opciones de configuración.
    • Haz clic en Finish.

Android Studio compila y carga los archivos del nuevo proyecto.

Modulariza una app existente

En esta sección, se describe cómo convertir una app monolítica existente en una modularizada. Luego se describe cómo agregar la funcionalidad instantánea a la nueva app modularizada.

Crea módulos de APK y funciones de base

Para desarrollar apps instantáneas, primero debes crear los siguientes módulos:

  • Un módulo de funciones de base o un módulo de funciones que se incluya en el paquete de cada app instantánea que crees. Es diferente del módulo base de un Android App Bundle, que contiene tanto la experiencia de app instantánea como la experiencia de la app inicial instalada.
  • Un módulo mínimo que contiene solo el código compartido que es esencial para compilar el archivo de APK de la app.

Después de completar el proceso, tu proceso de compilación de la app se separa de la lógica de tu app, lo que permite convertir parte del módulo basado en lógica en una app instantánea.

Designa tu app como módulo de funciones de base

Cuando creas una app, esta automáticamente contiene un módulo llamado "app". En esta sección, se describe cómo declarar la lógica de tu app como parte de un módulo de funciones de base.

Para mover la lógica de tu app a un módulo de funciones de base, completa los siguientes pasos:

  1. Renombra el módulo a algo similar a base.
  2. Actualiza las declaraciones de importación de los recursos de tu app de manera que hagan referencia al módulo con el nuevo nombre.
  3. Abre el archivo base/build.gradle del módulo y haz el siguiente cambio para designar el módulo como módulo de funciones:

    base/build.gradle

        // Replace
        // apply plugin: 'com.android.application'
        // with
        apply plugin: 'com.android.feature'
  4. Este módulo representa al módulo de funciones de base de tu app, por lo que debes establecerlo como true con la marca baseFeature:

    base/build.gradle

        android {
            ...
            baseFeature true
            ...
        }

    Nota: Si tu app solo tiene un módulo de funciones, debe estar designado como módulo de funciones de base.

Crea un módulo de APK mínimo

Además de crear un módulo de funciones de base, también debes crear un módulo mínimo. Este módulo contiene el código compartido necesario para compilar el archivo APK de tu app.

Para crear el módulo mínimo, completa los siguientes pasos:

  1. Haz clic en File > New > New Module…
  2. En el diálogo Create New Module que aparece, elige Phone & Tablet Module. Haz clic en Next.
  3. En la ventana Phone & Tablet Module, elige un nombre de módulo y un nombre de paquete. Esta guía usa apk como nombre del paquete.

    Haz clic en Next.

  4. En la ventana Add an Activity to Mobile, selecciona Add No Activity. Haz clic en Finish.

Android Studio finaliza la creación del módulo mínimo y lo carga en la ventana del proyecto.

Asocia el módulo mínimo con los módulos de funciones

Ya creaste un módulo de funciones, pero Android Studio no lo incluirá en el APK de tu app a menos que lo asocies con el módulo mínimo de tu app. Para hacerlo, completa los siguientes pasos:

  1. Como siempre debes declarar tu ID de aplicación en el módulo de Gradle que declara com.android.application, mueve la línea applicationID del módulo de funciones al módulo mínimo.

    Para ello, sigue las instrucciones que aparecen en estos fragmentos de código:

    base/build.gradle

        android {
           defaultConfig {
               // Remove this line
               // applicationId "com.mycompany.example"
               ...
           }
           ...
        }
    
        dependencies {
              // Add this line to declare this module's dependency
              // on the minimal module
              application project(":apk")
        }

    apk/build.gradle

        android {
            ...
            defaultConfig {
                // replace
                // applicationId "com.mycompany.example.apk"
                // with
                applicationId "com.mycompany.example"
                ...
            }
            ...
        }
  2. El módulo mínimo necesita depender de cada uno de los módulos de funciones de tus apps. Para ello, actualiza las dependencias de compilación, como se muestra en el siguiente fragmento de código:

    apk/build.gradle

        dependencies {
            implementation project(':base')
            // If your app contains feature modules other than the base feature module,
            // add dependency lines that are similar to the following:
            // implementation project(':feature1')
            // implementation project(':feature2')
        }
  3. En el módulo de funciones de base, actualiza el archivo AndroidManifest.xml para que contenga lo siguiente:

    base/src/main/AndroidManifest.xml

        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:tools="http://schemas.android.com/tools"
                  package="com.mycompany.example">
        ...
        </manifest>
  4. Cada uno de los archivos de manifiesto de tu app debe hacer referencia a un paquete único, por lo que debes actualizar el nombre del archivo AndroidManifest.xml de tu AKP de la siguiente manera:

    apk/src/main/AndroidManifest.xml

        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                  package="com.mycompany.example.app">
        </manifest>

Crea más módulos de funciones para Google Play Instant

Al tener módulos de funciones, tu app se puede actualizar más fácilmente. Estos módulos también facilitan la creación de apps instantáneas, mientras que los usuarios pueden hacer clic en un vínculo para acceder a la funcionalidad dentro de un módulo de funciones en particular sin tener que instalar tu app.

Si vas a crear un módulo de funciones de cero, puedes agregar la funcionalidad para Google Play Instant inmediatamente.

Para crear un nuevo módulo de funciones para Google Play Instant, completa estos pasos:

  1. En Android Studio, selecciona File > New > New Module…
  2. En la ventana Create New Module que aparece, elige Instant App. Haz clic en Next.
  3. Proporciona un nombre para el nuevo módulo de funciones. En esta guía, se lo llama "instant". Haz clic en Finish.

Android Studio finaliza la creación y compilación del nuevo módulo de funciones de tu app.

Verifica la dependencia del módulo de funciones de base

Asegúrate de que el módulo de funciones incluya una dependencia en el módulo de funciones de base de tu app, como la siguiente:

instant/build.gradle

dependencies {
        implementation project(':base')
    }
    

Habilita la función "Probar ahora"

Figura 1: El botón "Probar ahora" que se muestra para una app instantánea

Google Play Instant te permite ofrecer tu app instantánea a los usuarios sin que tengan que hacer clic en una URL. Esta experiencia, llamada "Probar ahora", está disponible en Play Store, como se muestra en la figura 1.

Para proporcionar esta función en tu app, tienes dos opciones.

  1. Deja tu actividad predeterminada como punto de entrada para la experiencia "Probar ahora".
  2. Agrega URL a las actividades y declara una URL predeterminada, que se convertirá en el punto de entrada a la experiencia "Probar ahora".
Usa la actividad predeterminada

Una actividad que incluye el siguiente filtro de intent se convierte en punto de entrada:

<activity android:name="com.example...MainActivity" ... >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    
Crea una URL predeterminada

Si ofreces acceso de URL a tu app instantánea, debes incluir una URL predeterminada, que es la que se invoca cuando los usuarios hacen clic en Probar ahora, en Google Play Store o cuando los usuarios fijan tu app instantánea a un selector. Por lo general, la URL predeterminada corresponde a la actividad principal de tu app, que se encuentra en el módulo de funciones de base de tu app.

Para agregar una URL predeterminada, incluye un atributo <meta-data> al módulo de la app que contenga la actividad principal de tu app, como se muestra en el siguiente fragmento de código:

base/manifests/AndroidManifest.xml

<activity android:name="com.example.base.MainActivity" ... >
        <meta-data android:name="default-url"
                   android:value="https://example.com/welcome" />
    </activity>
    

Proporciona acceso de URL para una app instantánea

Si quieres que los usuarios puedan abrir tu app instantánea fuera de Play Store, por ejemplo, en un banner dentro del sitio web de la app, completa una de las siguientes tareas:

  • Usa la API de Launcher:

    https://play.google.com/store/apps/details?id=package_name&launch=true
  • Agrega vínculos de app a tu app. Cada vínculo de app es una URL específica que posees y que, cuando se hace clic en ella, carga una actividad específica en tu app instantánea.

Asocia tu dominio con la app

El editor de asignación de URL te ayuda a asociar los vínculos de tu app con las actividades correspondientes que deberían funcionar como punto de entrada a tu app instantánea. Para obtener más información, consulta Verifica Android App Links.

Asegúrate de que el vínculo de la app aparezca en el archivo de manifiesto del módulo de funciones que se inicia cuando los usuarios hacen clic en el vínculo. En el siguiente ejemplo, se incluye ese vínculo para un módulo de funciones llamado "survey":

survey/manifests/AndroidManifest.xml

<activity android:name="com.example.survey_module.SurveyActivity" ... >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:scheme="http"
                android:host="example.com"
                android:pathPrefix="/survey" />
        </intent-filter>
    </activity>
    

Si, después de completar estos pasos, un navegador intenta cargar una URL en lugar de tu app instantánea, intenta borrar tu base de datos DevMan. Para ello, ejecuta el siguiente comando:

$ adb shell pm clear com.google.android.instantapps.devman
    

Envía a los usuarios directamente a tu app instantánea

Puedes enviar a los usuarios directamente a tu app cuando hacen clic en el vínculo de la app. Para ello, completa los siguientes pasos para proporcionar verificación de vínculo de apps:

  1. Declara asociaciones de sitio web con tu app instantánea.
  2. Agrega la funcionalidad de verificación automática a cada elemento <intent-filter> que corresponda a un vínculo de app:

    survey/manifests/AndroidManifest.xml

        <activity android:name="com.example.survey.SurveyActivity" ... >
             <intent-filter android:autoVerify="true">
                 ...
             </intent-filter>
        </activity>

Si creaste vínculos para tu app instantánea, puedes cargar un módulo de funciones diferente de alguna de las siguientes maneras:

Ejecuta tu app instantánea

Puedes implementar apps instantáneas en la mayoría de los dispositivos que ejecutan Android 5.1 (API nivel 21) o versiones posteriores. Si no tienes un dispositivo de prueba, lee la siguiente sección para obtener información sobre cómo puedes configurar un emulador para ejecutar apps instantáneas.

Para ejecutar el proyecto en Android Studio, haz lo siguiente:

  1. Abre la ventana Project. Para ello, haz clic en View > Tool Windows > Project, luego selecciona Run > Run 'instantapp'.
  2. En la ventana Select Deployment Target, selecciona el dispositivo de destino en el que quieres que se ejecute la app.

Android Studio compila tu app y la instala en tu dispositivo de prueba o emulador.

Configura un emulador que admita apps instantáneas

Para configurar tu emulador a fin de que ejecute apps instantáneas, completa los siguientes pasos:

  1. Crea un dispositivo virtual de Android. Para usar todas las funciones más recientes relacionadas con apps instantáneas, configura el dispositivo para que ejecute Android 8.1 (API nivel 27) o versiones posteriores, que use la arquitectura x86 y que incluya las API de Google.

  2. Inicia el emulador y accede a una Cuenta de Google de prueba.

  3. En el menú de Configuración del sistema, ve a Google > Apps instantáneas para aceptar Apps instantáneas Android.

Implementa tu app instantánea para publicación

Completa los siguientes pasos y prepara tu app para publicación:

  1. En Android Studio, selecciona Build > Generate Signed APK…
  2. En la ventana Generate Signed APK, elige el módulo instantapp. Haz clic en Next.
  3. Completa los pasos que se describen en el artículo Distribuye tu app instantánea.
  4. Ve a Google Play Console para completar el flujo de trabajo, como se describe en el artículo Cómo preparar y lanzar actualizaciones. Asegúrate de cargar tu APK de app instantánea.

Para obtener más información sobre cómo preparar y lanzar tu app en Google Play Console, consulta Firma tu APK.

Recursos adicionales

Obtén más información sobre Google Play Instant en estos recursos adicionales:

Codelab: Compila tu primera app instantánea
Agrega compatibilidad para Google Play Instant a una app existente.
Codelab: Compila una app con múltiples funciones
Modulariza una app con múltiples funciones.