Scroll to top

Spanish (Español) translation by Alfonso Mora (you can also view the original English article)

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

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

Todo lo que está en su lista de deseos, conseguir su aplicación frente a tantos usuarios como sea posible siempre va a algún lugar en esa lista, y Android Apps Instant es una nueva característica que puede ayudarle a hacer precisamente eso.

Aplicaciones instantáneas proporcionan una forma totalmente nueva de llegar a los usuarios que no tienen la aplicación instalada en su dispositivo, haciendo su aplicación localizable y accesible desde cualquier lugar soporta URLs, incluyendo correos electrónicos, resultados de búsqueda de Google, mensajes en redes sociales, comentarios de YouTube y foros.

Esencialmente, aplicaciones instantánea permite separar cada una de las características de su aplicación en un módulo independiente. Los usuarios entonces pueden cargar cualquiera de estos módulos aplicación instantánea en-demanda pulsando una dirección URL que has asignado a este módulo específico y sin tener que instalar la aplicación en cualquier momento.

En esta serie de tres partes, va ser que muestra cómo agregar ayuda de inmediata aplicación a sus proyectos Android. Al final de esta serie, habrá creado una aplicación que se compone de dos aplicación instantánea característica módulos independientes, que puede lanzar y probar en cualquier dispositivo compatible con Android.

Lo que Vamos a Cubrir

En este primer post, a centrarme en lo instantáneo son, cómo funcionan y por qué debería importarte sobre ellos. Para darte una experiencia de primera mano de instantánea aplicaciones, vamos a usar a asistente de creación de proyectos Android Studio para generar una aplicación que se ha preconfigurado con el apoyo de la aplicación instantánea, por lo que serás capaz de ver los diferentes componentes de aplicación inmediata, en lugar de simplemente leer sobre ellos.

Creando una aplicación que ha configurado previamente con el apoyo de la aplicación inmediata es la forma más rápida y fácil para utilizar esta función, en realidad es mucho más probable agregar compatibilidad con aplicación inmediata a un proyecto existente, por lo que en la segunda parte te voy a mostrar cómo hacerlo exactamente. A fuente de una aplicación que puede descargar desde GitHub y luego llevarlo a través del proceso paso a paso de reconfigurar este proyecto para apoyar aplicaciones instantánea.

La pieza final del rompecabezas es crear una aplicación instantánea varios destacados, por lo que en parte tres te voy a mostrar cómo agregar un segundo módulo de la función a su aplicación y uso de enlaces de aplicación Android para asignar este módulo a una URL diferente.

¿Qué es Instant Apps?

Una de las mejores maneras para describir Instant Apps es mirar un ejemplo de cuando se puede utilizar.

Imagina un amigo te ha enviado un enlace a un vídeo de gato que prometen que vas a amar, pero cuando usted pulse el enlace queda claro que es necesario descargar una aplicación antes de que se puede ver este video en particular.

Sin importar si terminan descargando la aplicación, o ignorar el enlace y el riesgo de perderse en el mejor video de gato el Internet tiene para ofrecer, se trata de una mala experiencia de usuario y es un escenario que muchos usuarios de Android conocen.

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

Ahora Imaginemos nuestro escenario video de gato nuevamente, pero esta vez desarrollador de la aplicación ha colocado el código y recursos necesarios para reproducir contenido de vídeo dentro de su propio módulo de función de aplicación instantánea y asignan este módulo a la URL www.example.com/video. Esta vez, cuando busque www.example.com/video/cat-video, Google Play reconoce que esta dirección URL está asociada a un módulo de aplicación instantánea y recupera todo el código y recursos que necesita para reproducir este vídeo. ¿El resultado final? Se pueden disfrutar de 20 segundos de un gato jugando en una caja sin tener que instalar nada, que es una experiencia de usuario mucho mejor.

¿Por qué Debo Empezar a Usar la Característica de Instant App?

Como verá en el próximo post de esta serie, añadiendo la aplicación instantánea apoyo a un proyecto existente puede ser un arduo proceso, que a menudo requiere cambiar completamente la forma de que su aplicación se estructura.

Puesto que la reestructuración de un proyecto no es una decisión que usted debe nunca tomar a la ligera, en esta sección voy a ayudarle a decidir si todo lo que el tiempo y esfuerzo merece la pena, por que cubre todos los principales beneficios de la adición de inmediata aplicación a sus proyectos:

  • Elimina una barrera entre su aplicación y los usuarios nuevos. Instalar una aplicación a través de Google Play no es un proceso particularmente difícil o requiere mucho tiempo, pero sigue siendo el mayor obstáculo entre su aplicación y posibles nuevos usuarios. No importa cuánto tiempo usted pasa crear una atractiva Página Google Play que tendrá la mayoría de los usuarios luchando para que el botón Instalar, algunas personas siempre caerá hacia fuera en el momento de la instalación.
  • Le ayuda a llegar a nuevos usuarios. Mientras que usted siempre ha sido capaz de promover su aplicación en varios lugares alrededor de la web, como su propio sitio web, blog o redes sociales, conectar con los usuarios nuevos ha confiado anteriormente en ellos visitando su página de Google Play en algún momento (con la rara excepción de los usuarios que prefieren sus aplicaciones montaje lateral). Aplicaciones instantáneas eliminar esta dependencia en la página de Google Play de su aplicación, haciendo su uso accesible desde cualquier lugar que soporta direcciones URL, que le da oportunidades casi ilimitadas para conectar con nuevos usuarios.
  • Se asegura que el contenido compartido es la mejor publicidad posible para su aplicación. Un usuario compartir contenido de la aplicación es una de las formas más efectivas de llegar a un público nuevo, así que usted querrá hacer una buena primera impresión! Anteriormente, ha sido difícil proporcionar una experiencia consistente para los usuarios que no tienen la aplicación instalada en su dispositivo, pero instantáneas aplicaciones le permiten garantizar una experiencia sin fisuras, nativa de todo el mundo.
  • Ayuda a los usuarios acceder a su aplicación, incluso frente a las restricciones de Internet. Mientras que la cobertura de Internet está mejorando todo el tiempo, usted puede todavía de vez en cuando se esfuerzan por encontrar una red rápida y confiable, o tal vez se acerca a su asignación mensual de datos y preocupa incurrir en cargos adicionales. Cuando estás luchando con una conexión a Internet lenta o incoherente, descargando una aplicación completa puede ser un proceso largo y frustrante, y cuando estás en peligro de ir sobre la asignación de datos, descarga una nueva aplicación puede ser suficiente para incurrir en cargos adicionales. Todos los módulos de aplicaciones instantáneas deben ser 4MB o menos, así que aunque descargando una aplicación entera está fuera de lugar, luego acceder a un módulo de aplicación instantánea puede todavía ser una opción viable.
  • Aumentar el atractivo de localización y aplicaciones sensibles al tiempo. Mientras que las aplicaciones que están diseñadas para una ubicación específica o evento no son un concepto nuevo, pregúntate: ¿soy yo para instalar una app que sé que sólo podré utilizar por un período limitado de tiempo, o en un lugar determinado? Aplicaciones instantáneas pueden aumentar el recurso del tiempo y aplicaciones sensibles a la ubicación, que permite al usuario acceder a toda la funcionalidad más importante de su aplicación en el grifo de una dirección URL.

Restricciones y Limitaciones

Antes de empezar nuestro viaje de aplicación instantánea, cabe señalar que actualmente hay unas cosas que no puede hacer las aplicaciones instantáneas:

  • Identificadores de dispositivo de acceso como el IMEI y direcciones MAC.
  • Utilizar los servicios de fondo.
  • Realizar notificaciones de fondo.
  • Acceso a almacenamiento externo del dispositivo.
  • Acceder a la lista de aplicaciones instaladas en el dispositivo del usuario, a menos que esas aplicaciones específicamente han hecho reconocible para aplicaciones instantaneas.

Además, su aplicación debe:

  • Estar disponible para descargar gratuitamente desde la tienda Google Play.
  • Utilice el nuevo modelo de permisos en Android 6.0 (nivel de API 23). Puesto que el usuario no instala una aplicación inmediata, no hay ninguna oportunidad para solicitud de permisos hasta el frente. Si sus módulos de característica instantánea de la aplicación requieren acceso a las capacidades del dispositivo sensible o información del usuario, entonces usted necesitará solicitar estos permisos en tiempo de ejecución.
  • Enlaces de apoyo de la aplicación. Este es el mecanismo que utilizará para asignar cada uno de los módulos de aplicación instantánea a una URL específica. Cubriré la aplicación enlaces en detalle en el próximo post.

Finalmente, si su aplicación es parte del progama Diseñado para Familias, entonces usted no puede ofrecerla como una aplicación inmediata.

Configurar el Entorno de Desarrollo

Para poder crear su primer proyecto con el apoyo inmediato de la aplicación, usted tiene que tener los siguientes o una versión posterior instalada:

  • Android Studio 3.0 Preview
  • Android SDK 6.0
  • Android SDK Build Tools 26.x
  • Android SDK Tools 25.x
  • Android SDK Tools 25.x

También asegúrese de tener las últimas versiones de la Biblioteca de soporte Android y Repositorio de Android, entonces abrir Android Studio’s SDK Manager e instalar las actualizaciones disponibles.

Una vez que has instalado todo lo anterior, usted será capaz de descargar el SDK de Desarrollo de Aplicaciones Instantaneas:

  • Abra el SDK Manager y seleccione la pestaña SDK Tools.
  • Seleccione Instant Apps Development SDK.
  • Haga clic en Aplicar.

En la actualidad, sólo puede probar aplicaciones instantáneas en un Nexus 5 X, Nexus 6P, Pixel, Pixel XL o un S7 Galaxy que se está ejecutando Android 6.0 o superior. Sin embargo, si usted no posee alguno de estos dispositivos puede crear un Android Virtual dispositivo (AVD) que emula a uno de estos dispositivos, con unas condiciones: la AVD debe utilizar un x86 imagen y deben incluir las APIs de Google.

Ya que no tengo ninguno de estos dispositivos, que voy a crear un AVD que emula un píxel:

  • Lance el AVD Manager.
  • Haga clic en el botón Crear dispositivo virtual.
  • Seleccione Pixel y haga clic en Siguiente.
  • Seleccione la ficha x86 Images.
  • Seleccione una imagen del sistema que se está ejecutando Android 6.0 e incluye las APIs de Google, por ejemplo Marshmallow / 23 / x86 / Android 6.0 (Google APIs).
  • Haga clic en Siguiente.
  • Darle un nombre a su AVD y haga clic en Finalizar.
  • Lanzar su AVD.

Por último, necesitarás iniciar sesión en una cuenta de Google en su AVD:

  • Cambie a su AVD y abrir el lanzador del equipo.
  • Seleccione la aplicación de Google.
  • Introduzca una dirección de Gmail y contraseña. Esto puede ser su cuenta de la vida real, o una cuenta que has creado exclusivamente para los fines de probar tus proyectos Android.

Crear tu Primera Aplicación Instantánea

En Android Studio 3.0 Preview 1 y superiores, crear un proyecto que incluye soporte instantáneo de la aplicación es tan fácil como seleccionar una casilla de verificación, así que en lugar de sólo describir características de aplicación instantánea, vamos a crear un proyecto de aplicación instantánea y luego pasar el resto de este artículo que alguna experiencia de primera mano con sus diferentes componentes.

Sólo ten en cuenta que este proyecto no cuentan con los enlaces de la App, así que no podrás poner a prueba sus componentes de aplicación inmediata en su AVD (esto es algo que voy explorando en detalle en la segunda parte).

Para crear su proyecto:

  • Iniciar el Asistente de creación de proyecto, ya sea seleccionando Archivo > Nuevo > Nuevo proyecto... desde la barra de herramientas de Studio Android, o haciendo clic en Inicio un nuevo proyecto de Android Studio desde la pantalla de Bienvenida de Android Studio.
  • Dar un nombre a tu proyecto y haga clic en Siguiente.
  • Establezca el Minimo SDK a Android 6.0 (Marshmallow).
  • Selecione la casilla Soporte para aplicación instantánea Android y haga clic en Siguiente.
  • Para ayudar a mantener las cosas simples, acepte el nombre predeterminado del módulo (feature) y haga clic en Siguiente.
  • Seleccione Actividad Básica y haga clic en Siguiente.
  • En la siguiente pantalla, aceptar todos los valores por defecto y a continuación, haga clic en Finalizar.

Inmediatamente, podemos ver que este proyecto se estructura muy diferente del típico proyecto Android y consta de los siguientes módulos:

  • App. El aplicación que puede instalar el módulo, también conocido como un APK.
  • Base. El módulo de función de base.
  • Feature. Aunque este proyecto en particular tiene sólo uno, una aplicación puede consistir en varios módulos de función.
  • Instantapp. El módulo de aplicación instantánea.
Projects with instant app support are structured differently to regular installable-only projectsProjects with instant app support are structured differently to regular installable-only projectsProjects with instant app support are structured differently to regular installable-only projects

Con la excepción del módulo de función, cualquier proyecto que soporta aplicaciones instantáneas debe tener todos los módulos anteriores, así que vamos a explorar cada uno de estos módulos en detalle.

1. Módulo de Aplicación

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

1
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
  package="com.jessicathornsby.myapplication.app" />

Hay una razón por qué este archivo está tan vacío: al generar el proyecto, el contenido de todos los demás archivos manifiestos en toda su característica basecaracterística módulos de función se combina con este archivo, por lo que no va a permanecer vacía para siempre!

Si abres el archivo build.gradle de este módulo, entonces se dará cuenta de dos nuevos elementos:

1
dependencies {
2
   implementation project(':feature')
3
   implementation project(':base')  
4
}

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

Cuando se agrega soporte de aplicación inmediata a un proyecto, se separan código y recursos en módulos de función que pueden funcionar independientemente de la aplicación instalable. Sin embargo, estos módulos son todavía partes de su aplicación instalable, en lugar de entidades separadas, razón por la cual declara nuestro módulo de aplicación de los módulos de función y base como dependencias.

2. Características del Módulo Base

Cada proyecto de aplicación instantánea debe incluir un módulo de función base única, que contiene el código y los recursos que se utilizan a través de módulos de la aplicación. Por ejemplo, si abres la carpeta de nuestro proyecto base/res/mipmap, entonces verás todos los iconos de la aplicación launcher, que claramente va a ser utilizado a través de múltiples módulos.

The base feature module includes the ic_launcher drawablesThe base feature module includes the ic_launcher drawablesThe base feature module includes the ic_launcher drawables

Ya que contiene código y recursos comunes, todos los módulos de función de su proyecto dependen de este unico módulo de característica base.

Continuando con este tema, el módulo de función base contiene las entradas manifiestas que se utilizan a través de su proyecto. Por ejemplo, el archivo del proyecto base/src/main/AndroidManifest.xml contiene la configuración de icono de la aplicación, tema y etiqueta:

1
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
   package="com.jessicathornsby.myapplication">
3
4
   <application
5
       android:allowBackup="true"
6
       android:icon="@mipmap/ic_launcher"
7
       android:label="@string/app_name"
8
       android:roundIcon="@mipmap/ic_launcher_round"
9
       android:supportsRtl="true"
10
       android:theme="@style/AppTheme" />
11
</manifest>

El otro elemento notable es archivo build.gradle del módulo base, el cual contiene unos atributos nuevos:

1
//All base feature and “regular” feature modules use the com.android.feature plugin, rather than the com.android.application plugin//
2
3
apply plugin: 'com.android.feature'
4
5
android {
6
   compileSdkVersion 26
7
   buildToolsVersion "26.0.0"
8
9
//Specify that this is the project’s one and only base feature, using the ‘baseFeature true’ expression//
10
11
   baseFeature true
12
13
14
15
dependencies {
16
17
//Use ‘application project’ to add a dependency from the base feature module, to your project’s installable ‘app’ module//
18
19
   application project(':app')
20
21
//Use ‘feature project’ to reference our project’s feature module, aptly named ‘feature’//
22
23
   feature project(':feature')
24

Usted también notará que falta este archivo build.gradle particular un atributo applicationID y (alerta de spoiler) encontrarás exactamente lo mismo cuando nos acercamos a inspeccionar archivo build.gradle de nuestro módulo función. ApplicationID de nuestro proyecto es declarado en build.gradle archivo del módulo de la aplicación solamente.

La línea de application project(:app) en archivo build.gradle de nuestro módulo base (véase arriba) asegura que atributo applicationID solo del proyecto se propaga a través de todos nuestros archivos build.gradle, razón por la cual este atributo está ausente en el resto de nuestro proyecto.

3. Módulo Feature

Al llegar eventualmente añadir soporte de aplicación inmediata a un proyecto existente, su tarea más grande se ser extraer cada una de las características de la aplicación en su propio módulo feature, ya que cada módulo de feature contiene el código y recursos que se requieren para ofrecer sólo esta característica .

Si se abre el módulo feature de nuestro proyecto, entonces verás que contiene la clase MainActivity, los archivos de recursos de clase, además de activity_main y content_main, esencialmente todos los componentes que se incluyen en la plantilla de Actividad Básica.

The projects feature module contains all the code and resources that are specific to this featureThe projects feature module contains all the code and resources that are specific to this featureThe projects feature module contains all the code and resources that are specific to this feature

Un módulo feature solo puede consistir en múltiples actividades, pero cada módulo debe tener al menos una actividad que se señala como punto de partida de este módulo.

Cada actividad de punto de entrada se asigna a una dirección URL determinada, para que cuando el usuario aprovecha esta URL carga la actividad asociada y el usuario tiene acceso a este módulo feature particular.

Designar a punto de entrada de actividad de un módulo a través de manifiesto de ese módulo. Esencialmente, debe abrir este archivo y agregue lo siguiente a la actividad que desea utilizar como su punto de entrada:

  • Un filtro de intención, con los intentos CATEGORY_LAUNCHER y ACTION_MAIN.
  • A <data> elemento que contiene toda la información sobre la URL que desea asignar a esta actividad de punto de entrada.
  • El atributo android: autoVerify. Esto le indica al sistema para verificar que su aplicación tiene permiso para actuar como el controlador predeterminado para esta URL particular. Se trata de un mecanismo de seguridad importante que ayuda a proteger a propietarios de sitios web de aplicaciones maliciosas que podrían tratar de secuestrar sus URLs.

Si abres el archivo de manifiesto del módulo de nuestra función, a ver que todo este código ya se ha agregado a nuestra declaración MainActivity:

1
<activity
2
   android:name=".MainActivity"
3
   android:label="@string/app_name"
4
   android:theme="@style/AppTheme.NoActionBar">
5
   <intent-filter android:order="1">
6
       <action android:name="android.intent.action.VIEW" />
7
8
       <category android:name="android.intent.category.BROWSABLE" />
9
       <category android:name="android.intent.category.DEFAULT" />
10
11
       <data
12
           android:host="jessicathornsby.com"
13
           android:path="www.example.com/MainActivity"
14
           android:scheme="https" />
15
   </intent-filter>
16
   <intent-filter>
17
       <action android:name="android.intent.action.MAIN" />
18
19
       <category android:name="android.intent.category.LAUNCHER" />
20
   </intent-filter>
21
    <intent-filter android:autoVerify="true">

El archivo final que vamos a ver de este módulo es el archivo build.gradle, que contiene unas pocas líneas de código destacado:

1
//Again, we’re using com.android.feature plugin, rather than com.android.application//
2
3
apply plugin: 'com.android.feature'
4
5
android {
6
7
//As previously mentioned, this section is missing an ‘applicationID’ attribute//
8
9
10
11
12
dependencies {
13
   implementation fileTree(dir: 'libs', include: ['*.jar'])
14
   androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
15
       exclude group: 'com.android.support', module: 'support-annotations'
16
   })
17
18
//All feature modules have a dependency on the base feature module, which we’re declaring here//
19
20
   implementation project(':base')
21
   testImplementation 'junit:junit:4.12'

Puesto que todos los módulos de función dependen del módulo de función de base, la primera vez que el usuario solicita cualquier característica de la aplicación, recibirá el módulo de función base más el módulo feature que realmente están tratando de acceder.

Tenga en cuenta que aunque este proyecto consiste en un módulo feature base y un módulo feature, si su aplicación sólo tiene una característica que se desea que esté disponible como una aplicación inmediata, entonces es posible crear un proyecto que consta de un solo módulo feature base. ¡Voy mirando en ambos "tipos" de proyecto de aplicación instantánea a lo largo de esta serie.

4. Módulo Instant App

El módulo Instant App tiene un propósito simple: actúa como un contenedor que tiene todos los módulos de función y los convierte en Instant App APKs.

Si abre módulo de Instant App de este proyecto, a ver que está bastante vacío aparte un archivo build.gradle, que simplemente declara su característica base y su módulo feature como dependencias:

1
apply plugin: 'com.android.instantapp'
2
3
dependencies {
4
   implementation project(':feature')
5
   implementation project(':base')
6
}

Probando su Aplicación

Puesto que este proyecto no contiene ningún enlace de la aplicación, no podremos poner a prueba sus componentes de aplicación inmediata, pero todavía podemos ejecutar este proyecto como una aplicación instalable. Esto no puede parecer particularmente emocionante, pero teniendo en cuenta que la mayor parte de nuestro proyecto código y recursos se encuentran en el módulo feature de aplicación inmediata, es importante comprobar cómo nuestro proyecto funciona como una aplicación instalable.

Lanzar el AVD que creamos anteriormente o conectar un smartphone Android de física compatible o tablet a tu máquina de desarrollo y seleccione Ejecutar > Ejecutar... > app en la barra de herramientas de Android Studio.

A pesar de que todo nuestro código MainActivity se encuentra en la función módulo, una vez que nuestra aplicación carga te verás el MainActivity botón flotante (FAB) y mensaje Hola Mundo. Lo que estamos viendo aquí es nuestro módulo de aplicación tomando código y recursos que se encuentran en separan la característica instantánea de la aplicación y característica base módulos y combinarlos en una aplicación instalable.

Conclusión

En este tutorial nos echó un vistazo de alto nivel en funcionamiento aplicaciones instantánea y exploraron diversas razones por qué querrá añadir aplicación inmediata apoyan a tus proyectos Android.

En un mundo ideal, su decisión de comenzar a explorar aplicaciones instantánea coincidiría perfectamente con el comienzo de un nuevo proyecto Android, pero lamentablemente, ser un desarrollador es raramente esto conveniente! Es mucho más probable que usted tendrá que volver a configurar un proyecto existente para apoyar aplicaciones instantánea, que no es absolutamente tan simple como seleccionar una casilla de verificación Asistente de creación de proyectos Android Studio!

En el siguiente post, tomaremos una mirada en profundidad en cómo añadir soporte de aplicación inmediata a un proyecto existente. También le mostraré cómo implementar enlaces de aplicación, por lo que al final del siguiente post habrá creado una aplicación instantánea totalmente funcional que puede lanzar y probar en cualquier dispositivo Android o AVD compatible.

¡Estad atentos! Y mientras tanto, algunos de nuestros otros posts sobre desarrollo de aplicaciones Android.