Ver la Versión Completa : Como compilar android
Vamos a partir de la idea de que todos tenemos unos conocimientos medios de linux así que lo primero de todo es tener en cuenta que para poder compilar Android necesitamos un sistema de archivos que haga diferencia entre Mayúsculas y minúsculas (case sensitive), es algo obligatorio y que necesitaremos ciertas herramientas necesarias para compilar.
Aclaro que con esto compilamos el source de android, por lo tanto el resultado sera una build ADP y lo mas seguro es que tengas que cambiar el SPL para poder instalarla.
Para Mac con xcode, macports, gmake libsdl, git-core y gnupg seria suficiente, mientras que para linux necesitaremos algo mas... git-core, gnupg, sun-java5-jdk, flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev, build-essential, zip, curl, libncurses5-dev, zlib1g-dev segun la distribucion de linux que tengas se necesitaran mas o menos cosas y como no tener instalado correctamente el SDK de Android.
Los pasos que indicare son usados en Mac, pero en linux han de ser los mismos.
1) Descargar la aplicación REPO con la que podremos descargar los distintos proyecto de Android.
curl http://android.git.kernel.org/repo > /bin/repo
chmod a+x /bin/repo
2) Crear una carpeta para nuestro proyecto.
mkdir /<donde yo quiera>/cupcake
3) Empezamos a descargar el source
cd /<ruta>/cupcake
repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
Dentro de nuestro directorio CUPCAKE ahora tendremos un directorio oculto llamado .repo en el cual vienen una serie de archivos que la aplicacion REPO tomara como referencia para saber que ha de descargase del source y que no.
Si editamos el archivo manifest.xml
cd .repo
nano manifest.xml
Podemos ver como estan definidos todos los proyectos que nos vamos a descargar asi como indicada su version en el caso de disponer de ello como por ejemplo con el kernel.
<project path="kernel"
name="kernel/common"
revision="refs/heads/android-2.6.27" />
En esta ultima linea podemos indicar que en vez de descargar el source del kernel 2.6.27 se descargue el 2.6.29, 2.6.30-rc1, etc...
Si no decidimos modificar nada podemos proceder a descargar todo el codigo fuente de android para luego compilarlo.
repo sync
usamos el parámetro -b para indicar un proyecto en concreto, cupcake, master, donut,... esto tardara varios minutos en descargarse.
Ahora ya tenemos descargado el Source de Android, pero esto solo nos serviría para compilar algo genérico y que no nos serviría demasiado para un HTC DREAM o MAGIC, hace falta descargar una serie de archivos mas específicos para nuestro terminal.
4) Descargamos el local_manifest.xml del siguiente enlace http://source.android.com/documentation/building-for-dream/local_manifest.xml?attredirects=0 (http://source.android.com/documentation/building-for-dream/local_manifest.xml?attredirects=0) y lo copiamos en la siguiente ruta
/<ruta>/cupcake/.repo/
Si tenéis algún problema con el enlace el contenido de local_manifest.xml es el siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="kernel/common"/>
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-htc-$
<project path="vendor/htc/dream" name="platform/vendor/htc/dream"/>
<project path="hardware/msm7k" name="platform/hardware/msm7k"/>
</manifest>
5) Ahora volvemos a sincronizar desde la raiz del proyecto.
repo sync
esto tardara algunos minutos en descargar lo necesario.
6) Ya tenemos lo necesario para compilar el source de android para una HTC DREAM o MAGIC pero nos hacen falta algunas librerías para evitar problemas, para eso tenemos que conectar el teléfono por USB al ordenador ya que vamos a tener que sacar las librerías de este, una vez conectado haremos lo siguiente ya que primero hay que modificar el script para extraer una libreria la cual muchas veces el compilador no es capaz de compilar bien.
cd vendor/htc/dream/
nano extract-files.sh
hay que añadir una linea al final del script
adb pull /system/lib/libOmxCore.so propietary/libOmxCore.so
Ahora ya podemos ejecutar el script
./extract-files.sh
este script nos descargara del teléfono las librerías necesarias mediante adb.
7) Por ultimo copiamos una pequeña plantilla de configuración del SO, volvemos a la raiz del proyecto y hacemos lo siguiente.
cp build/buildspec.mk.default buildspec.mk
editamos buildspec.mk y descomentamos la linea #TARGET_PRODUCT
Antes
#TARGET_PRODUCT:=generic
Después
TARGET_PRODUCT:=htc_dream
Con esto no compilamos especificamente para HTC DREAM, ya que no hay un repositorio de MAGIC se usa el de DREAM porque el hardware es el mismo y el teclado fisico no es mas que un añadido, ademas es la forma de indicarle al compilador que use las librerias, kernel, etc.. que hemos descargad antes y que no genere una build generica.
8) Ya podemos empezar a compilar
make
o si tenemos un procesador decente con doble nucleo..
make -j2
En el caso de que al intentar compilar nos aparezca un error parecido a este (en linux):
external/qemu/sockets.c: In function 'sock_address_init_resolve':
external/qemu/sockets.c:637: error: 'EAI_NODATA' undeclared (first use
in this function)
external/qemu/sockets.c:637: error: (Each undeclared identifier is
reported only once
external/qemu/sockets.c:637: error: for each function it appears in.)
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/
sockets.o] Error 1
Nuestro compañero crebaindamme nos ha encontrado una solucion http://www.pocketmagic.net/?p=682 Resumo lo que hay que hacer.
1) Editamos el archivo sockets.c ubicado en external/qemu/
nano /<ruta>/external/qemu/sockets.c
2) añadimos la siguiente linea #define __USE_GNU antes de #include <netdb.h>
Antes:
# include <netinet/tcp.h>
# include <netdb.h>
# if HAVE_UNIX_SOCKETS
Despues:
# include <netinet/tcp.h>
# define __USE_GNU
# include <netdb.h>
# if HAVE_UNIX_SOCKETS
Ahora ya podemos volver a intentar Compilar
Make ( o Make -j2 )
Cuando termine de compilarse en out/target/product/dream/ tendremos las imágenes generadas, system.img recovery.img, boot.img ademas de lo binarios, aplicaciones y todo el contenido de las imagenes.
-rw-r--r-- 1 ridli staff 12B 20 may 22:04 android-info.txt
-rw-r--r-- 1 ridli staff 1,6M 21 may 17:59 boot.img
-rw-r--r-- 1 ridli staff 285B 30 may 00:17 clean_steps.mk
drwxr-xr-x 3 ridli staff 102B 21 may 17:40 core
drwxr-xr-x 2 ridli staff 68B 20 may 22:03 data
-rw-r--r-- 1 ridli staff 14K 30 may 00:18 installed-files.txt
-rwxr-xr-x 1 ridli staff 1,4M 9 may 02:14 kernel
drwxr-xr-x 12 ridli staff 476B 21 may 18:12 obj
-rw-r--r-- 1 ridli staff 47B 30 may 00:17 previous_build_config.mk
-rw-r--r-- 1 ridli staff 373K 30 may 00:18 ramdisk-recovery.img
-rw-r--r-- 1 ridli staff 143K 21 may 17:58 ramdisk.img
drwxr-xr-x 3 ridli staff 102B 30 may 00:18 recovery
-rw-r--r-- 1 ridli staff 1,8M 30 may 00:18 recovery.img
drwxr-xr-x 8 ridli staff 442B 21 may 17:58 root
drwxr-xr-x 4 ridli staff 170B 21 may 17:58 symbols
drwxr-xr-x 10 ridli staff 374B 21 may 18:04 system
-rw------- 1 ridli staff 46M 30 may 00:18 system.img
-rw------- 1 ridli staff 2,1K 21 may 17:57 userdata.img
Ahora nos queda lo mas importante, comprobar que nuestro trabajo esta bien hecho y para ello vamos a usar las herramientas del SDK de Android, vamos a la carpeta donde tengamos el SDK y entramos en el directorio tools que es donde estan las herramientas que vamos a necesitar.
1) Comprobar que tenemos creado un dispositivo virtual (AVD) sobre la que usar nuestras imagenes.
./android list avd
Available Android Virtual Devices:
Name: cupcake
Path: /Users/ridli/.android/avd/cupcake.avd
Target: Android 1.5 (API level 3)
Skin: HVGA
---------
Name: master
Path: /Users/ridli/.android/avd/master.avd
Target: Android 1.1 (API level 2)
Skin: HVGA
Como se ve tengo 2 dispositivos virtuales creados, master y cupcake, en el caso de que no aparezca ninguno hay que crearlo para poder trabajar sin complicaciones.
-c --sdcard Path to a shared SD card image, or size of a new sdcard for the new AVD
-s --skin Skin of the new AVD
-p --path Location path of the directory where the new AVD will be created
-n --name Name of the new AVD [required]
-t --target Target id of the new AVD [required]
-f --force Force creation (override an existing AVD)
Target 1 = master (1.1)
Target 2 = cupcake (1.5)
./android create avd -n <nombre> -t 2
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no] no
Created AVD 'cupcake' based on Android 1.5
Ahora ya tendriamos creado un AVD de cupcake sobre el que trabajar.
2) Procederemos a iniciar el emulador de android con nuestra imagen de system para comprobar su funcionamiento.
./emulator -avd <nombre> -system /<ruta del proyecto>/out/target/product/dream/system.img
Tras unos segundos o algun minuto tendremos nuestro emulador funcionando con nuestra imagen de cupcake.
http://img33.imageshack.us/img33/7344/emulator.jpg
Si veis alguna cosa masl en el tutorial, algo que se deba de matizar un poco mas no dudeis en avisarme para que lo arregle/cambie
crebaindamme
03/06/09, 10:33:02
Gran aporte Ridli... Muy bueno, cuando tenga tiempo me pondre a hacer pruebas.
Para mi este post y el de crear un update.zip merecen chincheta.
kakadeluxe
03/06/09, 12:53:44
Gracias ridli :elmejor::elmejor:
Estas hecho un crack tio
Gracias ;)
gracias a vosotros y espero que os sirva de ayuda.
De todas formas veo muchas visitas y pocos comentarios, no se si es que en algun punto os da error o esta mal redactado.. no se..
kakadeluxe
04/06/09, 12:44:54
gracias a vosotros y espero que os sirva de ayuda.
De todas formas veo muchas visitas y pocos comentarios, no se si es que en algun punto os da error o esta mal redactado.. no se..Hola ridli. :ok:
A mi me interesa mucho este Tema pero me has pillado muy ocupado en este mes, cuando termine las tareas me meteré en ello y ya te comentare cosas, aqui o en tu foro habitual.
Salu2.
kakadeluxe
05/06/09, 19:48:09
Estoy intentando hacer una compilacion. Como no indicas si ha que hacerlo como root o como usuario normal.
Por ejemplo, el 1er. comando no me deja hacerlo como usuario sino como superusuario root
curl http://android.git.kernel.org/repo > /bin/repo
Este otro lo hago como usuario y sale errores.
repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
Traceback (most recent call last):
File "/bin/repo", line 590, in <module>
main(sys.argv[1:])
File "/bin/repo", line 557, in main
_Init(args)
File "/bin/repo", line 176, in _Init
_CheckGitVersion()
File "/bin/repo", line 205, in _CheckGitVersion
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
File "/usr/lib64/python2.6/subprocess.py", line 595, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1106, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Al principio aclaro que hay que tener unos conocimientos medios de linux/unix porque al igual que para hacer cualquier modificacion en bin (he puesto bin por poner un sitio, que tambien podia ser ~/bin ) o instalar las librerias o aplicaciones necesarias seria necesario quizas buscar un poco por si algun repositorio no las tiene. Es que sino el manual ha de ser mucho mas extenso porque habria que explicar de donde sacar librerias que no estan en respositorios algunas veces, ojo que no digo que no que seas una patata con linux, sino que algunas cosas no las he puesto por eso.
Me parece que ese error te sale por no tener instalado GIT.
crebaindamme
08/06/09, 23:10:07
Hola Ridli... He intentado hacer una compilación... Hago todo el proceso, pero al final cuando estoy haciendo el make me sale el siguiente error, y deja de compilar:
host C: emulator <= external/qemu/sockets.c
external/qemu/sockets.c: En la función ‘sock_address_init_resolve’:
external/qemu/sockets.c:637: error: ‘EAI_NODATA’ no se declaró aquí (primer uso en esta función)
external/qemu/sockets.c:637: error: (Cada identificador no declarado solamente se reporta una vez
external/qemu/sockets.c:637: error: para cada funcion en la que aparece.)
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/sockets.o] Error 1
¿Sabes a que se puede deber? Yo creo que falta alguna configuración... En fin, ya me contaras.
Un saludo
crebaindamme
09/06/09, 12:57:41
Hola... acabo de encontrar una solución... a ver si la pruebo hoy al medio día y os digo algo. Aquí está:
http://www.pocketmagic.net/?p=682
Ridli, seguramente sería importante ponerlo en el primer post. Bueno... lo pruebo primero y luego comento.
En este link viene el añadido de como ejecutar codigo C en android.
Un saludo.
crebaindamme
09/06/09, 16:27:38
Bueno chicos... después de hora y media compilando... pude comprobar mediante el emulador que si!!! He compilado mi primera rom de Android (claro está que no era mía si no de Google, pero es un primer paso), con lo cual el link que puse antes solucionó el problema.
Ahora el siguiente paso es saber si se podría cargar esa rom en el telefono mediante :
fastboot flash system system.img
O cómo se podría hacer un update.zip a partir de esto...
En fin... seguiré buscando cositas a ver si encuentro algo.
Un saludo
Siento no haberte contestado pero ando con muchas cosas encima y apenas tengo tiempo, me.
El problema que tiene Linux es que hay tantas distros y cada una la tiene instalado cada cual como quiere que es algo dificil saber que hace falta y que no hace falta, por lo que veo en tu mensaje es un problema del compilador y por la solucion que has puesto es eso mismo, ahora mismo lo añado.
Como hacer un update.zip lo tienes en otro hilo, ademas de que lo hice para trabajar desde una version compilada del source, de todas formas para instalar tu build lo puedes hacer como tu dices.
1) arrancar desde fastboot
2) fastboot erase system.
3) fastboot flash system /<ruta>/system.img
Depende de la version que tengas previamente instalada te hara falta hacer wipe o cambiar el boot.
crebaindamme
09/06/09, 18:26:12
Ok... Gracias Ridli. Si, tienes razón, cuando había leido el otro post no me había dado cuenta de que hacías el update zip con una imagen precompilada, pensé que simplemente modificabas otro update.zip. Ahora lo acabo de ver... Bien, el miedo que tengo es con el contenido del update-script que no lo entiendo muy bien:
¿Si lo haces mal... simplemente te da fallo y no instala el update o lo instala igualmente y cascas la rom instalada anteriormente?
El boot no tiene nada que ver con el recovery ¿no?
Como ves ando un poco pez con algunas cosillas, pero al menos ya estoy metiendo mano y probando (que no es poco jejejejejjejejje).
Ah... quería saber tambien qué aplicaciones sería bueno meter para no perder el acceso root ¿bastaría con el Superuser.apk?, me supongo que no, que habría que meter algo más o tocar en alguna otra parte ¿no?
No te preocupes por lo de no haber contestado... te entiendo perfectamente
Un saludo
Hmm... Superuser.apk es una aplicacion que te permite controlar el acceso como root, no para evitar perderlo.
Boot.img es el arranque del telefono mientras que recovery es un modo recuperacion que no tiene nada que ver con el arranque normal. La estructura del boot.img no es muy diferente entre una version y otra, lo unico medianamente importante es el kernel, pero teniendo cupcake instalado no deberias de tener muchos problemas en cambiar de una version a otra sin cambiar el Boot, depende como te digo de que tenias antes instalado pero de toda formas nunca viene mal instalar el nuevo boot para evitar problemas.
Volviendo al tema del root.. mientras que con una version "oficial" tienes que hacer una copia del SH en Cupcake directamente tienes un binario que lo controla pero este hace un chequeo del uid del usuario que lo ejecuta, si no coincide con el de root o con alguno de los grupos que han de tener permiso te dice que lo intentes otro dia, las soluciones que tienes son sencillas.
Borras la imagen de system, cambias el SU por uno ya modificado y vuelves a empaquetarlo todo con Make
rm -rf out/target/product/dream/system.img
rm -rf out/target/product/dream/obj/PACKING/systemimage_unopt_intermediates/system.img
cp </ruta su modificado>/su out/target/product/dream/system/bin/
make
Con esto lo modificas y vuelves a empaquetar system.img
o bien modificas su.c antes de compilar (o despues borrando las versiones pre-compiladas y compiladas en out/... y vuelves ha compilar/empaquetar) y editas lo siguiente:
nano system/extras/su/su.c
Antes:
int main(int argc, char **argv)
{
struct passwd *pw;
int uid, gid,muid;
Despues:
int main(int argc, char **argv)
{
struct passwd *pw;
int uid, gid;
Antes:
} else {
uid = pw->pw_uid;
gid = pw->pw_gid;
}
}
/* Until we have something better, only root and the shell can use su. */
myuid = getuid();
if (myuid != AID_ROOT && myuid != AID_SHELL) {
fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
return 1;
}
if(setgid(gid) || setuid(uid)) {
fprintf(stderr,"su: permission denied\n");
Despues:
} else {
uid = pw->pw_uid;
gid = pw->pw_gid;
}
}
if(setgid(gid) || setuid(uid)) {
fprintf(stderr,"su: permission denied\n");
crebaindamme
09/06/09, 19:17:08
Muchas gracias Ridli... Lo probare, ya te contaré que tal.
Un saludo
crebaindamme
10/06/09, 10:33:27
Bueno... he tenido unos problemillas con mi linux y no he podido compilar. Pero ya he visto donde se cambia el tema. El caso es que se me queda colgado en la mitad del proceso make (creo q igual se pega algo de lo que tengo instalado con lo que tuve q instalar para compilar android... o eso, o se queda corto de memoria:silbando:), así que reinstalare el SO (cuando tenga un ratillo) y probaré de nuevo. El caso es q me paso un par de veces cuando lo intente la primera vez... pero al final lo conseguí. Ahora es completamente imposible.
En fin, ya os contaré.
Un saludo
Pega un pantallazo de como se te queda por si es problema de la compilacion, si ya has compilado antes e intentas volver a compilar porque has añadido una aplicacion o has modificado algo del source tienes que borrar las imagenes afectadas al igual que los binarios compilados que has modificado en el source, si no lo haces no te modifica nada y de algun mensaje raro.
Si modificas el SU por ejemplo ademas de borrar las imagenes de system tambien hay que borrar el binario compilado, que se me fue la pinza :P
out/target/product/dream/obj/EXECUTABLES/su_intermediates/LINKED/su
out/target/product/dream/obj/EXECUTABLES/su_intermediates/su
out/target/product/dream/symbols/system/bin/su
out/target/product/dream/system/xbin/su
crebaindamme
10/06/09, 17:08:47
Jajajajajaja... no, no te preocupes. Creo q el problema esta en el Linux, que al requerir de bastante memoria para compilar me deja el procesador petado, o eso, o es una incompatibilidad entre el compilador y alguna otra aplicación que tenía por ahí. Ahora al medio día he vuelto a instalar el SO, todavía me falta terminar de ponerlo a punto para probar de nuevo. Ya te contaré.
Gracias por este último aporte (tomo nota).
Una preguntilla... una vez compilado, en out/target/product/dream se encuentra toda la estructura de directorios que se van a incluir en la imagen. Si introduzco una aplicación ya compilada como apk en la estructura (eliminando claro está la imagen anterior), al volver a hacer el make ¿esa aplicación quedaría metida en la imagen para poder probar la rom en el emulador o por el contrario hay que meterla desde el origen (en codigo java) y realizar el make completo?
Tengo más preguntas pero creo que llendo poquito a poco y descubriendo cosas aprenderé más. Además no quiero agobiarte con una ristra de preguntas.... De todos modos cuando me quede atascado ya te comentare.
Muchas gracias por todo.
Un saludete
Jajajajajaja... no, no te preocupes. Creo q el problema esta en el Linux, que al requerir de bastante memoria para compilar me deja el procesador petado, o eso, o es una incompatibilidad entre el compilador y alguna otra aplicación que tenía por ahí. Ahora al medio día he vuelto a instalar el SO, todavía me falta terminar de ponerlo a punto para probar de nuevo. Ya te contaré.
Gracias por este último aporte (tomo nota).
Una preguntilla... una vez compilado, en out/target/product/dream se encuentra toda la estructura de directorios que se van a incluir en la imagen. Si introduzco una aplicación ya compilada como apk en la estructura (eliminando claro está la imagen anterior), al volver a hacer el make ¿esa aplicación quedaría metida en la imagen para poder probar la rom en el emulador o por el contrario hay que meterla desde el origen (en codigo java) y realizar el make completo?
Tengo más preguntas pero creo que llendo poquito a poco y descubriendo cosas aprenderé más. Además no quiero agobiarte con una ristra de preguntas.... De todos modos cuando me quede atascado ya te comentare.
Muchas gracias por todo.
Un saludete
Pasa lo mismo que si añades un binario ya compilado, si borras las imagenes previas de system (las 2), añades el apk en system/app y compilas directamente te genera las imagenes con el apk que has introducido. Las dudas esta bien postearlas porque asi ayuda n a mas gente, me da la impresion de que el tuto no es muy claro, si consideras que hay cosas que cambiar o aclarar dilo y lo vamos adecentandolo.
crebaindamme
10/06/09, 18:11:04
Ok... lo probare y ya os contaré...
Con respecto a las dudas, también pienso lo mismo, por eso voy poniendo más o menos los progresos que voy haciendo. Una de las dudas más gordas que tengo y que estuve buscando (pero todavía no encontré por ahí nada claro) es con el update-script para crear el update.zip (lo único que encontré fué un post de Jesus Freak que decía que había que mirar el código fuente del recovery, y era lo que tenía pensado hacer): la duda viene de la asignación de permisos a cada elemento. Me explico, cuando haces el set_perm se le asigna mediante un codigo, lo que yo entiendo como permiso de ejecución. El problema estriba en el código introducido ya que no encontré en ninguna parte un manual claro que diga que código hay que meter para un determindado permiso (no se si me he explicado).
Por lo demás y hasta el punto en el que estoy creo que los manuales se siguen correctamente y son muy claros. En cualquier caso te iré comentando.
Un saludo.
las columnas del set_perm hacen referencia a os permisos y propietario del archivo, grupo, usuario y permisos de ejecucion, los permisos son los mismos que se usan en linux, los mismitos.
crebaindamme
10/06/09, 19:04:30
Si... eso lo entiendo, pero los permisos en linux se dan en codigos de 3 dígitos asignando permisos a propietario, grupo y otros (que por lo que suponía son los tres últimos dígitos). ¿Pero y el resto?
Por poner un ejemplo:
set_perm 1014 2000 0550 SYSTEM:etc/dhcpcd/dhcpcd-run-hooks
El 550 asigna lectura y ejecución tanto al propietario como al grupo, pero aún falta el resto del código, a no ser que lo esté entendiendo mal y me esté llendo por otro lado (pero no lo creo)...
set_perm 1014 2000 0550 SYSTEM:etc/dhcpcd/dhcpcd-run-hooks
Esos dos numero indican el id de usuario y el id de grupo, lo que no se es donde estan los usuarios y grupos en el telefono, por que en /etc no encuentro ni el fichero groups ni el shadows.
crebaindamme
11/06/09, 00:43:41
Bueno chicos... otra cosa más que me he encontrado. Resulta que despues de reinstalar el sistema operativo, me puse a descargar el codigo de nuevo (me había olvidado de hacer copia de seguridad :enfadadisimo:), y cual fué mi sorpresa que en cuanto me puse a descargar mediante repo, me salía el siguiente mensaje:
fatal: The remote end hung up unexpectedly
error: Cannot fetch repo
googleando un rato encontre el motivo (que por otra parte me lo olía), el servidor estaba caido o saturado. La solución consiste en usar el servidor alternativo. Esto se consigue editando el archivo
/etc/hosts
y añadiendo la línea
204.152.191.45 android.git.kernel.org
Con esto he conseguido continuar el proceso. Ahora el problema es que despues de 2 horas descargando, justo al final el ordenador se me volvió a quedar colgado:pensando:. Así que reinicié y volvi a realizar la orden "repo sync" y al final de todo, cuando me debía dar todo ok me sale lo siguiente:
kernel/: discarding 21982 commits
error: kernel/: kernel/msm checkout 124e9edf063190b511c53d697711c7a5cf42dbbb
Lo que quiere decir que todo este tiempo fue perdido, ya que aunque logre eliminar los archivos e intentar descargarlos de nuevo, seguro que se me quedará colgado de nuevo cuando haga el make.
(Tambien me hace pensar... ¿por qué fuí capaz de hacer todo el proceso la primera vez?... en fin)
Conclusión, el problema seguro q está en el ordenador se queda sin memoria al intentar chequear y compilar el árbol de directorios (ya tiene unos añitos, pero hasta ahora no me habia dado problemas). Así que montaré una máquina virtual en el ordenador de sobremesa (bastante más potente.... y nuevo jejejjejje) y probaré de nuevo.
Os seguiré contando como va la cosa.
Un saludo
EDITO: Al final he conseguido descargar el source y dejarlo listo tras dejarlo toda la noche descargando... decidí hacer una ultima prueba ya que no eran horas ya de intentarlo con el otro ordenador. Ahora he echo un zip del proyecto para no tener que hacer este proceso otra vez a no ser que cambie de "branch". Por cierto Ridli... el archivo para sacar los datos del movil es extract-files.sh (con s al final). Nada más por el momento.
crebaindamme
12/06/09, 13:33:00
Bueno... nueva información sobre UID/GID, de momento es lo único que encontre:
0 - root
1000 - system
1001 - radio
1002 - bluetooth
1003 - graphics
1004 - input
1005 - audio
1006 - camera
1007 - log
1008 - compass
1009 - mount
1010 - wifi
1011 - adb
1012 - install
1013 - media
1014 - dhcp
10000 - app_0
10001 - app_1
10002 - app_2
10003 - app_3
10004 - app_4
fuente: http://forum.xda-developers.com/showthread.php?t=442557
Sigue habiendo cosas en el aire como por qué en ocasiones aparece doble asignación de permisos, o UID/GID diferentes a los expuestos aquí, ejemplo:
set_perm_recursive 0 0 0755 0644 SYSTEM:
set_perm_recursive 0 2000 0755 0755 SYSTEM:bin
o por ejemplo
set_perm 0 3003 02755 SYSTEM:bin/netcfg
donde la asignación de permisos incluye un número más (¿?) y el GID también es desconocido...
En la fuente anterior dice que hay una lista que marca los permisos en /system/etc/permissions.xml, en los update.zip que tengo a mano no aparece, lo veré en el código antes de compilar el img que tengo por casa, a ver que aparece.
En fin... seguiré investigando.
crebaindamme
13/06/09, 08:48:22
Hola gente.
Actualizo: he conseguido compilar desde la máquina virtual (despues de algún pantallazo azul de vista con el virtualbox al usar repo :enfadadisimo:, en cuanto conseguí obtener el codigo ya no me ha dado ningún problema).
Después he conseguido introducir aplicaciones en la imagen, y he comprobado que tenía acceso root, pero la aplicación superuser.apk no salta al conseguir los privilegios.
También he visto que hay algunas incompatibilidades con cosas que he metido: el calendar hace saltar un Forzar Cierre nada más empezar y cada vez que se intenta utilizar.
No he conseguido introducir el market de momento.
En cuanto configuras la cuenta de gmail, salta un forzar cierre continuo con el acore.
He conseguido configurar el idioma por defecto a Español.
He introducido los valores de APN para orange (en system/etc/apns-conf.xml)... pero no salen en la lista.
El teclado, lo he intentado cambiar al layout español pero en cuanto hago el make me lo reescribe, debe haber en algún otro lado una copia que debe ser coherente con esta.
Lo mismo pasa con el dalvikvm y el libdvm.so que lo he intentado sustituir por las de la ION Rom, pero se mantienen los archivos iniciales.
Hasta el momento todas las pruebas las he hecho con el emulador (por supuesto :risitas:).
Un saludo.
EDITO: Por cierto, el problema de los cuelgues que tenía en el portatil, creo que puede venir de que estaba usando la distro 9.04 de Ubuntu con pariticiones ext4. La primera vez que lo probé en la máquina virtual me pasó lo mismo :oh:, así que metí la 8.04 LTS para asegurarme, y quitando los pantallazos azules de Vista mientras usaba repo, no hubo más problemas. Debe haber alguna cosilla con las ext4...
kakadeluxe
13/06/09, 09:46:37
El formato ext4 esta verde pero hay distribuciones que lo instala por defecto ya que es el signo del "progreso", es decir, que si no lo prueba y no notifica los bugs los usuarios no hay arreglo.
Me gusta este hilo. Tengo que compradme un disco duro externo para pasar los archivos de mi openSUSE al disco duro externo para dejar espacio libre para compilar.
¿Cuanto espacio te ocupa el directorio cupcake de Android y la compilaciones?.
Salu2.
Hola gente.
Actualizo: he conseguido compilar desde la máquina virtual (despues de algún pantallazo azul de vista con el virtualbox al usar repo :enfadadisimo:, en cuanto conseguí obtener el codigo ya no me ha dado ningún problema).
Después he conseguido introducir aplicaciones en la imagen, y he comprobado que tenía acceso root, pero la aplicación superuser.apk no salta al conseguir los privilegios.
También he visto que hay algunas incompatibilidades con cosas que he metido: el calendar hace saltar un Forzar Cierre nada más empezar y cada vez que se intenta utilizar.
No he conseguido introducir el market de momento.
En cuanto configuras la cuenta de gmail, salta un forzar cierre continuo con el acore.
He conseguido configurar el idioma por defecto a Español.
He introducido los valores de APN para orange (en system/etc/apns-conf.xml)... pero no salen en la lista.
El teclado, lo he intentado cambiar al layout español pero en cuanto hago el make me lo reescribe, debe haber en algún otro lado una copia que debe ser coherente con esta.
Lo mismo pasa con el dalvikvm y el libdvm.so que lo he intentado sustituir por las de la ION Rom, pero se mantienen los archivos iniciales.
Hasta el momento todas las pruebas las he hecho con el emulador (por supuesto :risitas:).
Un saludo.
EDITO: Por cierto, el problema de los cuelgues que tenía en el portatil, creo que puede venir de que estaba usando la distro 9.04 de Ubuntu con pariticiones ext4. La primera vez que lo probé en la máquina virtual me pasó lo mismo :oh:, así que metí la 8.04 LTS para asegurarme, y quitando los pantallazos azules de Vista mientras usaba repo, no hubo más problemas. Debe haber alguna cosilla con las ext4...
Que de cosas has cambiado jajajaja bueno a ver en que te puedo aclarar algo.
Tienes que fijarte primero de donde sacas las aplicaciones ya que muchas son propias de HTC y necesitan su framework o al menos algunas el core por lo tanto en una build ADP como seria esta no funcionarian, si cambias el core completo te la juegas a que las aplicaciones de Google no funcionen.
La aplicacion de SuperUser es algo compleja y no siempre funciona bien, bajate el source y compilala junto con todo lo demas asi te aseguras su funcionamiento.
Las aplicaciones que seguro que si te van a funcionar son las que puedes encontrar en una version de ADP aun siendo oficial de Android.
El tema del teclado es porque ademas de tomar los valores de un par de sitios tiene que ver mucho el mapeado del que dispones, en una G1 o ADP el mapeado que usa es el rout-keypad-v3 mientras que en la HTC DREAM el que se esta usando es rout-keypad-v3-spain-qwerty que viene con la build de Movistar, en AndroidBoard.mk es donde lo tienes definido pero ojo que lo que compilas es el source del mapeado.
crebaindamme
13/06/09, 16:48:52
El formato ext4 esta verde pero hay distribuciones que lo instala por defecto ya que es el signo del "progreso", es decir, que si no lo prueba y no notifica los bugs los usuarios no hay arreglo.
Me gusta este hilo. Tengo que compradme un disco duro externo para pasar los archivos de mi openSUSE al disco duro externo para dejar espacio libre para compilar.
¿Cuanto espacio te ocupa el directorio cupcake de Android y la compilaciones?.
Salu2.
Hola Kakadeluxe, me alegro que te guste el hilo... yo estoy disfrutando mucho (y aprendiendo) con la ayuda de Ridli. Respondiendo a tu pregunta en este momento el source y las compilaciones ocupan 4 Gb, pero teniendo en cuenta que de vez en cuando hago una copia de seguridad (por todos los problemas que he tenido jejejej) pues en total estará sobre unos 8-10 Gb.
Que de cosas has cambiado jajajaja bueno a ver en que te puedo aclarar algo.
Tienes que fijarte primero de donde sacas las aplicaciones ya que muchas son propias de HTC y necesitan su framework o al menos algunas el core por lo tanto en una build ADP como seria esta no funcionarian, si cambias el core completo te la juegas a que las aplicaciones de Google no funcionen.
La aplicacion de SuperUser es algo compleja y no siempre funciona bien, bajate el source y compilala junto con todo lo demas asi te aseguras su funcionamiento.
Las aplicaciones que seguro que si te van a funcionar son las que puedes encontrar en una version de ADP aun siendo oficial de Android.
El tema del teclado es porque ademas de tomar los valores de un par de sitios tiene que ver mucho el mapeado del que dispones, en una G1 o ADP el mapeado que usa es el rout-keypad-v3 mientras que en la HTC DREAM el que se esta usando es rout-keypad-v3-spain-qwerty que viene con la build de Movistar, en AndroidBoard.mk es donde lo tienes definido pero ojo que lo que compilas es el source del mapeado.
Hola Ridli... Si de lo de HTC ya me he dado cuenta.... intenté meter el teclado :grin:, y claramente no funciono... con el resto, pues intento coger únicamente las de Google y por eso me extraña el problema del calendario y los forzar cierres.
Con respecto al Superuser ¿de donde puedo bajar el Source? ¿Está también disponible por repo?
Lo del teclado, si... eso ya lo se, precisamente por eso he cogido los archivos trout-keypad-v3-spain-qwerty (tanto el layout como el chars) y he sobreescrito los otros. Esto desde luego funciona porq es así como arreglé el tema en mi movil ;-) (gracias a ti y a Rick por supuesto). Supuse que haciendo eso (ya que realmente había los archivos) no los sobreescribiría de nuevo, pero no fué así. Debe comprobar el contenido del archivo con otro... o quizás que se ha modificado después de la compilación o algo así.
He comprobado también que pasa lo mismo con las aplicaciones, si sobreescribes una apk, la pisa de nuevo. Todo debe tener el mismo problema de base.
En fín... probaré lo de cambiar el mapeado desde abajo en el AndroidBoard.mk.
Bueno... me alegra ver que es posible que Kakadeluxe se una a nosotros... si alguien más se atreve será bienvenido... Un aplauso para los valientes :aplausos: jejejejejje.
Un saludo a todos y en especial a Ridli... eres un crack fiera.
EDITO: Por cierto... Ridli... sabes que aplicación gestiona lo del Market¿? Por más que lo busco no logro encontrarla.
que una aplicacion se te cierre asi tambien puede ser por las librerias, ya que la cambias hazlo tambien con las librerias.
hay una variable que define el tipo de teclado hw.keyboards.0.devname, si no puedes cambiar el mapeado del source siempre puedes insntar incluir el mapeado en la compilacion y modificar ese valor a hw.keyboards.0.devname = trout-keypad-v3-spain-qwerty . Movistar lo tiene asi por defecto.
crebaindamme
13/06/09, 17:34:16
Gracias... probare y ya te contare...
EDITO: He encontrado el source de superuser.apk en la siguiente página
http://forum.xda-developers.com/showthread.php?t=449536
crebaindamme
13/06/09, 18:06:46
No me he podido aguantar.... antes de probar nada he empezado a descargar el source del donut jjejejejejejejjeje. A ver q trae... (¿Correra en un avd de cupcake?:oh:... lo veremos pronto)
crebaindamme
13/06/09, 22:27:54
Donut probado...
Impresiones:
- Mucho más ágil que la cupcake (parece que mejoraron la dalvikvm o metieron la del ION).
- Visualmente lo único que cambia (hasta el momento) es el widget buscador de Google (más simple todavía).
- Multiples idiomas (entre ellos español).
- No se puede generar para HTC Dream (no tienen el local_manifest.xml para el dream con la rama donut al usar repo).
- El código es algo más extenso, la compilación completa (codigo + compilación) ocupa 4,3 Gb y la system.img ocupa 43 Mb.
- Por lo demás (y con lo poco que he probado) parece basicamente lo mismo, me temo que los cambios son más internos.
Si a alguien le interesa puedo hacer unos pantallazos (pero no creo q los querais porq visualmente es igual).
Un saludo
Donut probado...
Impresiones:
- Mucho más ágil que la cupcake (parece que mejoraron la dalvikvm o metieron la del ION).
- Visualmente lo único que cambia (hasta el momento) es el widget buscador de Google (más simple todavía).
- Multiples idiomas (entre ellos español).
- No se puede generar para HTC Dream (no tienen el local_manifest.xml para el dream con la rama donut al usar repo).
- El código es algo más extenso, la compilación completa (codigo + compilación) ocupa 4,3 Gb y la system.img ocupa 43 Mb.
- Por lo demás (y con lo poco que he probado) parece basicamente lo mismo, me temo que los cambios son más internos.
Si a alguien le interesa puedo hacer unos pantallazos (pero no creo q los querais porq visualmente es igual).
Un saludo
gracias tio
tan crack como siempre :ok:
Donut probado...
Impresiones:
- Mucho más ágil que la cupcake (parece que mejoraron la dalvikvm o metieron la del ION).
- Visualmente lo único que cambia (hasta el momento) es el widget buscador de Google (más simple todavía).
- Multiples idiomas (entre ellos español).
- No se puede generar para HTC Dream (no tienen el local_manifest.xml para el dream con la rama donut al usar repo).
- El código es algo más extenso, la compilación completa (codigo + compilación) ocupa 4,3 Gb y la system.img ocupa 43 Mb.
- Por lo demás (y con lo poco que he probado) parece basicamente lo mismo, me temo que los cambios son más internos.
Si a alguien le interesa puedo hacer unos pantallazos (pero no creo q los querais porq visualmente es igual).
Un saludo
Si te sirve de algo desde hace varias semanas funciono con Donut asi que si es posible compilar Donut para una HTC Dream pero no es 100% estable, no se si ahora lo sera.
Para hacer la rom algo mas "ligera" siempre puedes quitar todos los locales menos el ingles y el español, no se ahorra mucho pero si algun que otro mb.
find . -name '*-fr' -exec rm -rf {} \; <-- y te fulminas parte del frances :loco:
crebaindamme
14/06/09, 01:24:05
Ok... pero no permite descargar los paquetes del local_manifest.xml... en cualquier caso ya no probé a hacer el extract_files.sh, y compilo todo en generic (por supuesto). Hombre... de momento todavía no voy a probar a cargar nada en el telefono (como comprenderas), hasta que no consiga una rom más o menos estable en el emulador... me parecen los pasos más adecuados.
En cualquier caso gracias por la info... ese tipo de pinceladas es de las que despues se saca mucha chicha.
Un saludo
Ok... pero no permite descargar los paquetes del local_manifest.xml... en cualquier caso ya no probé a hacer el extract_files.sh, y compilo todo en generic (por supuesto). Hombre... de momento todavía no voy a probar a cargar nada en el telefono (como comprenderas), hasta que no consiga una rom más o menos estable en el emulador... me parecen los pasos más adecuados.
En cualquier caso gracias por la info... ese tipo de pinceladas es de las que despues se saca mucha chicha.
Un saludo
Que no puedas usar el local_manifest por falta de repositorio para donut no quiere decir que no puedas usar los archivos ya bajados para compilar Donut :loco: :pensando:
Cuando pueda te pongo lo de los usuarios que creo que puedo añadir algunos mas.
crebaindamme
14/06/09, 17:18:45
Bueno... he probado a compilar la cupcake metiendole el source del dalvik y el kernel del donut... resultado: tenemos un fantastico bucle entre la pantalla de inicio de android y el escritorio jejejejjejeje. Voy a probar a compilarlo de nuevo metiendole también el codigo del framework de donut, a ver que pasa. Ya que estoy (y que he conseguido el source de la aplicación superuser.apk) voy a traducir superuser.apk al español (son 4 textos de nada).
Con respecto al teclado, he visto que en vendor/htc despues de hacer el extract_files.sh tenemos el layout y la lista de apn en el source. Voy a intentar modificarlos y a ver que pasa, con un poco de suerte conseguimos algo.
Un saludo.
crebaindamme
15/06/09, 09:22:35
Hola chicos... después del fracaso he decidido dejar la donut aparcada un rato. Ahora me estoy centrando en solucionar unos cuantos problemas en la cupcake de siempre. He descubierto una opción que puede ser la que desactiva el market: en el buildspec.mk hay un apartado que permite activar cosas como gmail y algunas características del webkit (al verlo me di cuenta que, al igual que el market, gmail no estaba activo). Además por más que ponía el código de la aplicación superuser (ya traducido) no lograba hacer que se compilase. Al ver las otras aplicaciones me di cuenta de que faltaba un arhivo, el build.mk (creo que se llamaba así, estoy hablando de memoria), así que he creado uno mas o menos siguiendo el de las otras aplicaciones (no se si estará bien... lo veremos después) y a ver que sale.
También he hecho una prueba introduciendo el apn de orange en apnsconf.xml en vendor/htc/dream/ y he introducido la ñ (con código unicode por supuesto) en el trout-keylayout-v3.kcm en el mismo directorio.
Así pues lo he dejado compilando esta mañana y lo probaré al medio día.
Un saludo
crebaindamme
15/06/09, 12:23:48
Hola otra vez... buceando por ahí he encontrado esto que puede ser de utilidad a mucha gente... Como desempaquetar un archivo boot y recovery img, modificar y volver a empaquetar.
Aquí está...
http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images
Otra más... Ampliación de la lista de UIDs y GIDs
http://android-dls.com/wiki/index.php?title=Android_uids_and_guids
Un saludo
EDITO: Otra pagina interesante
http://devtcg.blogspot.com/2009/03/building-running-and-debugging-android.html
crebaindamme
15/06/09, 15:48:27
Bueno.... Fallo al compilar... la culpa: superuser.apk. Ibamos por buen camino, de hecho fue el android.mk lo que faltaba (no build.mk como habia puesto antes). El tema es que ahora, al compilar me sale un error por variable de texto de los layouts que dice que deben ser localized (lo cual no se exactamente a que se refiere, he estado buscando pero no encuentro solución). Estuve viendo las otras aplicaciones y no parecen diferentes.
En fin... al final he quitado la aplicacion superuser.apk para poder seguir compilando y probar el resto de cosas.
el idioma en las aplicaciones debe de ir cada uno en su carpetita localizado, me parece que se refiere a eso, si te fijas cada idioma tiene su xml_es, values_es y layout_es (o al menos la mayoria)
crebaindamme
15/06/09, 16:19:37
hombre... no se, el error es referente a los text_view... dice:
ERROR: in /development/app/superuser/res/layout/main.xml the variable x with the text: "..." must be localized.
O algo así... y eso con cada uno de los text view... probe a cambiarlo por el original por si al traducir habia cambiado algo más (cosa no muy probable por que lo único que hice fué cambiar los strings que van lincados a cada textview... pero por si las moscas), pero obtuve el mismo resultado.
También probé buscando exactamente la anatomía del android.mk en internet... y nada. Así que decidí volver a compilar sin la aplicación y meterla después como hemos hecho hasta ahora... pero me temo q no va a funcionar... en cualquier caso podemos probar el resto de cosas (lo que más me interesa ahora mismo es lo del market y gmail).
Ya te contare.
crebaindamme
16/06/09, 05:10:18
Bueno... fracaso, de momento. El teclado no cambia por más que le toque al trout-keypad-v3.kcm, no se de donde sigue cogiendo el ">" pero no sale nuestra famosa "ñ", el tema de cambiar el teclado en el configurador del AndroidBoard.mk no me parece factible puesto que el teclado español que tengo del dream de Movistar lo tengo ya compilado (trout-keypad-v3-spain.kcm.bin) por tanto no creo q se pueda meter así como así desde el inicio de la compilación.
He conseguido que la modificación en los apns llegue hasta el final, pero no sale en la lista una vez iniciado el emulador (claro que de toda la lista que hay solo aparece uno... aquí seguramente tenga la culpa el emulador que toma por defecto el valor de T-Mobile US), pero bueno... habría que comprobarlo.
Con respecto a gmail, market, maps, etc... es decir las Aplicaciones google, siguen sin aparecer y eso que la modificación en el buildspec.mk parece clara:
#To enabled instrumentation in webcore based apps like gmail and the browser, define WEBCORE_INSTRUMENTATION := true
Claro que también esto puede ser simplemente para habilitar características, pero las aplicaciónes deberían estar ahí (y sigo sin encontrarlas).
Como veis, estoy algo desanimado... pero no rendido. Seguiré probando.
Por cierto... el terminal emulator que viene con el source aparece deshabilitado, me explico, no puedes acceder a el desde el menu, pero está instalado, cuando te vas a Settings>Manage Aplications, aparece alli pero no puedes tocarle ni a borrar datos ni nada. Cosa curiosa.
EDITO: Definitivamemte las aplicaciones gmail, googleApps, maps, etc no estan en el source. Habrá que probar a introducirlas despues de compilar.
Esas aplicaciones de Google no son codigo libre, por eso no estan en el source, ha habido mucha polemica con ello al prinicpio de salir el G1.
El Source de android es todo un misterio ya que trae muchisimas cosas desactivadas y ocultas.
crebaindamme
16/06/09, 10:56:09
Sip... Creo q no merece la pena seguir por esta línea, me parece más productivo partir de una rom ya creada y con todas las funcionalidades. Además el sistema operativo generado por el source libre da la impresión de ser una versión muy anterior, me explico, la dalvik funciona peor, hay funcionalidades básicas no implementadas que vienen por defecto en cualquier cupcake, y además hay problemas al introducir las aplicaciones de google (seguimos con cierres en el calendario, los asistentes no funcionan correctamente...), y además sigo sin conseguir hacer q la aplicación superuser corra como debería.
Ésto se puede solventar descargando la rama donut... pero seguimos sin poder hacer una compilación decente para poder cargarlo en el dispositivo.
Habrá que esperar a más adelante. En cualquier caso, se puede intentar hacer cositas, como ya he dicho, con la rom ya creada.
Bueno... ¿que hacemos entonces? ¿Nos pasamos al hilo del update.zip o nos quedamos por aquí? :P
crebaindamme
16/06/09, 18:57:59
Hola otra vez... Acabo de encontrar unas cosillas bastante interesantes que nos servirán a más de uno:
http://forum.xda-developers.com/showthread.php?p=3906706
http://www.myhtcphone.com/node/13
No sabía que las system.img se podían montar (si... igual peco de "inculto" al decirlo pero es verdad), lo cual tiene mucha lógica ya que se montan en particiones y ahora entiendo como se puede sacar la información de ellas para poder hacer un update.zip, por ejemplo de un backup de NanDroid.
Al final... cogiendo un poquito de aqui y otro poco de allá, vamos obteniendo información valiosa.
Espero que os valga... desde luego, a mi si.
Un saludo
DaWeIII
08/07/09, 15:24:50
MAdre mia, cuanta informacion estoy descubriendo en este hilo.
Tenia pensado instalarme la Maquina Virtual un par de semanas antes de comenzar el curso en septiembre, pero... viendo esto, me da que en un par de dias me pongo al tajo.
Muchas gracias Ridli, por ese pedazo de tuto y por todos los aportes que vais poniendo. Me parece que con esto voy a aprender mucho sobre android y sus entrañas.
Saludines cracks! :ok:
Un pregunta el paso 6 donde se supone que hay que hacerlo?? Porque no encuentro la carpeta vendor por ningún sitio la verdad.
son mis primeros pasos en linux y me está costando un poco.
crebaindamme
09/07/09, 15:02:11
Pues mira en el propio source que acabas de bajarte en los pasos anteriores... tienes que tener la carpeta vendor por ahí perdida ;) (en el raiz del source)
Un saludo.
Pues algo he debido de hacer mal en los anteriores porque no hay ninguna carpeta que se llame así. Tendré qe repetir los pasos (buf que coñazo jejejej)
He repetido los pasos y nada que no aparece la dichosa carpeta. Además cuando hago el paso tres al hacer el primer respo sync me crea muchas carpetas pero todas fuera de la ruta /tito87/cupcake. Me las pone todas en /tito87/ no se si será normal.
y en el paso de mover el local_manifest.xml lo hago con cp y me dice que no existe /tito87/cupcake/.repo/
Algo de luz por favor jejeje.
Vais a tener que tener mucha paciencia conmigo me temo.
Gracias.
crebaindamme
09/07/09, 16:55:31
A ver... la orden:
la orden "repo init -u ...." del paso 3 la debes hacer desde la carpeta donde quieres que guarde el source, esto creará una carpeta .repo, oculta (en linux todos los archivos y carpetas que empiezan por un puntos son ocultas, la puedes ver seleccionando Ver>Mostrar Archivos Ocultos en un explorador de archivos "nautilus"). Estos archivos de configuración son los que usa repo para saber qué es lo que debe descargar y cómo, en cuanto hagas "repo sync". Por tanto si ejecutas esta orden fuera de esa carpeta te copiará el source donde lo hayas inicialiciado. Como ves, cuando has hecho el el copiado del local manifest, no dispones de la carpeta ".repo" por tanto no es esa la carpeta donde has ejecutado la inicialización.
En cuanto lo descargas correctamente (y donde debe), la carpeta que buscas para el paso 6 la encontrarás en:
/<ruta de inicialización>/vendor/htc/dream/
Asegúrate de seguir los pasos correctamente.
Un saludo.
Vale he vuelto a realizar los pasos y ya tengo bien cargado todo, la carpeta vendor existe. El problema ahora es que cuando ejecuto ./extractfiles.sh (o algo así) dentro de la carpeta /vendor/HTC/dream/ me dice en varias lineas que adb no lo encuentra. Lógico creo yo porque el adb está en la carpeta tools del sdk no??
Como se hace este paso??
Gracias.
crebaindamme
13/07/09, 13:05:44
Asegurate de tener la carpeta Tools en el Path de tu sistema operativo. Basta con editar el archivo .bashrc de tu home/<usuario>, lo tienes explicado en la pagina oficial de google (http://developer.android.com/sdk/1.5_r2/installing.html), en la sección installing SDK.
Un saludo.
vale ok. Me imaginé que sería eso. Pero cuando me bajé el SDK no fui capaz de hacerlo. Voy a intentarlo otra vez.
podriamos ir posteando cosillas que encontremos en el source que puedan ser utiles a todos, que os parece? no se, ligar donde estan localizados los idiomas, como configurar el source de alguna aplicacion para hacer algo.
Yo si quereis os indico como modificar el recovery por si alguien quiere uno personalizado.
crebaindamme
13/07/09, 17:34:35
Me parece una magnífica idea Ridli!!! Tendré que retomar pues el source, jajajjajajaja. Un saludete
Me parece una magnífica idea Ridli!!! Tendré que retomar pues el source, jajajjajajaja. Un saludete
Es que con el tema del launcher que has comenado en otro sitio me ha picado la curiosidad y he visto que el source tiene cosas muy interesantes para modificar y no estaria nada mal abrir un hilo con algunas cosillas asi que veamos.
crebaindamme
14/07/09, 07:30:20
Bueno... primer aporte:
En la carpeta <donde tengamos el source>/out/host/linux-x86/bin (despues de compilar, por supuesto) tenemos una serie de herramientas que son la mar de interesantes. Una de ellas es mkyaffs2image con la que podemos compilar nuestro propio system.img para el emulador (o para flashear directamente en nuestra dream). También he encontrado otra que es make-update-script que puede ser interesante (aunque todavía no lo he usado, haré una serie de pruebas con ella a ver que tal va).
Un saludo
Wingerio
14/07/09, 11:00:25
Tengo problemas al sincronizar una vez metido en local_manifest de la dream; me ha parecido raro que en el manifest de cupcake no aparezca por ninguna parte el proyecto del kernel, no sé si podría tener relación con eso el problema.
Traceback (most recent call last):
File "/home/marino/android/cupcake/.repo/repo/main.py", line 235, in <module>
_Main(sys.argv[1:])
File "/home/marino/android/cupcake/.repo/repo/main.py", line 217, in _Main
repo._Run(argv)
File "/home/marino/android/cupcake/.repo/repo/main.py", line 123, in _Run
cmd.Execute(copts, cargs)
File "/home/marino/android/cupcake/.repo/repo/subcmds/sync.py", line 195, in Execute
all = self.GetProjects(args, missing_ok=True)
File "/home/marino/android/cupcake/.repo/repo/command.py", line 63, in GetProjects
all = self.manifest.projects
File "/home/marino/android/cupcake/.repo/repo/manifest_xml.py", line 158, in projects
self._Load()
File "/home/marino/android/cupcake/.repo/repo/manifest_xml.py", line 197, in _Load
self._ParseManifest(False)
File "/home/marino/android/cupcake/.repo/repo/manifest_xml.py", line 228, in _ParseManifest
(name)
error.ManifestParseError: project kernel/common not found
crebaindamme
14/07/09, 11:05:03
Pues si que es raro, si... aquí no te puedo solucionar el problema, en cuanto llegue a casa lo veo a ver si encontramos donde está el problema.
Wingerio
14/07/09, 11:20:56
Pues si que es raro, si... aquí no te puedo solucionar el problema, en cuanto llegue a casa lo veo a ver si encontramos donde está el problema.
He probado a meter el mismo el proyecto con el mismo kernel que lleva el local_manifest de la dream en el manifest de cupcake y entonces si sincroniza los proyectos del manifest.xml, pero los tres de la dream no hay cojones, seguiré probando cosas a ver si doy con ello.
Gracias!!
Wingerio
14/07/09, 13:48:24
Estoy lele, era simplemente quitar la línea de eliminar el proyecto del kernel en el local_manifest, me había obcecado y no me había dado cuenta de esa línea. Ahora parece que los proyectos descargan bien...
Pd.: lo que veo es que se han cargado proyecto de la dream: platform/vendor/htc/dream.git (http://android.git.kernel.org/?p=platform/vendor/htc/dream.git) y el que ahora hay es éste: platform/vendor/htc/dream-open.git
crebaindamme
14/07/09, 14:11:40
Me alegro de que lo hayas conseguido, y gracias por el apunte del proyecto.
Un saludo
Bueno... primer aporte:
En la carpeta <donde tengamos el source>/out/host/linux-x86/bin (despues de compilar, por supuesto) tenemos una serie de herramientas que son la mar de interesantes. Una de ellas es mkyaffs2image con la que podemos compilar nuestro propio system.img para el emulador (o para flashear directamente en nuestra dream). También he encontrado otra que es make-update-script que puede ser interesante (aunque todavía no lo he usado, haré una serie de pruebas con ella a ver que tal va).
Un saludo
Genial! habia usado el mkyaffs2image pero no el otro, que poco me paro a mirar las cosas ains...
bueno, dentro del directorio Kernel encontramos otro llamado scripts donde entroncamos un curiosi script llamado extract-ikconfig
/<ruta>/kernel/scripts/extract-ikconfig
con el que podemos sacar el .config de cualquier kernel :D
extract-ikconfig <kernel> > .config
Edito: he modificado una cosa del manual, me he dado cuenta de que algunas veces falla una libreria al compilar, libOmxCore.so, si se extrae directamente del telefono no pasa nada y se compila correctamente.
crebaindamme
14/07/09, 18:09:11
Genial... a ver si poco a poco descubrimos todo lo que nos esconde el source!!!!
crebaindamme
20/07/09, 15:01:23
Bueno... como bien ha dicho Wingerio, hay que cambiar un poco el local-manifest
Antes
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="kernel/common"/>
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-htc-$
<project path="vendor/htc/dream" name="platform/vendor/htc/dream"/>
<project path="hardware/msm7k" name="platform/hardware/msm7k"/>
</manifest>
Despues
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remove-project name="kernel/common"/>
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-htc-$
<project path="vendor/htc/dream" name="platform/vendor/htc/dream-open"/>
<project path="hardware/msm7k" name="platform/hardware/msm7k"/>
</manifest>
Se puede cambiar la revisión para el kernel del msm y algunas cosas más...
http://android.git.kernel.org/?p=platform/vendor/htc/dream-open.git
podéis encontrar más información en http://android.git.kernel.org buscando por el apartado "name" que hay en cada elemento el manifest.
Un saludo.
Morpheo17
28/07/09, 15:37:09
Muy interesante el hilo, pero que muy interesante.
Yo también me quiero meter en el tema de compilar android que ya cojo vacaciones XD.
Una pregunta, al compilar el source también compila el código java? o eso está precompilado?. Es que me gustaría mucho tocar la parte java, ya que me interesa tocar el launcher (quiero ponerle 2 escritorios más xD) y alguna chorradita de Settings. El tema es que ambas aplicaciones (Launcher.apk y Settings.apk) no compilan con el SDK oficial (confirmado por Google) por lo que tengo la duda de como se puede compilar o tocar, porque a lo mejor es código cerrado y no se puede modificar nada....
crebaindamme
29/07/09, 13:37:00
Si puedes tocar en esas aplicaciones sin ningun prob lema (yo ya lo he hecho), en cuanto te vajas el source aparecen las carpetas con los archivos .java correspondientes. En cuanto haces "make" se compila todo el codigo (incluyendo, claro esta las aplicaciones java), o bien puedes hacer "make <nombre aplicacion>" para compilar solo la q te interese.
1 saludo
Vaya par de cracks!! Esto es justo lo que andaba buscando
Gracias Ridli y Crebaindamme!
Pregunta rápida... a partir de ahora esto no valdra "para nada" no? ya que se supone que habrá que utilizar todo de la rama donut no?
Que cambias habrá que hacer en el tuto de ridli para que funcione todo a donut?
crebaindamme
12/10/09, 21:16:44
Pues básicamente cambiar la rama o "branch" en la descarga, es decir, en lugar de cupcake habrá que poner donut... el resto debería ser practicamente igual, pero la mejor forma de saberlo es probar y probar jejejej.
Un saludo
He probado, pero cuando baje el fichero xml que se pide, ya me daba errores, y lo dejé ahi.
crebaindamme
14/10/09, 15:49:21
Hola yeahhh,
Para mi me fué muy útil esta página (http://www.johandekoning.nl/index.php/2009/10/03/building-donut-for-dream-proprietary-files-difference/). En ella puedes encontrar como compilar desde cero paso a paso. Te explica claramente lo que hace en cada punto, y para aprender me parece de las mejores.
El link que te paso en cuestión, marca las diferencias en las librerias entre la donut y la cupcake. Si navegas por ella podrás encontrar el paso uno sin problemas.
Un saludo
Gran post, yo no tengo Magic pero tengo una Kaiser corriendo OpenEclair y esto me viene de vicio para lo que quiero hacer!!!
Lo dejo bajando y mañana me pongo a ello, muchas gracias!! :D
c.martinez.lozano
26/06/10, 21:15:17
Buenas, estoy cocinando froyo para el orange boston y he visto que hacian falta los paquetes lib32readline5 y lib32readline5-dev para la arquitectura x64. Uso Ubuntu.
Sin estos paquetes no es posible compilar sqlite3.
Un saludo.
metamorph
27/06/10, 02:27:02
Me ha gustado mucho el post, muchísimas gracias al autor y a todos los que han colaborado respondiendo dudas :ok:
Supongo que con la llegada de Eclair y Froyo habrán cambiado algunas cosas pero igualmente me parece un buen punto de partida. Voy a intentarlo tanto desde MacOS X como desde linux (Ubuntu), ya compartiré experiencias :-)
gerard_f
19/07/10, 17:58:10
Al intentar descargar el source de cyanogenmod por ejemplo me da el siguiente error:
root@gerard-desktop:~/froyo-build# repo init -u git://github.com/CyanogenMod/android.git -b froyo
Traceback (most recent call last):
File "/root/bin/repo", line 595, in <module>
main(sys.argv[1:])
File "/root/bin/repo", line 562, in main
_Init(args)
File "/root/bin/repo", line 181, in _Init
_CheckGitVersion()
File "/root/bin/repo", line 210, in _CheckGitVersion
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
File "/usr/lib/python2.6/subprocess.py", line 633, in __init__
errread, errwrite)
File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Alguien sabe cual es el problema? uso ubuntu 10.04
Gracias
tomyyol
17/08/10, 10:02:21
He desarrollado un blog con unas guías para construir ROMs a partir de los fuentes y poderlas probar con el emulador. Os pongo el enlace por si a alguien le interesa.
http://androidsis.blogspot.com
linux4ever
26/12/10, 17:32:17
Buenas a todos,
Quiero compilar una rom con mi kernel desde el source, hasta ahí sin problemas.
Lo malo es que no se pueden probar en el emulador. He leído que para que un kernel pueda ser emulado ha de ser un goldfish, y por mis pruebas, los dos goldfish que he compilado han arrancado sin problema.
Entonces .... Para probar las roms que compile ¿lo debo hacer desde el terminal?
Gracias
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.