Curso de Android

De WikiEducator
Saltar a: navegación, buscar


AVD

  • Android Virtual Devices
  • Interfaz gráfica para crear dispositivos Android
  • Se ejecuta desde el icono de eclipse o mediante el comando:
juanda@juanda-PC:~/Android/sdk/tools$ android avd
Descargar video
  • El sdk guarda imágenes del sistema para los AVD:
juanda@juanda-PC:~/Android/sdk/system-images/android-17/x86$ ls
build.prop   NOTICE.txt   source.properties  userdata.img
kernel-qemu  ramdisk.img  system.img
  • Cada vez que creamos un AVD nuevo, copia sus imágenes en un directorio de usuario:
juanda@juanda-PC:~/.android/avd/htcdesire.avd$ ls -l
total 542492
-rw------- 1 juanda juanda     16860 abr 20 02:43 cache.img
-rw-rw-r-- 1 juanda juanda       549 abr 15 21:30 config.ini
-rw-rw-r-- 1 juanda juanda        51 abr 20 02:44 emulator-user.ini
-rw-rw-r-- 1 juanda juanda      1280 abr 20 02:43 hardware-qemu.ini
-rw-rw-r-- 1 juanda juanda 506134528 abr 20 02:44 snapshots.img
-rw-rw-r-- 1 juanda juanda      1279 abr 20 02:44 snapshots.img.default-boot.ini
-rw-rw-r-- 1 juanda juanda   4048704 abr 15 21:30 userdata.img
-rw------- 1 juanda juanda  45346716 abr 20 02:44 userdata-qemu.img
juanda@juanda-PC:~/.android/avd/htcdesire.avd$


Teclas rápidas

  • Son muchas... las más importantes:
Inicio: Tecla Home.
Esc: Tecla de volver.
Ctrl-F11: Cambia la orientación entre horizontal y vertical.
Alt-Intro: Visualiza el emulador a pantalla completa.

Configuración del emulador

Pasos preliminares

  • Descargamos la plataforma SDK sobre la que vaya a funcionar el navegador: en este caso elegiremos la 2.2
  • Damos de alta un nuevo dispositivo Android (observa que se crea en color verde).
  • Vamos a crear nuestro dispositivo AVD (Android Virtual Device) a partir del dispositivo anterior y lo llamaremos "prueba"
  • Arrancamos el dispositivo
  • Comprobamos que tenemos acceso al dispositivo mediante adb:
juanda@dpto-01:~/Android/eclipse$ adb devices
List of devices attached 
emulator-5554	device
 
juanda@dpto-01:~/Android/eclipse$ adb shell
#


Carencias del emulador

  • Faltan comandos (por ejemplo find o el editor vi).
  • Falta el Play Store
  • Faltan las APIs de Google
  • ¿Espacio en partición /system?
  • Al apagar el emulador lo que haya instalado en la partición system desaparece
  • El emulador va más lento que un desfile de cojos

Aumentar la partición system

*Al instalar cosas en el emulador en el /system, por defecto puede venir lleno, por lo que debemos cambiar el tamaño de la partición al arrancar:
juanda@juanda-PC:~/Descargas/kk$ emulator -avd nexus4jd -partition-size 400
 
*Comprobamos que el tamaño de la partición haya cambiado:
root@android:/ # df
Filesystem             Size   Used   Free   Blksize
/dev                   410M    32K   410M   4096
/mnt/secure            410M     0K   410M   4096
/mnt/asec              410M     0K   410M   4096
/mnt/obb               410M     0K   410M   4096
/system                388M   198M   189M   4096
/data                  194M    11M   182M   4096
/cache                  64M     1M    62M   4096
root@android:/ #

Instalación de comandos adicionales

  • Observa la estructura de directorios y los ejecutables que faltan
  • Para instalar nuevos comandos (en /system/bin) se debe tener acceso con lectura y escritura a la partición.
  • Utilizaremos busybox para instalar los comandos
  • Miramos el tipo de partición de system y el dispositivo que utiliza para hacer un re-mount:
juanda@dpto-01:~/Android/eclipse$ adb shell
# mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
none /acct cgroup rw,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
# 
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock0 /system
  • Comprobamos que la partición system tenga escritura:
- Haciendo un mount
- Subiendo un fichero mediante push
-...

Optimización del emulador

  • Por defecto, el emulador va más lento que un desfile de cojos.
  • Si está disponible (Intel va con algo de retardo a veces), resulta más útil utilizar un emulador con Intel (haz un wipe user data la primera vez que lo uses, sino, ¿se queda colgado?)
  • Puede ir más rápido también mediante aceleración de máquinas virtuales mediante KVM (Kernel-based virtual machine).
-Instalación.
-Configuración en Eclipse
  • Ojo KVM con VmWare y VirtualBox pueden no llevarse del todo bien

Instalación de KVM

  • Comprobamos que la máquina soporte aceleración de hardware (valor superior a 0):
juanda@dpto-01:~$ egrep -c '(vmx|svm)' /proc/cpuinfo
2
juanda@dpto-01:~$
  • Instalamos kvm:
$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
$ sudo adduser `id -un` libvirtd
Adding user '<username>' to group 'libvirtd' ...
  • Cerramos sesión y volvemos a entrar. Debemos ejecutar el siguiente comando para ver que esté bien instalado:
$ virsh -c qemu:///system list
 Id Name                 State
----------------------------------
 
$
  • En la configuración del emulador:
Eclipse: Run -> Run Configurations -> Target -> Additional Emulator Command Line Options: "-qemu -m 512 -enable-kvm"
Terminal:
emulator -avd <avd_name> -qemu -m 512 -enable-kvm
  • Tiempos carga desde ordenador Intel(R) Core(TM)2 Duo CPU E8500 @ 3.16GHz
emulador ARM: 1,10 a 1,20 (10 segundos menos sin boot animation)
emulador x86: 15-18 segundos
emulador x86 con virtualización kvm: 15-18 segundos
  • Debemos marcar snapshots para acelerarlo (no es compatible con la opción de emulación de GPU)