¿Qué son las aplicaciones instantáneas de Android?

Cada vez que lanzas una aplicación para Android, tendrás al menos una idea aproximada de lo que quieres que logre esta aplicación.. 

Estos objetivos podrían ser muy específicos, como generar cierta cantidad de ingresos por publicidad en el primer trimestre, o podrían ser más generales, como obtener una alta calificación en Google Play.

Cualquier otra cosa que esté en su lista de deseos, obtener su aplicación frente a tantos usuarios como sea posible es siempre va a aparecer en algún lugar de esa lista, y Android Instant Apps es una nueva característica que puede ayudarlo a hacer precisamente eso..

Las aplicaciones instantáneas le brindan una forma completamente nueva de llegar a los usuarios que actualmente no tienen su aplicación instalada en su dispositivo, haciendo que su aplicación sea visible y accesible desde cualquier ubicación que admita URL, incluidos correos electrónicos, resultados de búsqueda de Google, publicaciones en redes sociales. Plataformas, comentarios de YouTube y foros..

Esencialmente, las aplicaciones instantáneas le permiten separar cada una de las funciones de su aplicación en un módulo independiente. Luego, los usuarios pueden cargar cualquiera de estos módulos de aplicación instantánea a pedido tocando una URL que haya asignado a este módulo específico, y sin Tener que instalar tu aplicación en cualquier momento..

En esta serie de tres partes, le mostraré cómo agregar soporte de aplicación instantánea a sus proyectos de Android. Al final de esta serie, habrá creado una aplicación que consta de dos módulos de funciones de la aplicación instantánea, que puede iniciar y probar en cualquier dispositivo Android compatible. 

Lo que vamos a cubrir

En esta primera publicación, me centraré en qué son las aplicaciones instantáneas, cómo funcionan y por qué debería preocuparse por ellas. Para brindarle una experiencia de primera mano de las aplicaciones instantáneas, usaremos el asistente de creación de proyectos de Android Studio para generar una aplicación que esté preconfigurada con el soporte de la aplicación instantánea, por lo que podrá ver todos los diferentes componentes de la aplicación instantánea, en lugar que simplemente leer sobre ellos.

Si bien la creación de una aplicación preconfigurada con el soporte de la aplicación instantánea es la forma más rápida y fácil de usar esta función, en realidad es mucho más probable que agregue el soporte de la aplicación instantánea a un proyecto existente, así que en la segunda parte le mostraré cómo hacer exactamente eso. Le proporcionaré una aplicación que puede descargar de GitHub y luego lo guiaré a través del proceso paso a paso de reconfigurar este proyecto para que sea compatible con las aplicaciones instantáneas..

La última pieza del rompecabezas es crear una aplicación instantánea con múltiples funciones, por lo que en la tercera parte le mostraré cómo agregar un segundo módulo de funciones a su aplicación y cómo usar los enlaces de aplicaciones de Android para asignar este módulo a una URL diferente.. 

¿Qué son las aplicaciones instantáneas??

Una de las mejores maneras de describir las aplicaciones instantáneas es mirar un ejemplo de cuándo podría usarlas..  

Imagina que un amigo te ha enviado un enlace a un video de un gato que prometen que vas a amor, pero cuando toca el enlace, queda claro que necesita descargar una aplicación antes de poder ver este video en particular.  

Independientemente de si terminas descargando la aplicación, o ignoras el enlace y te arriesgas a perderte el mejor video de gatos que ofrece Internet, esta es una mala experiencia para el usuario, y es un escenario con el que muchos usuarios de Android están familiarizados.. 

La mayoría de nosotros hemos tenido la experiencia de instalar una aplicación solo para completar una tarea única. Por ejemplo, puede descargar una aplicación solo para ver un archivo adjunto de correo electrónico que alguien le ha enviado, para completar una compra en un sitio web específico o para rastrear un paquete que actualmente se está abriendo camino hacia su dirección.

Ahora imaginemos nuestro escenario de video Cat, pero esta vez el desarrollador de la aplicación ha colocado todo el código y los recursos necesarios para reproducir el contenido del video dentro de su propio módulo de características de aplicación instantánea, y ha asignado este módulo a la URL www.example.com/video. Esta vez, cuando toca www.example.com/video/cat-video, Google Play reconoce que esta URL está asociada con un módulo de aplicación instantánea y recupera todo el código y los recursos que necesita para reproducir este video. ¿El final resulto? Puedes disfrutar de 20 segundos de un gato jugando en una caja sin tener que instalar nada, lo cual es una mucho mejor experiencia de usuario.  

¿Por qué debería comenzar a utilizar la función de aplicación instantánea??

Como verá en la próxima publicación de esta serie, agregar el soporte de Instant App a un proyecto existente puede ser un proceso desalentador, que a menudo requiere que cambie por completo la forma en que está estructurada su aplicación..

Ya que la reestructuración de un proyecto no es una decisión que debe tomar a la ligera, en esta sección lo ayudaré a decidir si realmente vale la pena todo ese tiempo y esfuerzo, al cubrir todos los beneficios principales de agregar soporte de aplicación instantánea a su proyectos:

  • Elimina una barrera entre tu aplicación y los nuevos usuarios.. Instalar una aplicación a través de Google Play no es un proceso particularmente difícil o que requiere mucho tiempo, pero sigue siendo la barrera más grande entre tu aplicación y los posibles nuevos usuarios. No importa cuánto tiempo dediques a crear una atractiva página de Google Play que haga que la mayoría de los usuarios la revuelvan. Instalar botón, algunas personas lo harán siempre abandono en el momento de la instalación. 
  • Te ayuda a llegar a nuevos usuarios.. Si bien siempre ha podido promocionar su aplicación en varios lugares de la web, como su propio sitio web, blog o redes sociales, la conexión con nuevos usuarios ya ha confiado en que visiten la página de Google Play de su aplicación en algún momento (con el rara excepción de los usuarios que prefieren descargar sus aplicaciones). Las aplicaciones instantáneas eliminan esta dependencia en la página de Google Play de su aplicación, al hacer que su aplicación sea directamente accesible desde cualquier ubicación que admita URL, brindándole oportunidades casi ilimitadas para conectarse con nuevos usuarios.. 
  • Asegura que el contenido compartido sea el mejor anuncio posible para su aplicación.. Un usuario que comparte el contenido de su aplicación es una de las formas más efectivas de llegar a una nueva audiencia, ¡por lo que querrá causar una buena primera impresión! Anteriormente, ha sido difícil proporcionar una experiencia consistente para los usuarios que no tienen su aplicación instalada en su dispositivo, pero las aplicaciones instantáneas le permiten garantizar una experiencia nativa sin problemas para todo el mundo.
  • Ayuda a los usuarios a acceder a su aplicación, incluso frente a las restricciones de Internet. Si bien la cobertura de Internet está mejorando todo el tiempo, es posible que ocasionalmente tenga dificultades para encontrar una red rápida y confiable, o quizás se esté acercando a su asignación de datos mensual y esté preocupado por incurrir en cargos adicionales. Cuando está luchando con una conexión a Internet lenta o inconsistente, descargar una aplicación completa puede ser un proceso frustrante y que consume mucho tiempo, y cuando corre el riesgo de superar su asignación de datos, descargar una nueva aplicación puede ser suficiente para incurrir cargos adicionales. Todos los módulos de aplicaciones instantáneas debe tener 4 MB o menos, por lo que incluso si la descarga de una aplicación completa está fuera de la cuestión, acceder a un módulo de aplicación instantánea puede ser una opción viable. 
  • Aumentar el atractivo de la ubicación y aplicaciones sensibles al tiempo. Si bien las aplicaciones que están diseñadas para una ubicación o evento específico no son un concepto nuevo, pregúntese: ¿qué tan probable es que instale una aplicación que sé que solo podré usar por un período de tiempo limitado o en un cierta ubicación? Las aplicaciones instantáneas pueden aumentar el atractivo del tiempo y las aplicaciones sensibles a la ubicación, al permitir que el usuario acceda a todas las funciones más importantes de su aplicación con solo tocar una URL.. 

Restricciones y limitaciones

Antes de comenzar nuestro viaje de aplicación instantánea, vale la pena señalar que actualmente hay algunas cosas que las aplicaciones instantáneas no poder hacer:

  • Accede a identificadores de dispositivos como IMEI y direcciones MAC.
  • Utilizar servicios de fondo.
  • Realizar notificaciones de fondo.. 
  • Accede al almacenamiento externo del dispositivo..
  • Acceda a la lista de aplicaciones que están instaladas en el dispositivo del usuario, a menos que esas aplicaciones se hayan hecho detectables específicamente para aplicaciones instantáneas.

Además, su solicitud debe: 

  • Esté disponible para descargar de forma gratuita desde la tienda Google Play.
  • Utilice el nuevo modelo de permisos introducido en Android 6.0 (nivel de API 23). Dado que el usuario no instala una aplicación instantánea, no hay oportunidad de solicitar permisos por adelantado. Si los módulos de funciones de su aplicación instantánea requieren acceso a capacidades sensibles del dispositivo o información del usuario, deberá solicitar estos permisos en tiempo de ejecución. 
  • Soporte de enlaces de aplicaciones. Este es el mecanismo que utilizará para asignar cada uno de los módulos de su aplicación instantánea a una URL específica. Cubriré los enlaces de aplicaciones en detalle en la próxima publicación.. 

Finalmente, si su aplicación es parte del programa Designed for Families, no puede ofrecerla como una aplicación instantánea.. 

Configuración de su entorno de desarrollo

Antes de que pueda crear su primer proyecto con soporte de aplicación instantánea, deberá tener instalado lo siguiente o superior:

  • Vista previa de Android Studio 3.0
  • Android SDK 6.0
  • Android SDK Build Tools 26.x
  • Herramientas de Android SDK 25.x
  • Herramientas de la plataforma SDK de Android 25.x

También debes asegurarte de tener las últimas versiones de la biblioteca de soporte de Android y el repositorio de Android, así que abre el SDK Manager de Android Studio e instala las actualizaciones disponibles. 

Una vez que hayas instalado todo lo anterior, podrás descargar el SDK de desarrollo de aplicaciones instantáneas: 

  • Abra el Administrador de SDK y seleccione Herramientas SDK lengüeta. 
  • Seleccionar Desarrollo de aplicaciones instantáneas SDK.
  • Hacer clic Aplicar.

Actualmente, solo puedes probar aplicaciones instantáneas en un Nexus 5X, Nexus 6P, Pixel, Pixel XL o un Galaxy S7 con Android 6.0 o superior. Sin embargo, si no posee ninguno de estos dispositivos, puede crear un dispositivo virtual de Android (AVD) que emule a uno de estos dispositivos, con algunas condiciones: el AVD debe usar una imagen x86 y debe incluir las API de Google..

Como no tengo ninguno de estos dispositivos, crearé un AVD que emula un píxel: 

  • Ejecutar el administrador de AVD.
  • Haga clic en el Crear dispositivo virtual ... botón.
  • Seleccionar Pixel, y luego haga clic Siguiente.
  • Selecciona el x86 imagenes lengüeta. 
  • Seleccione una imagen del sistema que ejecute Android 6.0 e incluya las API de Google, por ejemplo Marshmallow / 23 / x86 / Android 6.0 (API de Google).
  • Hacer clic Siguiente.
  • Dale un nombre a tu AVD y haz clic Terminar.
  • Lanza tu AVD.

Finalmente, deberá iniciar sesión en una cuenta de Google en su AVD:

  • Cambia a tu AVD y abre el lanzador del dispositivo.
  • Selecciona el Google aplicación.
  • Introduzca una dirección de Gmail y una contraseña. Puede ser su cuenta de la vida real o una cuenta que haya creado únicamente con el fin de probar sus proyectos de Android.. 

Creando tu primera aplicación instantánea 

En Android Studio 3.0 Preview 1 y superior, crear un proyecto que tenga soporte integrado para la aplicación instantánea es tan fácil como seleccionar una casilla de verificación, por lo que en lugar de solo describir las funciones de la aplicación instantánea, crearemos un proyecto de la aplicación instantánea y luego lo gastaremos. El resto de este artículo obtiene una experiencia de primera mano con sus diversos componentes.. 

Tenga en cuenta que este proyecto no presenta ningún enlace de aplicaciones, por lo que no podrá probar los componentes de su aplicación instantánea en su AVD (esto es algo que exploraremos en detalle en la segunda parte).

Para crear tu proyecto:

  • Inicie el asistente de creación de proyectos, ya sea seleccionando Archivo> Nuevo> Nuevo proyecto ... desde la barra de herramientas de Android Studio, o haciendo clic en Iniciar un nuevo proyecto de Android Studio de Android Studio's Bienvenido pantalla. 
  • Asigne un nombre a su proyecto y haga clic en Siguiente
  • Selecciona el SDK mínimo a Android 6.0 (Marshmallow). 
  • Selecciona el Incluye soporte de aplicación instantánea para Android casilla de verificación y haga clic en Siguiente
  • Para ayudar a mantener las cosas simples, acepte el nombre del módulo predeterminado (característica) y luego haga clic en Siguiente.
  • Seleccionar Actividad basica y luego haga clic Siguiente.
  • En la siguiente pantalla, acepte todos los valores predeterminados y luego haga clic en Terminar.

Inmediatamente, podemos ver que este proyecto está estructurado de manera muy diferente a su proyecto típico de Android y consta de los siguientes módulos:

  • Aplicación. El módulo de aplicación instalable, también conocido como módulo APK. 
  • Base. El módulo de características base.
  • Característica. Aunque este proyecto en particular solo tiene uno, una aplicación puede constar de múltiples módulos de características.
  • Instantapp. El módulo de aplicación instantánea.. 

Con la excepción del módulo de funciones, cualquier proyecto que admita aplicaciones instantáneas debe tenga todos los módulos anteriores, así que exploremos cada uno de estos módulos en detalle.  

1. Módulo de aplicación

El concepto de un módulo de aplicación puede no ser nada nuevo, pero cuando su proyecto admite aplicaciones instantáneas, el Manifiesto del módulo de la aplicación parece mucho más vacío de lo que probablemente esté acostumbrado a: 

Hay una razón por la que este archivo está tan vacío: cuando creas tu proyecto, el contenido de todos los demás archivos Manifest ubicados a lo largo de tu característica base y característica Los módulos se combinan con este archivo, por lo que no se quedará vacío para siempre.! 

Si abres este módulo construir.gradle archivo, entonces te darás cuenta de dos nuevos elementos: 

dependencias proyecto de implementación (': feature') proyecto de implementación (': base')

Aquí, estamos declarando que nuestro módulo de aplicación tiene una dependencia en el característica módulo y base módulo. 

Cuando agrega soporte de aplicación instantánea a un proyecto, separa el código y los recursos relacionados en módulos de funciones que pueden funcionar independientemente de la aplicación instalable. Sin embargo, estos módulos aún son parte de su aplicación instalable, en lugar de entidades separadas, por lo que nuestro módulo de aplicación declara la característica y los módulos básicos como dependencias.

2. Módulo de funciones básicas

Cada proyecto de aplicación instantánea debe incluir un único módulo de funciones básicas, que contiene el código y los recursos que se utilizan en todos los módulos de la aplicación. Por ejemplo, si abres nuestro proyecto base / res / mipmap carpeta, luego verá todos los íconos de inicio de la aplicación, que claramente se usarán en múltiples módulos. 


Dado que contiene código y recursos comunes, todos Los módulos de funciones de su proyecto dependen de este módulo de funciones de base única.. 

Continuando con este tema, el módulo de funciones básicas contiene las entradas de manifiesto que se utilizan en todo el proyecto. Por ejemplo, su proyecto base / src / main / AndroidManifest.xml el archivo contiene la configuración del icono, tema y etiqueta de su aplicación: 

   

El otro elemento notable es el módulo base. construir.gradle archivo, que contiene algunos atributos nuevos:

// Todas las funciones básicas y los módulos de funciones "regulares" usan el complemento com.android.feature, en lugar del complemento com.android.application // aplique el complemento: 'com.android.feature' android compileSdkVersion 26 buildToolsVersion "26.0.0 "// Especifique que esta es la única función básica del proyecto, usando la expresión 'baseFeature true' // baseFeature true ...…… dependencies // Use 'application project' para agregar una dependencia desde el módulo de funciones básicas, a su módulo 'aplicación' instalable del proyecto // proyecto de la aplicación (': aplicación') // Utilice 'proyecto de características' para hacer referencia al módulo de características de nuestro proyecto, denominado apropiadamente 'característica' // proyecto de características (': característica') 

También notarás que este particular construir.gradle falta un archivo ID de aplicación atributo, y (alerta de spoiler) encontrará exactamente lo mismo cuando venimos a inspeccionar nuestros módulos de funciones construir.gradle expediente. Nuestros proyectos ID de aplicación Se declara en el módulo de la aplicación. construir.gradle expediente solamente.

los proyecto de aplicación (:aplicación) línea en nuestro módulo base construir.gradle archivo (ver arriba) asegura que el proyecto solo ID de aplicación atributo se propaga a través de todos de nuestro construir.gradle Archivos, por lo que este atributo falta en el resto de nuestro proyecto.. 

3. Módulo de funciones

Cuando finalmente llegue a agregar el soporte de Instant App a un proyecto existente, su tarea más importante será extraer cada una de las características de su aplicación en su propio módulo de características, ya que cada módulo de características contiene el código y los recursos necesarios para entregar esta característica. solamente. 

Si abres nuestro proyecto característica módulo, entonces verás que contiene el Actividad principal clase, más actividad_main y content_main Archivos de recursos: esencialmente todos los componentes que se incluyen en el Actividad basica modelo.  

Un único módulo de funciones puede constar de varias actividades, pero cada módulo debe tener al menos una actividad designada como punto de entrada de este módulo.. 

Cada Actividad de punto de entrada se asigna a una URL específica, de modo que cuando el usuario toca esta URL, carga la Actividad asociada y el usuario tiene acceso a este módulo de características en particular. 

Usted designa la actividad de punto de entrada de un módulo a través del manifiesto de ese módulo. Esencialmente, necesita abrir este archivo y agregar lo siguiente a la Actividad que desea usar como punto de entrada: 

  • Un filtro de intención, con el CATEGORY_LAUNCHER y ACTION_MAIN intenciones.
  • UNA Elemento que contiene toda la información sobre la URL que desea asignar a este punto de entrada Actividad. 
  • los Android: autoVerify atributo. Esto le indica al sistema que verifique que su aplicación tenga permiso para actuar como el controlador predeterminado para esta URL en particular. Este es un mecanismo de seguridad importante que ayuda a proteger a los propietarios de sitios web de aplicaciones malintencionadas que podrían intentar secuestrar sus URL.

Si abre el archivo de manifiesto de nuestro módulo de funciones, verá que todo este código ya se ha agregado a nuestra Actividad principal declaración:

            

El archivo final que vamos a ver en este módulo es el construir.gradle Archivo, que contiene unas pocas líneas de código digno de mención: 

// Nuevamente, estamos usando el complemento com.android.feature, en lugar de com.android.application // aplicar el complemento: 'com.android.feature' android // Como se mencionó anteriormente, a esta sección le falta un 'applicationID' atributo //……… dependencias implementación fileTree (dir: 'libs', incluye: ['* .jar']) androidTestImplementation ('com.android.support.test.espresso: espresso-core: 2.2.2',  exclude group: 'com.android.support', módulo: 'support-anotaciones') // Todos los módulos de funciones dependen del módulo de funciones base, que declaramos aquí // proyecto de implementación (': base') pruebaImplementación 'junit: junit: 4.12' 

Dado que todos los módulos de funciones dependen del módulo de funciones base, la primera vez que el usuario solicita alguna característica de su aplicación, recibirán el módulo de características base más el módulo de características que en realidad están tratando de acceder. 

Tenga en cuenta que aunque este proyecto en particular consiste en un módulo de características base y un módulo de funciones, si su aplicación solo tiene una función que desea que esté disponible como aplicación instantánea, entonces es posible crear un proyecto que consiste en un módulo de funciones básico solamente. Veremos ambos "tipos" de proyecto de aplicación instantánea a lo largo de esta serie. 

4. Módulo de aplicación instantánea

El módulo de la aplicación instantánea tiene un propósito simple: actúa como un contenedor que toma todos sus módulos de funciones y los convierte en APK de aplicaciones instantáneas.

Si abres el módulo de aplicación instantánea de este proyecto, verás que está bastante vacío, aparte de un construir.gradle archivo, que simplemente declara su módulo de funciones base y su módulo de funciones como dependencias:

aplique el complemento: dependencias 'com.android.instantapp' proyecto de implementación (': feature') proyecto de implementación (': base')

Probando tu aplicación

Dado que este proyecto no contiene ningún enlace de aplicación, no podremos probar sus componentes de aplicación instantáneos, pero aún podemos ejecutar este proyecto como una aplicación instalable. Esto puede no parecer particularmente emocionante, pero teniendo en cuenta que la mayor parte del código y los recursos de nuestro proyecto se encuentran en el módulo de características de la aplicación instantánea, es importante probar cómo funciona nuestro proyecto como una aplicación instalable.. 

Inicie el AVD que creamos anteriormente o conecte un teléfono inteligente o tableta física compatible con Android a su máquina de desarrollo, y luego seleccione Ejecutar> Ejecutar ...> aplicación de la barra de herramientas de Android Studio. 

A pesar del hecho de que todos nuestros Actividad principal El código se encuentra en el módulo de funciones, una vez que nuestra aplicación se cargue, verá el Actividad principalel botón de acción flotante (FAB) y Hola Mundo mensaje. Lo que estamos viendo aquí es nuestro módulo de aplicación que toma el código y los recursos que se encuentran en los módulos de funciones básicas y de funciones de la aplicación instantánea, y los combina en una aplicación instalable. 

Conclusión 

En este tutorial, analizamos cómo funcionan las aplicaciones instantáneas y exploramos las diversas razones por las que es posible que desee agregar soporte de aplicaciones instantáneas a sus proyectos de Android. 

En un mundo ideal, su decisión de comenzar a explorar las aplicaciones instantáneas coincidiría perfectamente con el inicio de un nuevo proyecto de Android, pero desafortunadamente, ser un desarrollador rara vez es tan conveniente. Es mucho más probable que tenga que reconfigurar un proyecto existente para admitir Instant Apps, lo cual no es bastante tan sencillo como seleccionar una casilla de verificación en el asistente de creación de proyectos de Android Studio! 

En la próxima publicación, analizaremos en profundidad cómo agregar soporte de aplicaciones instantáneas a un proyecto existente. También le mostraré cómo implementar los enlaces de aplicaciones, por lo que al final de la próxima publicación, habrá creado una aplicación instantánea con todas las funciones que puede iniciar y probar en cualquier dispositivo AVD o Android compatible.. 

.