Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK

Lleva Tu App Android a Chromebooks

by
Read Time:16 minsLanguages:

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

Pídele a cualquier desarrollador que nombre el reto más grande de desarrollar para Android, y lo más seguro es que digan fragmentación. Crear una app que sea lo suficientemente flexible para correr en el enorme rango de dispositivos que caen bajo la categoría 'Android' es un gran dolor de cabeza que la mayoría de desarrolladores Android han experimentado en algún punto.

¡Pero desarrollar para una plataforma fragmentada tiene su lado bueno! Debido a que hay tantos dispositivos Android diferentes ahí afuera, tu app tiene el potencial de conectar con una gran audiencia--y esa audiencia recientemente se ha vuelto mucho más grande, ya que las apps Android ahora pueden correr en Chrome OS.

En este artículo, te mostraré como puedes tener tu proyecto de app Android más reciente corriendo en Chrome OS. Y debido a que quieres proporcionar la mejor experiencia de usuario posible sobre esta nueva plataforma, también estaré echando un vistazo a cómo optimizar tu app Android, para que puedas realmente sorprender a tu nueva audicencia de Chromebook.

¿Es Mi App Apta para Chromebooks?

Como desarrollador Android, poner tu app frente a tanta gente como sea posible debería ser siempre tu máxima prioridad, ¿correcto?

No necesariamente.

Solo porque las apps Android son ahora compatibles con Chrome OS, no siginifica que todas las app Android vayan a ser automáticamente adecuadas para esta nueva plataforma.

Imagina que identificas una app que te atrae visualmente, y Google Play muestra que esta app es compatible con tu smartphone y con tu Chromebook. Decides descargar la app a tu laptop e inmediatamente te das cuenta que la mayoría de las características de la app dependen de hardaware específico del móvil, tales como la habilidad de realizar llamadas y mandar mensajes SMS.

¿El resultado final? La app es básicamente inútilizable en Chrome OS. La desinstalas de inmediato, sintiendo que el desarrollador ha desperdiciado tu tiempo por completo, y les dejas una crítica negativa en Google Play como pago.

Una app que no soporta Chrome OS es, en el peor de los casos, medianamente molesta para usuarios de Chromebook, pero una app que provee una terrible experiencia de usuario sobre Chrome OS es mucho peor.

Antes de que te sumerjas y empieces a preparar tu app para su debut en Chrome OS, toma unos momentos para pensar si tu app tiene realmente algo que ofrecer a los usuarios de Chromebook.

Tu típica Chromebook tiene hardware muy diferente al de tu típico smartphone o tablet Android. El hardaware será un tema recurrente a lo largo de este artículo, pero por ahora enfócate solo en la lista de características de tu aplicación--¿alguna de estas características te vuelve incompatible con tu típica laptop?

Por ejemplo, es poco probable que la aplicación de podómetro en la que has estado trabajando funcione alguna vez en Chrome OS, ya que las laptops típicamente no tienen el hardware necesario para medir pasos (¿y cuándo fue la última vez que viste a alguien llevando su Chromebook a correr por la mañana, de cualquier manera?).

Si tu app incluye algunas características incompatibles, ¿entonces hay alguna manera de que puedas modificar esas características para hacerlas más amigables para Chromebook? Si la respuesta es "no", entonces necesitas deshabilitar esas características cuando tu app esté corriendo en Chrome OS, lo que lleva a otra cuestión: ¿puede todavía tu app proveer una buena experiencia de usuario, incluso sin estas caraterísticas? Si parece poco probable, entonces tu app puede no ser adecuada para Chromebooks después de todo.

Ojalá, incluso si necesitas deshabilitar o modificar algunas características, tu app aún tendrá algo que ofrecer a usuarios Chromebook--¡y a estas alturas estás listo y entusiasmado por empezar a actualizar tu app para que corra en Chrome OS!

Corriendo tu APP en Chrome OS

Si tu app requiere hardware que no es soportado por Chrome OS, entonces los usuarios de Chromebook no podrán instalar tu aplicación. Y hay una pieza de hardaware en particular presente en la mayoría (sino es que en todos) de smartphones y tablets, pero no está disponible en todos los Chromebooks: una pantalla táctil.

Para empeorar las cosas, a menos que especifiques lo contario, Google Play asumirá que tu app de Android requiere una pantalla táctil, y como resultado prevendrá a tu app de ser instalada en todos los dispositivos que no incluyan funcionalidad de pantalla táctil. Si vas a poner tu app disponible para tantos usuarios Chromebook como sea posible, entonces necesitas preguntarte: ¿Mi app de Android realmente requiere una pantalla táctil?

Para la mayoría de las apps Android, la respuesta es no. La mayoría de las apps de Android pueden funcionar perfectamente sin una pantalla táctil, especialmente en Chromebooks en donde el usuario tiene un teclado de tamaño completo, trackpad, y potencialmente también un ratón externo a su disposición. Algunas Chromebook incluso soportan 'pantalla táctil falsa', que es un sistema de ingreso adicional que te permite usar el ratón y teclado para emular eventos táctiles básicos.

Así que a menos que tengas una muy buena razón para no hacerlo, deberías especificar que tu app no requiere una pantalla táctil para funcionar. Esto involucra abrir el Manifest de tu proyecto, declarar la pantalla táctil como una característica que tu aplicación utiliza (uses-feature android:name="android.hardware.touchscreen") y luego usar android:attribute para especificar si tu aplicación:

  • Requiere esta característica para funcionar ("true").

  • Prefiere que esta característica esté disponible, pero puede funcionar sin ella ("false").

En esta instancia, queremos declarar que una pantalla táctil es preferible, pero no requerida.

Open your projects Manifest and declare that touchscreen support isnt requiredOpen your projects Manifest and declare that touchscreen support isnt requiredOpen your projects Manifest and declare that touchscreen support isnt required

Google Play entonces usará las declaraciones <uses-feature> y android:required de tu proyecto para determinar si tu app es compatible con un dispositivo del usuario, y solo permitirá a usuarios descargar la app si su dispositivo cumple con todos los requerimientos.

Una vez que declares que tu app no requiere pantalla táctil, tu app inmediatamente estará disponible para un porcentaje mayor de usuarios Chromebook.

Otras Consideraciones de Hardaware

Ahora, enjuague y repita para cada característica quesu aplicación utilice. Esta es una buena práctica para desarrollar cualquier app Android, pero es también un importante paso para optimizar tu app para usuarios Chromebook.

Para ayudarte a tener lista tu app para Chrome OS, el equipo de Android ha creado una útil lista de todas las declaraciones de hardware que típicamente no son compatibles con Chromebooks. Si hay algunas características en esta lista que tu app usa pero no requiere, entonces es particularmente importante que declares esta característica en tu Manifest y la marques como android:required="false".

¡Sin embargo, no cambies automáticamente cada característica a "false" porque quieres que tu app esté disponible para tantos Chromebooks como sea posible! Considera que experiencia de usuario entregará tu app sin acceso a cada pieza de hardware. Aunque es tentador tratar de poner tu app en frente de tanta gente como sea posible, siempre es mejor proveer una buena experiencia de usuario a una audiencia más pequeña que una experiencia de usuario promedio o pobre a una gran audiencia.

En este punto, deberías también revisar cualquier permiso que tu app requiera, ya que algunos permisos hacen peticiones de hardware implícitas. Por ejemplo, si tu app requiere el permiso de la cámara entonces Google Play asumirá que tu app requiere el hardware de la cámara, y prevenirá a tu app de ser instalada en dispositivos que no cumplan con este requeriemiento. ¡Si tu app en realidad no requiere una cámara, entonces es una buena forma de perder usuarios potenciales! Para prevenir que esto suceda, necesitarás declarar esta característica en el Manifest de tu app y marcarlo como "false".

Si sumas a la buena práctica de declarar cada característica que tu app utiliza, entonces en teoría no deberías preocuparte en absoluto por peticiones de características implícitas, pero siempre vale la pena revisar dos veces tu proyecto, solo por si acaso.

Específicamente, los siguientes permisos hacen peticiones implícitas de características que pueden evitar que tu app sea instalada en Chrome OS:

  • CALL_PHONE

  • CALL_PRIVILEDGED

  • CAMERA

  • MODIFY_PHONE_STATE

  • PROCESS_OUTGOING_CALLS

  • READ_SMSREAD_SMS

  • RECEIVE_MMS

  • RECEIVE_SMS

  • RECEIVE_WAP_PUSH

  • SEND_SMS

  • WRITE_APN_SETTINGS

  • WRITE_SMS

Si tu app solicita alguno de estos permisos, entonces revisa dos veces que hayas declarado el hardware relacionado en el manifest de tu proyecto, y marcado cada declaración como "false" si tu app realmente no requiere de este hardware.

Mientras estás trabajando en tus peticiones de características, pudiera ser de ayuda tener una vista previa de cómo Google Play filtrará tu aplicación basado en su estado actual de declaraciones y petición de permisos. El SDK de Android incluye un herramienta 'aapt' que te permite hacer justo eso--puedes ejecutar esta herramienta, revisar como se compara su salida con las características que tu app realmente requiere, y hacer ajustes según sea necesario.

Para más información acerca del uso de aapt, revisa la documentación oficial de Android.

Sensores

La mayoría de smartphones y tablets Android tienen varios sensores integrados que pueden proporcionar a tu aplicación con una varierdad de información, incluyendo la orientación actual del dispositivo, posición, y algunas veces incluso información acerca de condiciones ambientales.

Muchos de estos sensores que típicamente esperarías encontrar en un smartphone o tabler no están disponibles en Chrome OS, así que si tu app usa información de cualquier sensor entonces deberías planear cómo tu app reaccionará si el sensor no está disponible.

Si tu app entera depende de tener acceso a un sensor en particular, entonces deberías prevenir a tu app de ser instalada en cualquier dispositivo que no incluya este sensor. Por ejemplo, si tu app no puede funcionar sin información de un sensor de acelerómetro, entonces deberías agregar lo siguiente al Manifest de tu proyecto:

El otro escenario es que tu app no requiera un sensor en particular, pero tenga características que usarán información de un sensor si está disponible. Si esto suena como tu app, entonces deberías declarar este sensor en tu Manifest pero marcalo como android:required="false". Tu app puede entonces revisar si este sensor está disponible en tiempo de ejecución, y deshabilitar cualquier funcionalidad que dependa de un sensor que no está presente en el dispositivo del usuario.

Para determinar qué sensores están disponibles, necesitarás crear una instancia de la clase SensorManager, después llamar al método getSystemService y pasar el argumento SENSOR_SERVICE:

Después, necesitarás obtener una lista de todos los sensores actualmente disponibles, llamado el método getSensorList y usando la constante Sensor.TYPE_ALL:

Armado con esta información, ahora puedes deshabilitar cualquier característica de aplicación que dependa de información de sensores que no están presentes en el dispositivo actual.

Modo de Redimensiónamiento y Soporte Multi-Ventana Chrome OS

En Chrome OS, las apps Android son mostradas en ventanas separadas que el usuario puede mover, y ciclar entre los siguientes tres tamaños soportados:

  • Vertical. Un tamaño similar a la pantalla de un Nexus 5.

  • Apaisado. Una pantalla similar al Nexus 7.

  • Maximizado. La app utiliza todo el espacio de pantalla disponible.

Cuando es tiempo de probar tu app en Chrome OS, querrás asegurarte de que tu app se ve bien y funciona correctamente en todos los tamaños soportados, por ejemplo revisando que todo el texto de tu app sea fácil de leer y todos los elementos UI permanezcan al alcance independientemente de si el usuario posiciona tu app en modo vertical, apaisado o maximizado.

Aunque los usuarios de Chrome OS pueden ver múltiples apps de Android a la vez, solo una app puede tener la atención, así que en el interés de conservar la batería del usuario, tu app debería pausar su visualización cuando pierde la atención. La única excepción es cuando tu app tiene contenido que necesita actualizarse constantemente. Por ejemplo, si estás desarrollando una app que reproduce música o video entonces probablemente no querrás que esta Activity se detenga cada vez que tu app pierde la atención.

Si tu Activity necesita actualizarse durante todo el tiempo que está en pantalla, entonces deberías pausarla en onStop y reanudar la reproducción en onStart, en vez de usar los manejadores onPause.

Considera Usar Auto Respaldo

Las Chromebooks están diseñadas para que los usuarios puedan cambiar entre dispositivos con facilidad--solo necesitan ingresar en su cuenta de Google y todas sus apps y contenidos están justo ahí, independientemente de si alguna vez han usado esta Chromebook en particular.

Ya que este es el comportamiento que los usuarios de Chromebook esperan, así es como también tu app debería comportarse cuando está ejecutándose en Chrome OS. Esto significa que tendrás que respaldar la información de tu app en línea en lugar de solo almacenarla localmente. La manera más sencilla es usar la característica de Auto Respaldo de Android, la cuál te permite respaldar la información de tu app en la cuenta de Google Drive del usuario.

Si tu app es compatible con Android 6.0 en adelante, entonces el Auto Respaldo está habilitado por defecto. Sin embargo, siempre es una buena idea ser explícito acerca de las características que tu app utiliza (no hay garantía de que el Auto Respaldo será habilitado por defecto en futuras versiones de Android, después de todo) así que abre el Manifest de tu proyecto y agrega lo siguiente:

Para información más detallada acerca de implementar respaldo y restauración, revisa la documentación oficial de Android.

¡Tiempo de Probar!

Incluso después de seguir todas estas mejores prácticas, no puedes estar seguro de que tu app proveerá una buena experiencia de usuario en Chrome OS--a menos que pruebes tu app en una Chromebook real.

Al momento de esta redacción, Google recomienda que pruebes tus apps listas-para-Chromebook a través de lo siguiente:

  • Una Chromebook basada en ARM.

  • Una Chromebook basada en x86.

  • Una Chromebook convertible (una que pueda transformarse entre laptop y tablet).

  • Una Chromebook con soporte para pantalla táctil..

  • Una Chromebook con soporte de "tacto falso".

Pero seamos realistas: es poco probable que simplemente tengas acceso a múltiples Chromebooks. Cuando estés decidiendo qué Chromebook(s) deberías considerar para probar tu app, sería de ayuda echar un vistazo a la lista de todas las Chromebooks actualmente en el mercado compatibles con Android de Google.

Antes de que puedas instalar tu app Android en Chrome OS, tendrás que poner tu Chromebook en modo de Desarrollador y habilitar instalaciones de fuentes desconocidas.

El proceso exacto para poner tu Chromebook en Modo Desarrollador varía entre dispositivos, así que si esas instrucciones no funcionan para tu modelo en particular entonces deberías buscar en Chromium docs por instrucciones específicas de un dispositivo.

Para entrar en Modo Desarrollador:

  1. Asegúrate de que tu Chromebook está apagada.

  2. Mantén presionadas las teclas Esc y Refresh mientras presionas el botón de Encendido de tu dispositivo. Tu Chromebook debería entonces iniciar en la pantalla de Recuperación.

  3. Presiona las teclas Control-D en el teclado de tu Chromebook.

  4. Cuando se te pida, presiona la tecla Enter.

  5. Presiona las teclas Control-D nuevamente.

Tu Chromebook iniciará ahora en Modo Desarrollador.

El siguiente paso es habilitar Fuentes Desconocidas, navegando a Ajustes de Chrome > Ajustes de App > Seguridad y seleccionado Fuentes Desconocidas.

Una vez que hayas completado estos pasos, estás listo para instalar la APK (Android Application Package) que quieres probar. Para transferir rápidamente tu APK a tu Chromebook, puedes ya sea:

  • Agregar tu APK a Google Drive.

  • Copiar el archivo APK al directorio Descargas de tu Chromebook usando un disco externo o Tarjeta SD.

  • Enviarte a tí mismo la APK vía email.

Entonces, necesitarás descargar la APK a tu Chromebook y abrirla usando la app Android File Manager (la cuál encontrarás navegando a Ajustes de Chrome > Ajustes de App > Dispositivo & USB > Explorar).

De manera alternativa, puedes empujar la APK desde tu máquina de desarrollo hacia tu Chromebook usando comandos Android Debug Bridge (ADB).

Hacer que ADB trabaje bien con Chrome OS requiere un poco de ajustes, pero una vez que haz realizado la conexión puedes usar ADB para emitir una variedad de comandos que pueden resultar bastante útiles para probar tu app de Android. (Para obtener más información acerca de los comandos ADB, revisa la documentación oficial de Android).

Trabajando con el Android Debug Bridge

Configurar ADB es un proceso de varios pasos, así que vamos a abordar un paso a la vez:

1. Configura el cortafuegos de Chrome OS para permitir conexiones entrantes de ADB.

Ejecuta la terminal de Chrome OS presionando Control-Alt-T en tu teclado, y después teclea shell para abrir el bash shell de comandos:

Ingresa tu contraseña, y después emite los siguientes comandos vía ventana de Terminal:

Lea el descargo de responsabilidad. Si estás contento para continuar, ingresa el siguiente comando:

En este punto, se reiniciará tu Chromebook. Una vez que tu Chromebook ha terminado de arrancar, relanzar el Terminal y teclea:

2. Averigua la dirección IP de tu Chromebook:

Habilitar la depuración ADB requiere la dirección IP de tu Chromebook, así qué:

  • Has clic en el icono de Red en la parte inferior derecha de la pantalla de inicio de tu Chromebook.

  • Selecciona la red a la cual tu Chromebook está actualmente conectada.

  • Clic en el ícono i en la parte inferior derecha del menú.

En este punto una caja aparecerá, conteniendo la dirección IP de tu Chromebook--haz una nota de esta, ya que la necesitarás después.

3. Habilitando la depuración adb.

En tu Chromebook, completa los siguientes pasos:

  • Da clic al ícono del reloj en la parte inferior derecha de la pantalla.

  • Selecciona Ajustes.

  • En la sección de Apps Android, da clic al enlace Administra los Ajustes de tu app Android.

  • Da clic en Acerca del dispositivo.

  • Ingresa al modo Desarrollador dando clic al número de Compilación siete veces.

  • Da clic en la flecha en la parte superior izquierda de la ventana. Esto te llevará de regreso a la pantalla principal de Ajustes.

  • Haz clic en opciones de Desarrollador.

  • Habilita la depuración ADB y luego da clic en OK.

A continuación, completa los siguientes pasos en tu máquina de desarrollo.

Abre una ventana de Terminal y cambia directorio (cd) de manera que apunte a la ubicación del programa 'adb' de tu SDK de Android.

Open a Terminal and point it in the direction of your Android SDKs platform-tools folder Open a Terminal and point it in the direction of your Android SDKs platform-tools folder Open a Terminal and point it in the direction of your Android SDKs platform-tools folder

Dile a tu máquina de desarrollo que escuche una conexión TCP/IP en el puerto 22, emitiendo el siguiente comando:

Emite el comando adb connect seguido por la dirección IP de tu Chromebook, por ejemplo:

En tu Chromebook, da clic a Permitir cuando se requiera.

Lo único que resta por hacer es empujar la APK desde tu máquina de desarrollo hacia tu Chromebook.

En tu máquina de desarrollo, emite el comando adb install, seguido por la ruta y nombre de archivo del APK que quieres instalar, por ejemplo:

¡Y eso es todo! Tu aplicación Android está ahora instalada en tu Chromebook, lista para que la pruebes.

Resumen

En este artículo, echamos un vistazo a cómo actualizar tu app para que corra en Chromebooks y después, una vez que es capaz de correr en esta nueva plataforma, cómo optimizarla para ofrecer una mejor experiencia de usuario.

Ser capaz de accesar a sus apps favoritas a través de sus smartphones, tablets y ahora sus laptops son grandes noticias para los usuarios de Chromebook, y para tí como desarrollador significa una audiencia potencial más grande para tus apps Android--¿y quién no querría eso?

Advertisement
Did you find this post useful?
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.