Instalar la aceleración de hardware para la emulación de Android (AVD) bajo Linux con KVM

Introducción

AndroidA continuación se describe el procedimiento para instalar bajo Ubuntu Linux la aceleración por hardware de las máquinas virtuales de Android (AVD) para correr imágenes del sistema operativo basadas en x86.

Requerimientos

  1. Se recomienda la última versión de SDK Tools (Revision 17 mínimo) y
    un SDK Platform de Android 4.0.3, Revision 3 o superior.
  2. La imágen de la AVD debe ser basada en x86 y ser de Android 2.3.3 (API nivel 10) o superior.
  3. Debe contarse con el soporte por parte de la CPU de la tecnología Intel Virtualization Technology (VT, VT-x, vmx) o AMD Virtualization (AMD-V, SVM) -sólo para Linux-.
  4. La máquina virtual acelerada debe correrse directamente desde el hardware físico, no puede ejecutarse desde otra máquina virtual.
  5. No es posible ejecutar al mismo tiempo otra aplicación que utilice diferente tipo de virtualización junto con el AVD acelerado.

Instalar KVM

El primer paso consiste en instalar KVM en la máquina Linux.  Para mayor información consultar este artículo complementario.

$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils ia32-libs-multiarch

Adicionalmente, los usuarios que vayan a ejecutar las máquinas virtuales deberán pertenecer al grupo libvirtd (a partir de Ubuntu 16.10 es renombrado a libvirt).

$ usermod -a -G libvirtd $USER

Comúnmente es prudente cerrar la sesión del usuario y volverla a iniciar para garantizar que la adición del usuario activo al grupo ha será tomada en cuenta.

Configurar la máquina virtual (AVD)

Para configura la aceleración de gráficos, verifique que la opción Emulated Performance: Graphics se encuentre configurada como auto o el modo que considere correspondiente.

Verificar el uso de KVM

Si se desea verificar si la máquina virtual AVD en ejecución está o no utilizando la aceleración de KVM, es posible verificar el estado de /dev/kvm de la sigiente manera.

$ lsof -n | grep /dev/kvm

Recursos

  1. Configure Hardware Acceleration for the Android Emulator
    https://developer.android.com/studio/run/emulator-acceleration.html

Primeros pasos con PhoneGap para Android

Introducción.

PhoneGap en pocas palabras es un framework para el desarrollo de aplicaciones móviles que posibilita a los desarrolladores a que implementen sus proyectos utilizando las tecnologías estándar de web: HTML5, CSS3 y Javascript, y este las convierte a aplicaciones híbridas, es decir, aplicaciones nativas de las diferentes plataformas móviles existentes que tienen acceso a gran parte del API nativo.

Tomado de http://www.phonegap.com/
Tomado de http://www.phonegap.com/

Esto lo logra empaquetando la aplicación web original con un navegador basado en webkit para desplegarla como si fuera una aplicación verdaderamente nativa.

Actualmente este framework soporta seis de las principales plataformas móviles del mercado: iOS, Android, Blackberry, PalmOS, Windows Mobile y Symbian.  Para mas información acerca del estado actual del soporte en cada una de estas plataformas consultar las características soportadas.

Existen otros frameworks similares a este entre los que se destacan Appcelerator Titanium, Mobl y Sencha Touch de los cuales espero estar escribiendo mas adelante.

En este artículo se describirá el proceso de instalación de PhoneGap, la creación de un proyecto base para el desarrollo con este framework y la elaboración de un ejemplo simple.

Instalar PhoneGap.

Descargar la última versión disponible del framework desde la siguiente ubicación.

https://code.google.com/p/phonegap/downloads/list

Para efectos de la documentación se utilizará la versión 0.9.5.1 que corresponde con las mas reciente para esta fecha.

$ wget http://phonegap.googlecode.com/files/phonegap-0.9.5.1.zip

Se descomprime el paquete recién descargado y se mueve a su ubicación final.

$ unzip phonegap-0.9.5.1.zip

$ mkdir ~/phonegap

$ mv phonegap-0.9.5.1 ~/phonegap/0.9.5.1

Crear la plantilla base de un proyecto Android.

A continuación se relacionan los pasos que se deben realizar para crear un proyecto PhoneGap para Android utilizando Eclipse y el plugin ADT instalados anteriormente.

Iniciar Eclipse y crear un nuevo proyecto a través del menú File > New > Android Project.

Crear un nuevo proyecto Android
Crear un nuevo proyecto Android

En el diálogo de información del proyecto a crearse especificar al menos los siguientes campos y presione el botón Finish para continuar.

  1. Nombre del proyecto (project name).
  2. API de Android a utilizarse (build target).  En este caso se utilizará el API 2.2.
  3. Nombre de la aplicación (application name).
  4. Crear una actividad (create activity).
Información básica del proyecto Android
Información básica del proyecto Android

En el Explorador de Paquetes (package explorer)  de Eclipse crear bajo el proyecto una carpeta /assets/www y otra /libs.

Copiar en la carpeta /assets/www el archivo phonegap.0.9.5.1.js y copiar en /libs el archivo phonegap.0.9.5.1.jar.  Ambos archivos se encuentran bajo el directorio ~/phonegap/0.9.5.1/Android creado durante el paso de instalación anterior.

Estructura del proyecto Android
Estructura del proyecto Android

Hacer clic derecho sobre el directorio /libs y seleccionar el menú Build Path > Configure Build Path… Allí en la pestaña Libraries agregue la referencia a /libs/phonegap.0.9.5.1.jar presionando el botón Add JARs…

Agregar al proyecto la referencia al JAR de PhoneGap.
Agregar al proyecto la referencia al JAR de PhoneGap.

Realizar las siguientes modificaciones al código fuente de la actividad.  Este archivo se ubica bajo la carpeta /src del proyecto (/src/com.jimezam.phonegap.demo/App.java en este caso).

  1. Reemplazar la línea 3 (import android.app.Activity;) con la siguiente: import com.phonegap.*;
  2. En la línea 6 cambiar la superclase de App de Activity a DroidGap.
  3. Reemplazar la línea 11 (setContentView(R.layout.main);) con la siguiente: super.loadUrl(“file:///android_asset/www/index.html”);
Modificaciones a la actividad inicial.
Modificaciones a la actividad inicial.

Hacer clic derecho sobre el archivo AndroidManifest.xml y seleccionar el menú Open With… > Text Editor.  A este documento realizar las siguientes modificaciones.

1. Agregar el siguiente texto entre la apertura de la etiqueta <manifest> y la apertura de la etiqueta <application>.

<supports-screens
android:largeScreens=”true”
android:normalScreens=”true”
android:smallScreens=”true”
android:resizeable=”true”
android:anyDensity=”true”
/>
<uses-permission android:name=”android.permission.CAMERA” />
<uses-permission android:name=”android.permission.VIBRATE” />
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION” />
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />
<uses-permission android:name=”android.permission.ACCESS_LOCATION_EXTRA_COMMANDS” />
<uses-permission android:name=”android.permission.READ_PHONE_STATE” />
<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.RECEIVE_SMS” />
<uses-permission android:name=”android.permission.RECORD_AUDIO” />
<uses-permission android:name=”android.permission.MODIFY_AUDIO_SETTINGS” />
<uses-permission android:name=”android.permission.READ_CONTACTS” />
<uses-permission android:name=”android.permission.WRITE_CONTACTS” />
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />

2. Agregar el siguiente atributo a la etiqueta <activity>.

android:configChanges=”orientation|keyboardHidden”

Modificaciones al documento AndroidManifest.xml.
Modificaciones al documento AndroidManifest.xml.

Finalmente crear el archivo /assets/www/index.html con el código fuente para la demostración.

<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap demostration with Android</title>
<script type=”text/javascript” charset=”utf-8″ src=”phonegap.js”></script>
</head>
<body>
<h1>Hello Android’s World with PhoneGap</h1>
</body>
</html>

Ejecutar el proyecto en el emulador.

Seleccionar el menú Run > Run As > Android Application.

Ejecutar como aplicación Android.
Ejecutar como aplicación Android.

Estos son un par de ejemplos de aplicaciones web simples ejecutándose con PhoneGap en el emulador de Android.

Hola Mundo web con Android
Hola Mundo web con Android

The Simple List 0.1
The Simple List 0.1

Enlaces.

Instalación del SDK R11 de Android en GNU/Linux

Introducción.

A pasado un tiempo desde que se describió el proceso de instalación del SDK 1.0 de Android y muchas cosas han cambiado desde entonces.  A continuación se describirá el procedimiento de instalación del SDK de Android en GNU/Linux, el cual deberá ser muy similar al de las demás plataformas.

Obtener y desempaquetar la distribución.

Descargar de la siguiente ubicación el paquete correspondiente al sistema operativo utilizado.

http://developer.android.com/sdk/index.html

En mi caso, como mencioné anteriormente, es GNU/Linux.

$ wget http://dl.google.com/android/android-sdk_r11-linux_x86.tgz

A continuación se descomprime el paquete recién descargado.

$ cd ~/

$ tar zxvf /<ruta>/android-sdk_r11-linux_x86.tgz

Instalar componentes adicionales.

En este paso se instalan los componentes del SDK como diferentes versiones del API, documentación, ejemplos y módulos provistos por terceros.

$ ~/android-sdk-linux_x86/tools/android

En este caso se va a realizar la instalación de los siguientes componentes.

  1. Android SDK Platform-Tools.
  2. Documentation for Android SDK.
  3. SDK Platform Android (2.2, API 8, revision 2).
  4. Samples for SDK (API 8, revision 1).
  5. Android Compatibility Package.
  6. Google Inc.
  7. LG Electronics.
Instalando componentes adicionales.
Instalar componentes adicionales.

Si decide instalar el componente de Google Inc. seleccione específicamente los módulos que desee segun las versiones del API que esté instalando.  Si elige instalarlos todos forzará a que se instalen también todas las versiones del API de Android.

 

Crear un AVD.

Un AVD hace referencia a un Android Virtual Device, es decir, a la imágen de un dispositivo virtual en el emulador.  El SDK de Android permite crear varios imágenes de este tipo con diferentes características.

Para las pruebas del software se creará el AVD de un dispositivo con una resolución de 320×480.

Crear un nuevo AVD.
Crear un nuevo AVD.

 

Enlaces.