Seminario Android (Parte 2) - movilforum

10
1. LOS KERNELS Y ANDROID ES LINUX ? La batalla aclarada... Un Kernel de manera sencilla. ¿Qué hace bien Google y que no hace ? ¿ Es opensource o no ? La cosa no esta clara, para los puristas. Pero al final la letra pequeña da a google la razón, fuera del kernel de linux que siempre está abierto. No están obligados a liberar el resto. Platforma Nivel de API Cuota de mercado Android 2.2 (Froyo) 8 43,4% Android 2.1 (Eclair) 7 39,6% Android 1.6 (Donut) 4 10,6% Android 1.5 (Cupcake) 3 6,3% Diferencias entre Kernels de una misma familia y terminales Android 2.2 - Kernel Linux 2.6.32 Integración de los V8 de Chrome motor de JavaScript en el navegador de aplicación (local e internet)

description

El seminario tiene dos partes bien diferenciadas. En la primera parte se introduce ANDROID: las herramientas de desarrollo más utilizadas, cómo subir una aplicación al market y finalmente se desarrolla una aplicación de ejemplo paso a paso. En la segunda parte se abordan los distintos kernels de ANDORID, las posibilidades de modificar un kernel existente o desarrollar uno a medida. Los asistentes al seminario traen sus portátiles y terminales ANDORID para participar y desarrollar los ejemplos. El formato del curso es abierto, resolviendo el profesor las dudas que surjan sobre la marcha, así como las que planteen los alumnos.

Transcript of Seminario Android (Parte 2) - movilforum

Page 1: Seminario Android (Parte 2) - movilforum

1. LOS KERNELS Y ANDROID ES LINUX ?

La batalla aclarada...

Un Kernel de manera sencilla. ¿Qué hace bien Google y que no hace ?

¿ Es opensource o no ? La cosa no esta clara, para los puristas. Pero al final la letra pequeña da a google la razón, fuera del kernel de linux que siempre está abierto. No están obligados a liberar el resto.

Platforma Nivel de APICuota de mercado

Android 2.2 (Froyo) 8 43,4%Android 2.1 (Eclair) 7 39,6%

Android 1.6 (Donut)

4 10,6%

Android 1.5 (Cupcake)

3 6,3%

Diferencias entre Kernels de una misma familia y terminales

Android 2.2 - Kernel Linux 2.6.32

• Integración de los V8 de Chrome motor de JavaScript en el navegador de aplicación (local e internet)

Page 2: Seminario Android (Parte 2) - movilforum

• Microsoft Exchange

• Wi-Fi acess point

• Marcación por voz y uso compartido de contactos a través de Bluetooth

• Carga de archivos en la aplicación de Navegador

• GIF animados apoyada en el navegador.Adobe Flash 10.1 Soporte para pantallas AMOLED, SUPER AMOLED, XVGA,

• HDMI out

Branch Android 2.3 - Kernel Linux 2.6.35

Android 2.1 y 2.1 pre-1 (oems) y 2.2

Android 2.3, 2.3.1 (Nexus), 2.3.2 y 2.3.3 (developers)

Android 2.3 y 2.4 (developer)

Android 2.3 además de todas las funciones existentes, soportes para NFC ( Near Field Communication ) que es un mecanismo de comunicación de alta velocidad de

datos funciona de alta frecuencia en un rango corto (10 cm).

Kernels de Android antes del tema de honeycomb..

http://rodrigocalvo.com/roms.android/

Page 3: Seminario Android (Parte 2) - movilforum

2. COMPILANDO TU KERNEL

Has decidido probar a hacer un kernel distinto..

Haciendo una imagen para utilizar en el SDK Imágenes, terminales y el mundo de las ciento y un cpus.

El script de arranque

Lo más importante en un Kernel para que pueda funcionar al igual que en linux es este esto. Yo recomiendo que reviséis la documentación de Linux al respecto, hay mucho ejemplos.

--(CODE )--

ui_print("Welcome to Tu Custom Kernel !");assert(getprop("ro.product.device") == "trout" || getprop("ro.build.product") == "trout" ||

getprop("ro.product.board") == "trout" || getprop("ro.product.device") == "sapphire" || getprop("ro.build.product") == "sapphire"

|| getprop("ro.product.board") == "sapphire");ui_print("Backing up proprietary files...");

Page 4: Seminario Android (Parte 2) - movilforum

package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");set_perm(0, 0, 0777, "/tmp/backuptool.sh");run_program("/tmp/backuptool.sh", "backup");show_progress(0.200000, 10);ui_print("Installing Awesomeness...");format("MTD", "system");mount("MTD", "system", "/system");show_progress(0.500000, 40);package_extract_dir("recovery", "/system");package_extract_dir("system", "/system");symlink("../xbin/su", "/system/bin/su");symlink("busybox", "/system/xbin/[", "/system/xbin/[[", "/system/xbin/arp", "/system/xbin/ash", "/system/xbin/awk", "/system/xbin/basename", "/system/xbin/bbconfig", "/system/xbin/brctl", "/system/xbin/bunzip2", "/system/xbin/bzcat", "/system/xbin/bzip2", "/system/xbin/cal", "/system/xbin/cat", "/system/xbin/catv", "/system/xbin/chgrp", "/system/xbin/chmod", "/system/xbin/chown", "/system/xbin/chroot", "/system/xbin/cksum", "/system/xbin/clear", "/system/xbin/cmp", "/system/xbin/cp", "/system/xbin/cpio", "/system/xbin/cut", "/system/xbin/date", "/system/xbin/dc", "/system/xbin/dd", "/system/xbin/depmod", "/system/xbin/devmem", "/system/xbin/df", "/system/xbin/diff", "/system/xbin/dirname", "/system/xbin/dmesg", "/system/xbin/dnsd", "/system/xbin/dos2unix", "/system/xbin/du", "/system/xbin/echo", "/system/xbin/ed", "/system/xbin/egrep", "/system/xbin/env", "/system/xbin/expr", "/system/xbin/false", "/system/xbin/fdisk", "/system/xbin/fgrep", "/system/xbin/find", "/system/xbin/fold", "/system/xbin/free", "/system/xbin/freeramdisk", "/system/xbin/fuser", "/system/xbin/getopt", "/system/xbin/grep", "/system/xbin/gunzip", "/system/xbin/gzip", "/system/xbin/head", "/system/xbin/hexdump", "/system/xbin/id", "/system/xbin/ifconfig", "/system/xbin/insmod", "/system/xbin/install", "/system/xbin/ip", "/system/xbin/kill", "/system/xbin/killall",

Esto pertenece a mi arranque de 2.1 sobre el HTC Dream (G1)

Disponible para vuestras pruebas en : http://rodrigocalvo.com/roms.android/ 2.1 HTC Dream firmado.zip

Los permisos de Android

La cosa es actualices el Kernel nada más, cambies drivers dentro de una terminal, lo desbloquees o uses una goldcard. Los permisos tienen que volver a su sitio, si no el terminal fallara.

Page 5: Seminario Android (Parte 2) - movilforum

set_perm_recursive(0, 0, 0755, 0644, "/system");set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");set_perm(0, 3003, 02755, "/system/bin/netcfg");set_perm(0, 3004, 02755, "/system/bin/ping");set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluez");set_perm(0, 0, 0755, "/system/etc/bluez");set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");set_perm_recursive(0, 2000, 0755, 0750, "/system/etc/init.d");set_perm(0, 0, 0755, "/system/etc/init.d");set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");set_perm(0, 0, 06755, "/system/xbin/librank");set_perm(0, 0, 06755, "/system/xbin/procmem");set_perm(0, 0, 06755, "/system/xbin/procrank");set_perm(0, 0, 06755, "/system/xbin/su");set_perm(0, 0, 06755, "/system/xbin/tcpdump"

y finalmente

unmount("/system");

3. PROBANDO LA IMAGEN EN UN TERMINAL

Ejemplos específicos. Terminales clásicos en los que funciona todo. G2 (Magic) , G3 (Hero) y Nexus.

La experiencia me dice que la Magic (G2) siendo la 32B la mejor por tener más ram y el Hero ambos de HTC que fueron de los primeros terminales que fueron disponibles para los cocineros de roms. Por otro lado el Nexus One, ejecuta todo.

Para empezar y no tener problemas con las nuevas cpus, que los scripts que hagáis no se ejecuten. Recomiendo una Magic, para la que hay cientos de roms, la dream es mucho más complicada para desarrollar y no es un tema para los principiantes. Por su falta de ram y que no

Page 6: Seminario Android (Parte 2) - movilforum

tiene 3D de ningún tipo. Teniendo que quitar mucho código de google para hacer funcionar un kernel actual. Para probar la rom, no hay más que hacerse con un recovery, en los terminales antiguos Amon RA un desarrollador americano, usando las fuentes de google y htc creo un recovery que carga roms desde la micro sd. Todos los recoveries que han salido después están basado en su trabajo.

A media que la familia Android crece asi las distintas cpus. Normalmente lo que para el que haya roms para un terminal, suele ser que o bien la empresa usar unos drivers privativos o bien no se sabe como arrancar un recovery. También puede ser que no se tenga las roms oficiales u actualizaciones disponibles.

Al final siempre se puede sacar la rom del terminal, caso del Movistar Ivy en el que no había nada por parte de Huawei. Todo pasa por el root. Que hoy en día no tiene ninguna ciencia.

A fecha de hoy están saliendo unas cpu muy interesantes por Sony, los Arc que nuevos en android. Habrá que ver su kernel 2.2 y 2.1 cómo vienen de seguros. Linux en un terminal de estos sería capaz de bastantes cosas.Me gustaria que revisarias alguna de mis roms. Sobre Magic y Nexus.

http://rodrigocalvo.com/roms.android/

4. KERNELS PROPIETARIOS QUE NO PARECEN ANDROID

Modficando Kernel para Tabletas.

Kernels de modificados por el operador

Kernels incompletos por el fabricante

Ejemplos de tabletas con arranques distintos.

Las tabletas que veis hoy ya tiene todas las teclas pero aun les faltan cosas que las versiones desarrolladas en Asia ya tenían. Muchas tabletas tiene que cambiar el Kernel por no tener todas las APIs, esto hace que sean Android capados. Un cambio es el menú que les pones. Para poder acceder a todo. Algunos montan pantallas resistivas otro normales. Tu rom tiene que “sufrir” todo y tener soporte de entrada de chino e inglés. Que en las versiones 1.5 a 1.7.1 google no lo daba nativo.

Otro tema es que una tableta puede arrancar en modo linux y arrancar el espacio de Android. En muchos casos el Android que arrancas es la

Page 7: Seminario Android (Parte 2) - movilforum

imagen oficial de google que corre en los teléfonos, por que no había ninguna diferencia. Hasta la historia sin acabar de Honeycomb.

Veremos un par de ejemplos. Hay incluso kernels que no tienen soporte de android market, por un tema de no pedir el permiso a google. Que por regla general te lo da.

Veamos sobre los Kernels oem, muy tipico es que al operador le den un kernel a medio hacer. Que si terminal es barato ni se preocupan. Si el operador es grande, se preocupan ellos en hacer una actualización para terminal. (Huawei y T-mobile Pulse) Ya el tema de que Motorola no tiene nombre. No solo, en Europa y America del sur, deciden no actualizar el terminal de 1.5/1.6 si no que encima te bloquean para que ni puedas usar tu terminal para desarrollar con el. Los Sony Ericsson, con ese UI raro sobre Android, no lo ralentiza mucho. Pero en los terminales de gama baja, que no te dicen por que todos parecen igual. Parece que poco a poco se van actualizando. Y llegamos al caso de Samsung. Los androids que parecen iphones. Bueno el problema no son los iconos, es que para flashear o actualizar fuera de sus actualizaciones inexistentes sólo exige una aplicación de windows (odin). Todos estos terminales les suele faltar algo. Cuando ejecutas una aplicación con todo los derechos y las apis de su versión de android suele ocurrir el force close (FC)

5. LINUX Y SUS SCRIPTS DENTO DE ANDROID

Llamando aplicaciones de android (apk) desde el kernel..

Formas de arrancar una imagen en un Android

Guardando los datos de usuario

system/framework

Page 8: Seminario Android (Parte 2) - movilforum

(lo más importante a respetar)Lo que seguro que habeis visto es que las roms, tiene aplicaciones ya metidas

en el primer arrancan con ellas. Se pueden colocar en varios sitios. Lo vamos a ver ahora.

Veremos un par de ejemplos. Hay incluso kernels que no tienen soporte de android market, por un tema de no pedir el permiso a google. Que por regla general te lo da.

Vamos a ver cómo se salvan los datos de usuario en un terminal, al poner un Kernel nuevo, nuestro ejemplo va a ser un port de eclair completo a un Huawei u8110 (Ivy). Vamos a ver dónde se meten las aplicaciones y el resto. Los nuevos Kernel y Roms van siempre así.

system/app

¿ Qué es un fichero ODEX ?

Los apks .apk contienen datos odex, se supone que salvan espacio. Los ficheros odex son parte de las aplicaciones. Vamos a ver cómo se salvan los datos de usuario en un terminal. Se supone que que se pre-cargan. La realidad es bien distinta..

HTC y su sense tiene la manía de llenar el sistema de odex que no hacen nada.el tamaño e sel mismo en todos.

¿ Qué es un fichero DEODEX ?

Es básicamente re-empaquetar un odex y su apk. Sin esto no se puede luego modificar el .apk por otro más nuevo. Se vuelven a poner todas las

aplicaciones en su sitio. Y se mantiene la integridad. Es

Page 9: Seminario Android (Parte 2) - movilforum

imprescindible.

El formato del audio ha cambiado al ogg que los “cocineros” empezaron a usar. Las melodías, tonos de aviso y demás ruidos del sistema son

configura bles desde aquí. También con permisos de root se pueden cambiar.

Por defecto si no sobre escribes /apps los ficheros del usuario se guardaran. Se pueden perder los sms. Pero en general nada más.

6. ¿QUÉ TIENE MI TERMINAL DE ANDROIDE ?

El "su" el root y toda la historia…

Kernels y el OpenGL, Los 2D .. La “aceleracion” y el 3D en Android.

• El GPS y el Market. Esto es un fallo a medias entre en quien fabrica el terminal y entre otras el operador por no preocuparse por sus clientes.

• ¿ Que pasa cuando el GPS pierde señal o no funciona bien ?

• La compañía es consciente desde el momento 1, no les interesa comunicárselo a los operadores por quedar mal. Pero bueno el gps no se usa todo el rato. No es un tecnología al centímetro. La gente no se queja mucho.

• Pero y el Android Market, cuando con el mismo operador con la misma sim y dos terminales android salen resultados distintos y hay aplicaciones que no “están” esto es un poco más grave. Pero sobre mi experiencia, los operadores no pueden hacer mucho. Lo sufren los desarrolladores...

Page 10: Seminario Android (Parte 2) - movilforum

OpenGL : La historia del Pseudo 3D y el 2D

Se suponía que android venia con soporte OpenGL, el tema es que no estaba por ningún lado en los repositorios. Ninguna rom oficial levaba nada aparte de unos ficheros. Pero no había aplicaciones con soporte de verdad, aparte de los ejemplos de google. Todos los juegos eran 2D o pseudo 3D. Parece que eso va cambiando poco a poco. Los Samsung, los SonyErisson y algún Dell. Ya vienen con cpus de aceleración.

Se supone que con los móviles dual-core tecra el tema mejora. Nada de nada. El sdk no esta preparado. Veremos en las próximas versiones.

Root, Recovery, Unlock.

Desde el principio, los Android se han rooteado, más fácilmente, hoy en día es cosa de segundos. El superuser es la evolución. Para evitar fallos de seguridad de root en los terminales o versiones del kernel.

Los recoveries se compilan igual pero son algo mucho más complicado por que se hacen con ingería inversa sobre el terminal exacto.

El tema del unlock, no tienen ninguna ciencia, se supone que cada compañía ha de liberar la parte privativa de su terminal, vamos las fuentes del arranque y hboot. Con esto el unlock es coser y cantar, HTC no ha cambiado el sistema desde sus inicios, por que da igual un Windows Mobile, un Android o un Windows Phone 7.

Ante todo quiero dar las gracias a Moviforum, por toda la ayuda a mis desarrollos.