Advertisement
  1. Code
  2. Mobile Development
  3. Android Development

Cómo crear una característica de aplicación instantánea

Scroll to top
Read Time: 21 min

() translation by (you can also view the original English article)

Las aplicaciones instantáneas de Android son una manera poderosa de mostrar tu aplicación ante la mayor cantidad de usuarios que sea posible.

Una vez que hayas añadido soporte para aplicaciones instantáneas a tu proyecto, los usuarios ni siquiera necesitan tu aplicación instalada para acceder a su contenido y características, podrán cargar secciones enteras de tu aplicación bajo demanda, simplemente tocando una URL.

En esta serie que consiste de tres partes, estoy cubriendo el proceso completo de añadir soporte para aplicaciones instantáneas a tus proyectos Android, así que para cuando la hayas terminado sabrás exactamente cómo crear aplicaciones Android que son descubribles y accesibles para cualquier locación que soporte URLs.

En el primer artículo, abordamos qué son las aplicaciones instantáneas y cómo funcionan, y examinamos por qué esta nueva característica es una fenomenal noticia para los desarrolladores y los usuarios de Android. Previamente, tomamos algunos atajos y creamos un proyecto Android que tiene soporte para aplicación instantánea, pero no vimos cómo añadir soporte para aplicación instantánea a un proyecto existente, así que en ello vamos a enfocarnos.

También te mostraré cómo implementar App Links (vínculos de aplicaciones), así que para el final de este artículo habrás creado una aplicación instantánea completamente funcional que puedes lanzar y probar en cualquier dispositivo compatible con Android.

Descargando el proyecto de muestra

Añadir soporte de aplicación instantánea a un proyecto típicamente requiere que hagas algunos cambios radicales en la manera en que se estructura el proyecto.

Seguramente no estás demasiado interesado en la idea de experimentar con una nueva característica cambiando completamente la estructura de uno de tus propios proyectos Android, así que he proporcionado una aplicación de muestra que puedes descargar desde GitHub. A lo largo de este artículo, trabajaremos en la actualización de este proyecto específico para dar soporte a la característica de aplicaciones instantáneas.

Descarga el proyecto MyLocation desde GitHub y ábrelo en Android Studio. Verás que es un proyecto muy sencillo, conformado de un solo módulo app que contiene una Activity (MapsActivity).

The MyLocation project displays your current location on a Google MapThe MyLocation project displays your current location on a Google MapThe MyLocation project displays your current location on a Google Map

Aunque puedes instalar y lanzar este proyecto en su estado actual, si MapsActivity va a mostrar cualquier contenido real, entonces necesitarás generar una clave de API y añadirla a este proyecto.

  • Abre el archivo res/values/google_maps_api.xml del proyecto.
  • Genera tu clave de API de Mapas de Google, siguiendo las instrucciones en este archivo.
  • Copia/pega la clave resultante en el archivo google_maps_api.xml:
1
<string name="google_maps_key" templateMergeStrategy="preserve" 
2
translatable="false">your_key_goes_here</string>
3
4
</resources>

Vamos a actualizar este proyecto para que su característica individual (es decir la capacidad de mostrar la locación actual del usuario en un mapa) esté disponible en el formulario de la aplicación instantánea. Para lograr esto, vamos a completar los siguientes pasos:

  • Crea un módulo base de la característica que contenga todo el código y los recursos que se requieren para entregar esta característica individual.
  • Crea un módulo de aplicación instantánea que servirá como el contenedor para nuestra APK de aplicación instantánea.
  • Usa App Links para asignar una URL específica a este módulo de característica base.

Antes de comenzar, también hay algunas pocas cosas de las que necesitas percatarte:

  • No añadiremos ningún modulo adicional de característica a este proyecto hasta el siguiente artículo. Sin embargo, como verás cuando probemos MyLocation, es perfectamente posible añadir soporte para aplicación instantánea a un proyecto creando un módulo de característica base y un módulo de aplicación instantánea, los módulos de característica adicional son un bonus opcional.
  • Ya que el proyecto MyLocation consiste de solo una característica, necesitamos incluir todo su código y recursos en el módulo de característica base. Podemos hacer esta tarea mucho más fácil al convertir el módulo de la aplicación de este proyecto en el módulo de característica base y luego creando un nuevo módulo para que sirva como un módulo de aplicación de remplazo. Este es un útil atajo que podrías usar cuando añadas la funcionalidad de aplicación instantánea a tus propios proyectos Android de la vida real. Sin embargo, si este atajo no es factible para un proyecto particular, entonces necesitarás crear un nuevo módulo para actuar como tu módulo de característica base y luego pasar algún tiempo migrando todo el código relevante y recursos hacia esta nuevo módulo de característica base.

Convierte el App Module (módulo de aplicación) en un módulo de característica base

Nuestra primera tarea es convertir el módulo aplicación de MyLocation en un módulo de característica base.

Cuando trabajas con múltiples módulos, ayuda a establecer una convención de nomenclatura al principio, así que a lo largo de este artículo, voy a estar agregando el tipo de cada módulo (-app, -base, -instantapp, etc.) al nombre del módulo.

  • Haz control-clic en el directorio de la app y selecciona Refactor (refactorizar) > Rename (renombrar)...
Select Refactor Rename from the context menuSelect Refactor Rename from the context menuSelect Refactor Rename from the context menu
  • En la ventana de Rename module (renombrar módulo), introduce mylocation-base (base de mi locación) y luego haz clic en OK.
  • Abre el archivo build.gradle del recientemente renombrado  modulo de mylocation-base. La primera línea revela que este módulo todavía está usando el plugin predeterminado com.android.application; sin embargo, todos los módulos de característica deben usar el plugin com.android.feature, así que necesitarás cambiarlo a apply plugin: 'com.android.feature'.
  • Deja en claro que este módulo es es el único módulo de característica base de tu proyecto, añadiendo el atributo baseFeature true al bloque de código android.
  • Cualquier proyecto que soporte la característica de aplicación instantánea inevitablemente va a consistir de múltiples módulos, pero solo necesitas declarar una vez la applicationID del proyecto, y ello se hace en el módulo app (aplicación). Para evitar conflictos y confusión, deberías eliminar este atributo del resto de tu proyecto, así que encuentra el atributo applicationID en el archivo build.gradle mylocation-base y elimínalo.

Después de completar todos estos pasos, tu archivo mylocation-base build.gradle debería lucir así:

1
apply plugin: 'com.android.feature'
2
3
android {
4
   baseFeature true
5
   compileSdkVersion 25
6
   buildToolsVersion "26.0.0"
7
   
8
   defaultConfig {
9
       minSdkVersion 24
10
       targetSdkVersion 25
11
       versionCode 1
12
       versionName "1.0"
13
       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
14
15
   }

Crea el módulo de tu aplicación

En este punto, MyLocation carece de un módulo de aplicación, así que vamos a crear un remplazo:

  • Selecciona New (nuevo) > New module (Nuevo módulo)... de la barra de herramientas de Android Studio.
  • En la ventana que aparece, selecciona Phone and Tablet (teléfono y tableta) y luego haz clic en Next (siguiente).
  • Apeguémonos a la convención de nomenclatura que establecimos y vamos a llamar a este módulo mylocation-app. Haz clic en Next (siguiente).
  • Este módulo debería contener el código y los recursos que quieres incluir en tu aplicación instalable, pero ayuda a mantener las cosas tan sencillas como sea posible, haz clic en Add No Activity (No añadir ninguna actividad) y luego haz clic en Finish (finalizar).
  • Abre el archivo manifiesto de tu módulo mylocation-app. Si vuelves a pensar en el proyecto que creamos en el artículo previo, recordarás que el manifiesto del módulo de la aplicación estaba muy vacío porque eventualmente el contenido de todos los otros manifiestos dispersados por este proyecto se fusionarían con este archivo. Esto es exactamente lo que va a ocurrir con nuestro proyecto MyLocatilon, así que evita cualquier conflicto durante el proceso de fusión, deberías eliminar el bloque entero application del manifiesto.
Delete the application block of code from your ManifestDelete the application block of code from your ManifestDelete the application block of code from your Manifest
  • Abre el archivo build.gradle del módulo mylocation-app. Este módulo depende de nuestro módulo mylocation-base, así que elimina todo el código del bloque dependencies y remplázalo con el siguiente:
1
dependencies {
2
          implementation project(':mylocation-base')
3
}
  • Elimina los archivos y directorios no utilizados del módulo de tu aplicación, cambiando a vista del Project (proyecto) de Android Studio y eliminando el directorio src/androidTest. Luego abre el directorio main y elimina los directorios, Java, res y test.
Delete the following files and directories srcandroidTest mainJava mainres and maintestDelete the following files and directories srcandroidTest mainJava mainres and maintestDelete the following files and directories srcandroidTest mainJava mainres and maintest

Exitosamente hemos migrado toda la funcionalidad de MyLocation a un compartible módulo de característica base. Ya que esto nos pide hacer algunos cambios muy drásticos en nuestra estructura del proyecto, deberías verificar que MyLocation siga funcionando como una aplicación instalable:

  • Lanza el AVD (dispositivo virtual Android) que creamos en la primera parte o conecta un dispositivo Android físico que sea compatible con la característica de aplicación instantánea, al momento de escribir, se limita a Nexus 5X, Nexus 6P, Pixel, Pixel XL o Galaxy S7 que esté ejecutando Android 6.0 o una versión superior.
  • Selecciona Run (ejecutar) > Run (ejecutar)... de la barra de herramientas de Android Studio.
  • Selecciona el módulo mylocation-app.
  • La aplicación MyLocation aparecerá en la pantalla y asumiendo que generaste la clve de API de Mapas de Google para este proyecto, debería mostrarse algún contenido de Mapas de Google.

Creando el módulo de la aplicación instantánea

El módulo de la aplicación instantánea cumple la sencilla pero esencial tarea de actuar como un contenedor para todas las APKs de aplicaciones instantáneas que son generadas por tu proyecto. Para crear este módulo:

  • Selecciona File (archivo) > New (nuevo) > New Module (Nuevo módulo)... de la barra de herramientas de Android Studio.
  • En la ventana subsecuente, selecciona Instant App (aplicación instantánea) y luego haz clic en Next (siguiente).
  • Dale a este módulo el nombre mylocation-instantapp y haz clic en Finish (terminar).
  • Ya que este módulo de aplicación instantánea existe únicamente para contener nuestro módulo de característica base, necesitamos abrir su archivo build.gradle y declarar mylocation-base como una dependencia:
1
apply plugin: 'com.android.instantapp'
2
3
dependencies {
4
      implementation project(':mylocation-base')
5
}

Añadiendo App Links (vínculos de aplicaciones) a tu proyecto

El usuario lanza una aplicación instantánea tocando una URL que está asignada a una característica base o módulo de característica. Esta URL podría estar en cualquier lugar, quizá es una URL que un amigo nos ha enviado directamente por correo electrónico o mensaje instantáneo; quizá es una URL que ubicaron en un tweet, foro o en un hilo de comentario, o una URL que salió de sus resultados de una búsqueda en Google.

Sin importar donde aparezca, cuando el usuario toca este enlace, Google Play reconocerá que está asociado con una característica base o un módulo de característica y obtiene todo el código y los recursos requeridos para ejecutar este módulo particular en el dispositivo del usuario.

En esta sección, vamos a establecer esta relación entre nuestro módulo de característica base y una URL, usando App Links. La característica App Links de Android se introdujo inicialmente para ayudar a los usuarios a omitir el diálogo de selección de aplicación de Android cuando trataban de acceder a contenido que podría ser manejado por una aplicación que ya está instalada en su dispositivo. Por ejemplo, si tocas un enlace a un video de YouTube, entonces el sistema podría mostrar un diálogo preguntando si quieres obtener este enlace en tu aplicación de YouTube.

En el contexto de aplicaciones instantáneas, App Links te permite asignar una Actividad de punto de entrada del módulo de característica a una URL específica. Exploramos actividades de punto de entrada en el artículo anterior, pero como recordatorio, son la primera Actividad que el usuario ve cuando lanzan tu característica base o módulo de característica "regular".

Cuando añades soporte para aplicación instantánea a un proyecto de la vida real, necesitarás decidir qué Actividad haría la introducción más eficaz a tu componente de aplicación instantánea, pero ya que mylocation-base únicamente tiene una sola Actividad, ¡esta decisión ya ha sido tomada por nosotros!

Digital Asset Links (enlaces a recursos digitales)

En esta sección, vamos a utilizar el Asistente de App Links integrado en Android Studio para asociar MapsActivity con la URL www.example.com/maps, pero primero un descargo de responsabilidad:

Subir un archivo Digital Asset Links (vínculos de activos digitales) al dominio en el que trabajas (en esta instancia, www.example.com) es un paso crucial en el proceso de App Links, pues establece la manera cómo el sistema verifica que tu aplicación tenga permiso para actuar como el manejador predeterminado para todos los enlaces asociados con este dominio.

Aunque cubriré el proceso de generar y cargar un archivo de Digital Asset Link, pues no poseemos el dominio www.example.com, no podremos ejecutar este paso. No obstante, de manera extraña, al momento de escribir este artículo no parece posible probar un componente de aplicación instantánea en un AVD, aún si no has cargado un Digital Asset Link con el dominio asociado, solo necesitas realizar alunas modificaciones a la configuración del tiempo de ejecución de Android Studio.

Si tienes acceso fácil a un dominio donde puedas albergar un archivo Digital Asset Link, entonces recomendaría remplazar las URLs www.example.com con URLs genuinas y cargar el archivo resultante de Digital Asset Links en tu sitio web. Sin embargo, aún si usas las URLs de www.example.com, entonces todavía deberías probar el componente de la aplicación instantánea de MyLocation, modificando la configuración del tiempo de ejecución.

Crea la asignación de la URL

Android Studio 2.3 y versiones superiores vienen con App Links Assistant integrado, ello facilita mucho la adición de App Links a tu proyecto.

  • Selecciona Tools (herramientas) > App Links Assistant (asistente de vínculos a aplicaciones) desde la barra de herramientas de Android Studio. El asistente se abrirá como un nuevo panel en el lado derecho de la ventana de Android Studio.
  • Haz clic en el botón Open URL Mapping Editor (abrir el editor de asignaciones de URL).
  • En el panel URL-to-Activity mappings (asignaciones URL a Actividad) que aparece, haz clic en el pequeño ícono de +.
  • En el campo Host, introduce el dominio al que quieres asociar este proyecto; voy a utilizar www.example.com.

El siguiente paso es introducir la URL específica que quieres usar en tu asignación. Aquí tienes algunas opciones, así que abre el desplegable Path (ruta) y elige entre:

  • Path. Deberías seleccionar esta opción si quieres asignar una sola URL a tu Actividad de punto de entrada. Ya que solamente quiero que MapsActivity responda a la URL www.example.com/maps, voy a seleccionar Path (ruta) de este menú desplegable. Ya hemos asociado el dominio www.example.com con nuestro proyecto, así que solo necesitamos escribir la parte final de URL (/maps) en el campo de texto que acompaña.
Select Path from the dropdown menu and enter maps in the accompanying text fieldSelect Path from the dropdown menu and enter maps in the accompanying text fieldSelect Path from the dropdown menu and enter maps in the accompanying text field
  • pathPattern. Similar a Path, esta opción te permite especificar la URL exacta que debería lanzar tu Actividad de punto de entrada. Sin embargo, también te brinda mayor flexibilidad, permitiéndote usar caracteres comodines en el campo de texto que acompaña.

A continuación, necesitas seleccionar MapsActivity como la Actividad de punto de entrada de este módulo:

  • Abre el menú desplegable Activity.
  • Selecciona .MapsActivity (mylocation-base).
  • Haz clic en OK.

El App Links Assistant actualiza tu manifiesto con todo el código requerido para convertir MapsActivity en la Actividad punto de entrada de este módulo; si observas el manifiesto de tu módulo mylocation-base, entonces verás el siguiente código:

1
<activity
2
   android:name=".MapsActivity"
3
   android:label="@string/title_activity_maps">
4
5
   <intent-filter>
6
       <action android:name="android.intent.action.MAIN" />
7
       <category android:name="android.intent.category.LAUNCHER" />
8
   </intent-filter>
9
10
   <intent-filter>
11
       <action android:name="android.intent.action.VIEW" />
12
       <category android:name="android.intent.category.DEFAULT" />
13
       <category android:name="android.intent.category.BROWSABLE" />
14
15
       <data
16
           android:scheme="http"
17
           android:host="www.example.com"
18
           android:path="/maps" />
19
20
   </intent-filter>
21
</activity>

A continuación, necesitas decir a MapsActivity cómo responder cuando sea lanzada mediante esta URL. Una vez más, el App Link Assistant te puede guiar en este proceso:

  • De regreso en el App Link Assistant, haz clic en el botón Select Activity (seleccionar actividad).
  • Selecciona la Actividad que quieres asignar a tu URL, la cual en esta instancia es MapsActivity.
  • Haz clic en Insert code (insertar código) y el App Links Assistant insertará el siguiente código en MapsActivity:
1
 Intent appLinkIntent = getIntent();
2
   String appLinkAction = appLinkIntent.getAction();
3
   Uri appLinkData = appLinkIntent.getData();
4
}

Cuando añadas soporte de aplicación instantánea a tus proyectos de la vida real, típicamente querrás expandir este código, dependiendo de cómo quieres que tu Actividad reaccione cuando sea lanzada como una aplicación instantánea, pero para los fines de nuestro proyecto MyLocation, estas líneas cumplen el trabajo.

Asocia tu aplicación con tu sitio web

En esta sección voy a mostrarte cómo generar un archivo Digital Asset Link  y cómo cargar este archivo a tu sitio web. Si estás usando www.example.com como un sustituto para URLs genuinas, entonces no podrás completar este paso, pero aún es importante entender cómo generar y cargar este archivo, listo para cuando añadas soporte para aplicación instantánea a tus propios proyectos Android.

Para crear esta asociación entre tu dominio y tu aplicación, necesitas completar los siguientes pasos:

  • En el App Links Assistant, haz clic en el botón Open the Digital Asset Links File Generator (abrir generador de archivo de Digital Asset Links).
  • Introduce el dominio al que quieres asociar esta aplicación, como www.example.com.
  • Introduce el ID de tu aplicación.
  • Introduce la configuración de inicio de sesión de tu aplicación o selecciona un archivo keystore. Aunque es posible usar una configuración de depuración o keystore durante el testeo, el archivo generado Digital Asset Links no será compatible con la versión lanzada de tu aplicación. Si cargas un archivo Digital Asset Links que utiliza una configuración de depuración o keystore, entonces antes de publicar tu aplicación necesitarás generar y cargar un nuevo Digital Asset Links que utiliza la clave de lanzamiento de tu aplicación.
  • Haz clic en el botón Generate Digital Asset Links.
  • Descarga el archivo Digital Asset, haciendo clic en el botón Save file (guardar archivo). En las compilaciones de Canary de Android Studio 3.0, este botón es a veces colocado fuera de la pantalla, así que podrías necesitar redimensionar tu ventana de Android Studio para que aparezca el botón Save file. Haciendo clic en este botón descargará un archivo assetlinks.json a tu computadora.
  • Debes albergar el archivo assetlinks.json en la siguiente dirección https://<yoursite>/.well-known/assetlinks.json, así que carga tu archivo assetlinks.json recién descargado a esta precisa ubicación. También percátate de que Android verifica el archivo assetlinks.json mediante un protocolo HTTPs encriptado, así que necesitarás asegurarte de que este archivo sea accesible mediante una conexión HTTPS.
  • De regreso en Android Studio, haz clic en el botón Link and verify (enlazar y verificar) del App Link Assistant. Si sigues este tutorial usando los enlaces sustitutos de www.example.com, entonces Android Studio debería reportar que has completado exitosamente cada paso, excepto cargar el archivo Digital Asset Links.

Probando tu aplicación instantánea

¡Ahora finalmente estás listo para probar el componente de aplicación instantánea de MyLocation!

Específicamente queremos probar que si un usuario no tiene instalada MyLocation en su dispositivo, entones al tocar el enlace www.example.com/maps le dará acceso al módulo mylocation-base:

  • Lanza tu AVD compatible con la aplicación instantánea.
  • Verifica que la aplicación MyLocation no esté instalada en tu AVD abriendo su lanzador. Si ves la aplicación MyLocation, entonces desinstálala arrastrándola al ícono de Desinstalar del dispositivo.
  • A continuación, necesitarás realizar algunas modificaciones a la configuración de ejecución de nuestro proyecto, especialmente si estás usando www.example.com/maps para desencadenar tu módulo mylocation-base.Comienza seleccionando Run (ejecutar) > Edit configuration (editar configuraciones)... de la barra de herramientas de Android Studio.
  • Selecciona mylocation-instantapp del menú de la izquierda.
  • Abre el menú desplegable Launch (lanzar) y establécelo en la URL.
  • Elimina el texto <> y remplázalo con la URL que quieres  usar como http://www.example.com/maps. Cuando seleccionas esta configuración de ejecución, simulará el toque del usuario en el enlace www.example.com/maps.
Delete the Error text and replace it with wwwexamplecommapsDelete the Error text and replace it with wwwexamplecommapsDelete the Error text and replace it with wwwexamplecommaps
  • Haz clic en Aplicar, seguido de OK.
  • Selecciona Run (ejecutar) Run (ejecutar)... desde la barra de herramientas de Android Studio.
  • Elige mylocation-instantapp como el componente que quieres lanzar.
  • Selecciona tu AVD objetivo y haz clic en OK.
  • Si esta es la primera vez que estás ejecutando una aplicación instantánea en este AVD particular, entonces el dispositivo te pedirá seleccionar el programa de la aplicación instantánea. Lee el descargo de responsabilidad y si estás de acuerdo para proceder, entonces haz clic en Yes, I'm in (Sí, estoy de acuerdo).

Android Studio ahora simulará tu toque del enlace www.example.com/maps y el AVD debería responder cargando tu módulo de característica base. En este punto, el MapsActivity aparecerá en la pantalla, y podrás interactuar con él exactamente como si MyLocation estuviera instalada en este dispositivo.

Para verificar que MyLocation realmente está presente en este dispositivo, minimiza el MapsActivity y abre el lanzador de AVD, la aplicación MyLocation debería estar completamente ausente y aún si haces clic en la opción Recents (recientes) de AVD, el MapsActivity estará todavía visible y disponible en este dispositivo.

Puedes descargar el proyecto MyLocation, actualizado con soporte total para aplicación instantánea desde GitHub.

Solucionando problemas

Las aplicaciones instantáneas son una característica nueva, así que no es raro encontrar mensajes de error, fallos y otro comportamiento extraño, específicamente si usas una de las previsualizaciones o compilaciones Canary de Android Studio 3.0.

El problema más común que encontrarás es cuando se selecciona Run (ejecutar) > Run instantapp (ejecutar aplicación instantánea) de la barra de herramientas de Android Studio, y se tiene la respuesta AVD que muestra el diálogo de selector de aplicación o que abra la URL en su navegador predeterminado. Si esto ocurre, entonces significa que el AVD no reconoce que tu URL está asignada a un módulo de aplicación instantánea y lo está manejando como una URL regular.

Asumiendo que has implementado correctamente el soporte para aplicación instantánea, hay algunas razones de por qué tu AVD podría estar negándose a cooperar:

¿Está tu AVD configurado para permitir aplicaciones instantáneas?

Dependiendo del AVD que creaste, es posible que pudieras necesitar decirle explícitamente a tu AVD que soporte aplicaciones instantáneas:

  • Abre la aplicación de los Ajustes del AVD.
  • Selecciona Google.
  • Desplázate haca la sección de Services (servicios).
  • Si ves una opción de Instant app (aplicación instantánea), entonces tócala.
  • En la pantalla subsecuente, arrastra el deslizador a la posición de On.
  • Repite el proceso de tratar de lanzar tu módulo de aplicación instantánena en tu AVD para ver si se arregló el problema.

¿Tienen soporte tus aplicaciones instantáneas en tu localidad?

Las aplicaciones instantáneas no son soportadas en todas las localidades, así que verifica si actualmente están disponibles donde te encuentras. Si no son soportadas, entonces necesitarás utilizar los comandos de adb (Android Debug Bridge) para engañar a tu AVD pretendiendo que estás en una locación diferente.

  • Abre la Terminal (si eres usuario de Mac) o el símbolo del sistema si estás en Windows.
  • "Cambia de directorio", para que la Terminal o el símbolo del sistema esté apuntando al programa de adb que es incluido en tu Android SDK por ejemplo:
1
cd /Users/jessicathornsby/Library/Android/sdk/platform-tools
  • A continuación, introduce el siguiente comando:
1
adb shell
  • Una vez que aparezca # en la Terminal o la ventana del símbolo del sistema, introduce el siguiente comando:
1
setprop persist.sys.locale [ISO language code, plus country/region code] ;stop;sleep 5;start 
  • Tu AVD ahora volverá a arrancar y una vez que esté reiniciado estará utilizando los nuevos ajustes de la localidad. Ahora podrás ejecutar aplicaciones instantáneas en este dispositivo.

Si todo falla...

Si ninguna de las soluciones presentadas anteriormente funciona, entonces podrías tener resultados positivos desencadenando un componente de aplicaciones instantáneas desde un comando adb, en lugar de explorar los diversos menús de Android Studio:

  • Abre una ventana de la Terminal o del símbolo del sistema.
  • Usa el comando cd para que la Terminal/símbolo del sistema esté apuntando hacia el programa adb.
  • Introduce el siguiente comando, asegúrate de remplazar complete-url-path con la URL que quieres usar:
1
./adb shell am start -a android.intent.action.VIEW -d complete-url-path 

Error en la aplicación de carga lateral

En ocasiones, Android Studio podría rehusarse a cargar un componente de aplicación instantánea en tu AVD, pues algunos desarrolladores han reportado encontrar el siguiente error cuando intentan lanzar una aplicación instantánea:

Error en la aplicación de carga lateral: Expiró el tiempo de lectura de paquete.

Si encuentras este mensaje de error en Android Studio, entonces generalmente puedes resolverlo limpiando el caché:

  • Selecciona Run > (ejecutar) > Edit configurations (editar configuraciones)... desde la barra de herramientas de Android Studio.
  • Selecciona mylocation-instantapp del menú de la izquierda.
  • Selecciona Instant app provision (provisión de aplicación instantánea) que se ubica en la parte inferior de la ventana.
  • Haz clic en el ícono del lápiz.
  • Selecciona Clear provisioned devices cache (limpiar el caché de los dispositivos provistos).
Select the Clear provisioned devices cache checkbox then click OKSelect the Clear provisioned devices cache checkbox then click OKSelect the Clear provisioned devices cache checkbox then click OK
  • Haz clic en OK, seguido de Apply y luego pulsa OK una vez más.
  • Intenta relanzar el componente de tu aplicación instantánea en tu AVD, el problema ahora debería estar resuelto.

Conclusión

En este artículo, presentamos cómo actualizar un proyecto Android existente para brindar soporte de aplicaciones instantáneas, creando un módulo de característica base y un módulo de aplicaciones instantáneas, implementando App Links y luego probando este proyecto en un AVD.

En este punto, tienes toda la información que necesitas para añadir la funcionalidad de aplicación instantánea a tus proyectos Android existentes, pero con una restricción: solo hemos creado un solo módulo de característica base. Esto significa que actualmente, estás limitado a ofrecer una característica de aplicación instantánea por proyecto.

En el artículo final de esta serie, vamos a rectificar esto abordando cómo agregarías un módulo de característica adicional al proyecto MyLocation. Eso será pronto. Mientras esperas, ¡consulta algunos de nuestros otros sensacionales artículos sobre desarrollo de aplicaciones en Android!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.