|
||
|
![]() |
![]() |
ROMs y desarrollo Samsung Galaxy Nexus ROMs y desarrollo Samsung Galaxy Nexus |
![]() |
|
Herramientas |
#1
|
||||
|
||||
¡Hell's Kitchen! Manual del cocinitas. Teoria, Tutoriales, How-To's y más... **En desarrolo** Actualizado 20/07/12
![]() Bueno pues me decido a hacer un mega tutorial/curso de creación de roms para nuestros cacharros, y para que todos los que tengais/tengamos inquietudes tengamos un hilo de soporte y de guia para algunas cosas. El texto aún esta desarrollandose asi que de momento no hay gran cosa pero espero poder abarcar todos los aspectos desde la teoria inicial hasta la compilación AOSP pasando por la edición de código smali y algunos ejemplos. De momento empezamos con los puntos básicos. Índice 1.- Introducción a la cocina 1.1.- Tipos de rom 1.2.- Organización de archivos en una rom formato update.zip 2.- Decompilación y compilación de apk's 2.1.- Deodexar/Odexar 2.2.- Apktool decompilado de apk's 3.- Creación de nuestra primera rom 3.1 dsixda kitchen 4.- Ejemplos de mods 4.1 Añadir 4way reboot 4.2 Multitarea horizontal tipo wp7 4.3 Centra el reloj 5.- Compilación de Android desde código fuente (AOSP)
__________________
Su publicidad aquí por solo 3.99€ al mes
Última edición por raulgm Día 18/04/12 a las 23:59:12. |
Los siguientes 31 usuarios han agradecido a raulgm su comentario: | ||
|
#2
|
||||
|
||||
1.- Introducción a la cocina
Cocinar una rom no es más que crear una rom a tu gusto, con cambios, modificaciones y personalizaciones varias. La gracia de esto es poder añadir funcionalidades que echemos en falta a nuestras roms. Por tanto los que creamos roms modificadas a nuestro gusto se nos denomina comunmente cocineros (algunos hasta tienen rango... :-P ). Los cocineros avanzados y con conocimientos en java pueden incluso desarrollar hasta sus propias partes de código para añadirlo al ya existente en la rom, este tipo de cocineros son también denominados desarrolladores. Un cocinero puede no tener ni papa de desarrollo (aunque acabas aprendiendo...) y un desarrollador puede no tener ni idea de cocinar una rom, aunque tampoco es lo habitual 1.1.- Tipos de rom La división de las roms es bastante clara hay 2 tipos las que he hecho yo, y el resto... ![]() Después de este chiste inicial para rebajar tensiones, nos ponemos serios, las 2 divisiones básicas que hay para identificar una rom, son las que parten de la rom stock para un terminal, y las que parten del AOSP (Android open source project). Stock -> Rom oficial que ofrece un fabricante para su terminal. Ejemplos para el Gnexus -> rAv (Si, es la mia si no la has probado ya tardas... ![]() Aosp -> Android, es un sistema operativo de código abierto y cada uno puede compilarlo para su terminal si sabe como, para esto existe el AOSP que es ni más ni menos que el nombre que recibe el proyecto que se encarga de gestionar este "open source" y donde google comparte el código fuente de android para que otros desarrolladores lo usen a su antojo Ejemplos para el Gnexus -> Aokp, Miui, Cyanogenmod, FoxHound, SuperOsr, etc... 1.2 Organización de archivos en una rom formato update.zip Para empezar hemos de conocer como están distribuidos los archivos en el terminal. · Las aplicaciones y archivos de sistema estan en /system · Los apks del sistema estan en /system/app · El framework está en /system/framework · Las aplicaciones del usuario estan en data/app ... Estas son las más importantes, pero hay más, (falta desarrollar...) Ahora, un archivo update.zip se compone de minimo 2 carpetas y un archivo · La carpeta que siempre ha de haber es la META-INF que contiene los scripts de instalación de la rom. El más importante el updater-script que es la guia de todo el proceso de instalación · La carpeta SYSTEM donde se incluyen los apk y liberias de la rom · Un archivo boot.img que entre otras cosas incluye el kernel de la rom Adicionalmente la rom puede contener una carpeta DATA donde se incluiran los apk que se vayan a instalar en la rom o una carpeta SDCARD si queremos enviar alguna archivo a la memoria interna y/o SD
__________________
Su publicidad aquí por solo 3.99€ al mes
Última edición por raulgm Día 19/04/12 a las 00:00:44. |
Los siguientes 17 usuarios han agradecido a raulgm su comentario: | ||
#3
|
||||
|
||||
2.- Decompilación y compilación de apk's
Compilar en ámbito informático es obtener el objeto ejecutable del código fuente tecleado en el proceso de desarrollo, por tanto al proceso de reingenieria que partiendo de un archivo apk obtiene como resultado el código fuente del apk lo llamamos decompilar. El código fuente de android está escrito en un lenguaje prácticamente idéntico a java, teniendo en archivos classes.dex el objeto ejecutable de un apk. De este archivo .dex no podemos obtener los archivos .java pero el desarrollador jesusfreke creo una herramienta llamada smali/Baksmali que lo que permite es ensamblar/desensamblar (smali/baksmali es la traducción de ensamblar/desensamblar del islandés), ya que el resultado obtenido es una especie de lenguaje ensamblador, un apk. Si quereis indagar más -> http://code.google.com/p/smali Además debeis saber que el código smali esta basado en el código jasmin -> http://jasmin.sourceforge.net/guide.html Por tanto el proceso que hacemos para obtener el código de un apk no es realmente decompilar aunque comunmente todo el mundo lo denomine así. Bien pues después de este desarrollo, otro desarrollador en este caso Brut.All construyó una herramienta llamada apktool que lo que hacia era automatizar los proceso de ensamblaje/desensamblaje (a partir de ahora compilado/decompilado) de un apk y que no solo permitia obtener el código fuente de un apk (smali) sino que también es capaz de obtener las imagenes y los recursos. 2.1 Deodexar/Odexar Antes era un proceso complejo, ahora es más sencillo, solo os voy a decir eso a modo de introducción. Deodexar, es el hecho de incluir el fichero classes.dex dentro del apk. Originalmente las apks del sistema de las roms son odexados, es decir tienen el fichero apk, y ademas tienen un fichero con mismo nombre y extensión .odex que es el que contienen el classes.dex (y por tanto el código fuente) pues bien, la mayoria de customs roms y de cara a obtener la mayor posibilidad de personalización son deodexadas, es decir que incluyen en un único archivo todo. Porque digo la mayor posibilidad de personalización? pues simple, el apktool decompila el apk completo. Por tanto de un tirón has decompilado la parte de imagenes, recursos y además el código fuente. Más información: http://code.google.com/p/smali/wiki/DeodexInstructions En el capítulo 4 veremos los sencillo que realizar deodexaciones con la cocina de dsixda, pero a partir de ahora daremos por sentado que todo lo que se explica es sobre una rom DEODEXADA 2.2 Apktool Como os he dicho antes, esta es una herramienta para el decompilado de apk, y su sintaxis es la siguiente: java -jar apktool.jar <opcion> <archivo> Donde las posibles opciones son muchas pero destacaré 3: * if -> carga los recursos del archivo especificado * d -> decompila el archivo especificado * b -> compila (contstruye, build) la carpeta especificada En el apktool casí siempre encontrareis un apktool.bat para agilizar las llamadas y que funcione únicamente escribiendo, por ejemplo: Apktool if framework-res.apk Pero un momento! No os apresureis a descargarla de su pagina oficial en google code, pues os voy a ofrecer una solución más simple aún. A partir de apktool han ido apareciendo otras herramientas creando entornos algo más agrables que tener que teclear comandos desde la ventana ms-dos (Aunque para algunos casos veremos que seguirá siendo necesario) una de ellas es Apk Manager. El problema desde la aparición de ICS es que no han hecho más que petar las herramientas de decompilación/compilación debido a cambios realizados en las classes por Google. Además Samsung ha modificado unos valores en sus binarios que tampoco permitian la decompilación correcta de los archivos, y desde entonces han ido apareciendo versiones más nuevas de apktool que decompilaban bien pero compilaban mal, y viceversa. Han existido mil tutos de cómo compilar y decompilar en ICS pero el compañero wanam en xda se ha currado un Apk manager con los archivos apktool.jar y aapt.exe parcheados para poder compilar y decompilar correctamente, así además nos podremos beneficiar a la hora de trabajar con el apk en un entorno más agradable (desde ms-dos, pero más agradable) Lo podeis bajar de aquí Bien, como funciona? Pues simplemente descomprimir, y poner en la carpeta place-apk-here-for-modding el apk que querais decompilar (ojo las dependencias y recursos) yo por si acaso pondria también siempre en esta carpeta el framework-res.apk de la rom que esteis usando ya que en caso necesario él solo coge sus dependencias ![]() Pues nada esto es tan simple como pulsar opción 9 + intro, al cabo de unos segundos tendreis dentro de la carpeta Apk_Manager_ICS/projects una carpeta con el nombre de vuestro apk decompilado ![]() Ahora ya podeis editar a vuestro antojo los xml’s, imágenes y smali que querais. Una vez finalizado ya podeis compilar (opción 11 + intro). Tened en cuenta cuando editeis apk del sistema que hay que intentar mantener las firmas originales de los apks, pero no os preocupeis, el propio apk manager en el momento de la compilación os preguntará si es una aplicación del sistema (de las que van a /system) ![]() En caso que respondais que si, os preguntará que si para mantener las firmas originales y preveer errores quereis copiar todos los archivos originales que no hayais modificado en el archivo apk resultante, en este caso también teneis que responder que si, lo que provocará que apk manager extraiga todas las imágenes y xml del apk original en la carpeta keep. ![]() Una vez hecho esto el apk manager os dirá que borreis los archivos que hayais modificado de la carpeta keep y que además si habeis tocado codigo xml o smali, elimineis también el resources.arsc ![]() Una vez echo esto obtendréis en la carpeta place-apk-for-modding un archivo con el mismo nombre que el que estabais editando pero con el prefijo unsigned, ya podeis coger el apk, llevarlo a otro sitio para renombrarlo, eliminar el unsigned y pasarlo al teléfono, ahora dependerá de vuestras modificaciones que este funcione o no ![]() Esto es lo que concierne al decompilado de apks, ahora vamos con el decompilado de jar ... en desarrollo ....
__________________
Su publicidad aquí por solo 3.99€ al mes
Última edición por raulgm Día 18/04/12 a las 23:58:22. |
Los siguientes 19 usuarios han agradecido a raulgm su comentario: | ||
#4
|
||||
|
||||
__________________
Su publicidad aquí por solo 3.99€ al mes
Última edición por raulgm Día 20/07/12 a las 12:38:18. |
Los siguientes 17 usuarios han agradecido a raulgm su comentario: | ||
#5
|
||||
|
||||
4.- Ejemplos de mods
4.1 Añadir 4way reboot 4.2 Multitarea horizontal tipo wp7 4.3 Centrar el reloj de la barra de tareas
__________________
Su publicidad aquí por solo 3.99€ al mes
|
Los siguientes 15 usuarios han agradecido a raulgm su comentario: | ||
#6
|
||||
|
||||
5.- Compilación de Android desde código fuente (AOSP)
__________________
Su publicidad aquí por solo 3.99€ al mes
|
Los siguientes 13 usuarios han agradecido a raulgm su comentario: | ||
#7
|
||||
|
||||
De aquí para abajo es vuestro, si teneis dudas que quereis resolver o alguna propuesta de tema a tratar podeis hacerlas como os digo el hilo está en desarrollo así que poco a poco iré añadiendo cosas
Saludos
__________________
Su publicidad aquí por solo 3.99€ al mes
Última edición por raulgm Día 18/04/12 a las 00:13:27. |
Los siguientes 15 usuarios han agradecido a raulgm su comentario: | ||
#9
|
||||
|
||||
Pues si enorme idea la tuya, porque dices que los smali son nuestros enemigos???, con la de cosas que se retocan ahi, jejejejejeje.
Yo estoy encabezonado en que salga la imagen del contacto a tamaño completo o por lo menos a un tamaño bueno pero que se vea toda la foto no solo la parte de arriba, me refiero cuando recibimos la llamada, estoy bastante pesado con el tema, pero es que me toca la moral, jejejejeje, no se porque lo han hecho asi los cerebritos de Google, porque queda como el culo que podamos ponerle unas imagenes de calidad y que no podamos verlas enteras Muchas gracias |
#10
|
||||
|
||||
Esto de hacerte tu propia rom es un sueño, quien sabe si algún ida.......gracias por tu trabajo
|
#12
|
||||
|
||||
muchas gracias por estos manuales!!
__________________
LG G3
| Simple. Beautiful. Beyond Smart. | |
#14
|
||||
|
||||
Entonces si descomprimo el zip de una rom y meto el apk de titanium backup en la carpeta data y vuelvo a comprimir todo de nuevo, se deberia instalar titanium backup con la instalación de la rom ¿verdad?
Es que al abrir el market tras instalar la rom, me empieza a descargar todo lo que anteriormente tenia, antes de dejarme instalar el titanium y es un coñazo. |
#15
|
||||
|
||||
Entonces si descomprimo el zip de una rom y meto el apk de titanium backup en la carpeta data y vuelvo a comprimir todo de nuevo, se deberia instalar titanium backup con la instalación de la rom ¿verdad?
Es que al abrir el market tras instalar la rom, me empieza a descargar todo lo que anteriormente tenia, antes de dejarme instalar el titanium y es un coñazo. ![]() El updater-script no es más que un script que gestiona toda la instalación de la rom en las particiones de la memoria, os hablaré de él en el capitulo 3 Si la rom ya contiene una carpeta data, solo abriendo el zip con el 7zip y arrastrando el apk a la carpeta /data del zip ya te deberia funcionar Saludos
__________________
Su publicidad aquí por solo 3.99€ al mes
Última edición por raulgm Día 18/04/12 a las 09:24:18. |
#16
|
||||
|
||||
Entonces si descomprimo el zip de una rom y meto el apk de titanium backup en la carpeta data y vuelvo a comprimir todo de nuevo, se deberia instalar titanium backup con la instalación de la rom ¿verdad?
Es que al abrir el market tras instalar la rom, me empieza a descargar todo lo que anteriormente tenia, antes de dejarme instalar el titanium y es un coñazo. ![]() |
#19
|
||||
|
||||
el código se publica en los repositorios de google, luego los desarrolladores copian y pegan a piñon el código en sus propios repositorios hacen sus modificaciones (kang) y lo vuelven a lanzar Pero esto lo veremos en el capitulo 5 Saludos
__________________
Su publicidad aquí por solo 3.99€ al mes
|
Gracias de parte de: | ||
|
![]() |
![]() |
||||||
|