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.
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..
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.
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:
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:
Además, su solicitud debe:
Finalmente, si su aplicación es parte del programa Designed for Families, no puede ofrecerla como una aplicación instantánea..
Antes de que pueda crear su primer proyecto con soporte de aplicación instantánea, deberá tener instalado lo siguiente o superior:
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:
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:
Finalmente, deberá iniciar sesión en una cuenta de Google en su AVD:
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:
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:
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.
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.
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..
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:
CATEGORY_LAUNCHER
y ACTION_MAIN
intenciones.
Elemento que contiene toda la información sobre la URL que desea asignar a este punto de entrada Actividad. 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.
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')
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 principal
el 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.
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..
.