Diferencia entre revisiones de «Usuario:Juanda/android/emulador»
De WikiEducator
Saltar a: navegación, buscar
(→Simulaciones del entorno) |
(→Pasos preliminares) |
||
Línea 84: | Línea 84: | ||
<div class="slide"> | <div class="slide"> | ||
====Pasos preliminares==== | ====Pasos preliminares==== | ||
− | *Descargamos la plataforma SDK sobre la que vaya a funcionar el navegador: en este caso elegiremos la 2.2 | + | *Descargamos la plataforma SDK sobre la que vaya a funcionar el navegador mediante el SDK Manager: en este caso elegiremos la 2.2 |
+ | *[http://www.media.formandome.es/android/practica_emulador.tar.gz Descargamos los ficheros] para la práctica | ||
*Damos de alta un nuevo dispositivo Android (observa que se crea en color verde). | *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" | *Vamos a crear nuestro dispositivo AVD (Android Virtual Device) a partir del dispositivo anterior y lo llamaremos "prueba" |
Última revisión de 00:12 23 may 2013
Guía Administración Android
Tutorial sobre conceptos básicos sobre el sistema operativo Android
Presentación | Conceptos básicos | Ciclo de desarrollo | Bootloader | fastboot | recovery | adb | Sistema de Ficheros | Rootear | Eclipse | emulador
Contenido
Uso del emulador en Android
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
- 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.
Simulaciones del entorno
- Falta de batería, tráfico de red, llamadas o sms, posición geográfica...
- Cada instancia del emulador utiliza dos puertos, el del adb (por defecto 5555) y uno inferior de consola.
- Podemos ver el puerto de consola mediante el comando adb devices
- Se accede mediante telnet localhost <console-port>
juanda@dpto-01:~/Android/sdk$ adb devices List of devices attached emulator-5554 device juanda@dpto-01:~/Android/sdk$ telnet localhost 5554 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Android Console: type 'help' for a list of commands OK gsm call 696797518 OK
Configuración del emulador
Pasos preliminares
- Descargamos la plataforma SDK sobre la que vaya a funcionar el navegador mediante el SDK Manager: en este caso elegiremos la 2.2
- Descargamos los ficheros para la práctica
- 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
- -...
- Instalamos la aplicación SuperUser que se encarga de dar permisos de root a las aplicaciones:
juanda@dpto-01:~/Android$ adb install Superuser.apk 4023 KB/s (1468798 bytes in 0.356s) pkg: /data/local/tmp/Superuser.apk Success juanda@dpto-01:~/Android$
- Observamos en el emulador que está instalada y se ejecuta con normalidad
- Instalamos la aplicación BusyBox que tiene un conjunto de comandos útiles de Linux.
juanda@dpto-01:~/Android$ adb install BusyBox.apk 4034 KB/s (3235962 bytes in 0.783s) pkg: /data/local/tmp/BusyBox.apk Success juanda@dpto-01:~/Android$
- Una vez instalada se debe ejecutar para que se termine la instalación, son necesarios permisos de root.
- Comprobamos el correcto funcionamiento
- Instalamos su:
juanda@dpto-01:~/Android$ adb push su /system/xbin/su 3728 KB/s (380532 bytes in 0.099s) juanda@dpto-01:~/Android$ adb shell chmod 06755 /system/xbin/su juanda@dpto-01:~/Android$ adb shell
- Terminamos la instalación del BusyBox y comprobamos si funciona:
Generación de imagen de system
- Si queremos que las modificaciones que hemos hecho en el system sean persistentes, debemos generar una imagen de la partición
- Para generar una imagen nos hará falta el ejecutable mkfs.yaffs2.
- En este caso utilizaremos el arm pero también existe para x86:
juanda@dpto-01:~/Android$ adb push mkfs.yaffs2.arm /data/ juanda@dpto-01:~/Android$ adb shell # cd /data #chmod 777 mkfs.yaffs2.armt+found
- Generamos la imagen y nos lo llevamos al pc:
# ./mkfs.yaffs2.arm /system /data/system.img mkfs.yaffs2: Android YAFFS2 Tool,Build by PowerGUI at http://www.openhandsetalliance.org.cn Building... Build Ok. # exit juanda@dpto-01:~/Android$ adb pull /data/system.img 4579 KB/s (82621440 bytes in 17.620s) juanda@dpto-01:~/Android$
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).
- Ojo KVM con VmWare y VirtualBox pueden no llevarse del todo bien
- La aceleración del emulador para Windows se hace directamente desde el SDK Manager.
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)