Ver Mensaje Individual
  #1  
Viejo 29/06/12, 02:23:45
Array

[xs_avatar]
oamo oamo no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Mensajes: 440
Modelo de smartphone: Moto X2 / Moto Z2 Play
Tu operador: AT&T MX
[Tutorial] Como portar ROMS basadas en Stock, GB, CM7, CM9 + ROM PORTADA POR MI

Si quieren ver la rom que porte esta en la actualizacion 4, la rom original es esta
NOTA: LEER TODO EL TUTORIAL Y PREGUNTAR POR CUALQUIER DUDA ANTES DE COMENZAR A EDITAR ARCHIVOS

Hola, primero quiero aclarar que esto solo es una traduccion de este post de xda

http://forum.xda-developers.com/show....php?t=1598713

Y es que, hay muchas roms muy bonitas (a mi parecer) que me gustaria probar en nuestro pequeño

Pero bueno, basta de spam (por muy bonito que sea u.u) y comenzemos


Agradecimientos

*Peteragent5 Por crear el tutorial y aclararme unas dudas
*Un desconocido que posee un xperia x10 mini por ayudarme a traducir unas cosas
*Liberian Geek por su tutorial para ser root en ubuntu
*Chujat por su tutorial para recompilar el boot.img
*A DQiB por guiarme para el cambio de resolución



 Cita:
Que necesitaras:
Notepad++
WINRAR (O algun software similar)
Una computadora (Windows, Linux, o Mac)
Sentido comun
Tener nociones del manejo de la terminal de ubuntu
*VMWare Player (Workstation tambien funciona pero es mas pesado y requiere serial)
*El punto anterior solo en caso de no tener ubuntu ya en otra partición
*Si tienes ubuntu instalado, tener acceso a la cuenta root (en caso de no serlo, mandar MP preguntando o leer tutorial de Liberian Geek )
*Si no tienes ubuntu en otra particion, descargar el preinstalado para VMWare Player de aqui
*La version preinstalada de ubuntu incluye todo preconfigurado y listo para utilizar la consola y ahorrar tiempo (ver actualización 3 al final)
-Tamaño comprimido 1.47 GB
-Tamaño descomprimido 4.66 GB
*A quieres pregunten "Para que pones ubuntu" les respondo, lo pongo por que sera necesario para recompilar el kernel cosa que si no tiene tu rom no boteara.



 Cita:
Me referire a la rom que estas portando como "PORTED"
y a tu CM7/GB/Stock ROM como "BASE"
NOTAS:

*Debes saber si tu dispositivo es Armv7, Armv6, or Armv5. Tu Base y Ported deben tener el mismo procesador.
Puedes mirar dispositivos compatibles aqui, en el caso de los pequeños son ARMV6
*Si la rom BASE tiene problemas, entonces la rom PORTED tendra los mismos problemas.
*Debes tener lista la carpeta META-INF en BASE (si utilizamos una CM7 por ejemplo esta ya esta lista)


 Cita:
Primero vamos a /system/app en BASE y hacemos respaldo de lo siguiente:
stk.apk
vpnservices.apk
camera.apk
bluetooth.apk

Lo realizamos en la carpeta que tu elijas (Puede ser en el escritorio)
Quote:
Eliminamos las siguientes carpetas de la rom BASE y las remplazamos por las de PORTED

/system/app
/system/framework
/system/fonts
/system/media


Copiamos la lib libandroid_runtime.so de PORTED a BASE en /system/lib
Sin esto la ROM no boteara.
Copiamos el respaldo de apps a BASE en /system/app
 Cita:
A continuación copiamos todas las librerías y carpetas que están en system/lib de BASE y las pegamos en system/lib de PORTED. Decimos que remplace todo al momento de copiar, en esta ocasión NO BORRAMOS NADA de PORTED solo remplazamos. De BASE borramos la carpeta lib y movemos la carpeta lib de PORTED a BASE.

Vamos a la carpeta etc (/system/etc) de BASE y abrimos la carpeta init.d
Copiamos todo y lo pegamos en /system/etc/init.d de PORTED
De BASE, borramos la carpeta init.d
y de PORTED, copiamos la carpeta init.d a /system/etc BASE



--------Tomemos un descanso para los ojos aqui-----------

Offtopic, cual ha sido el videojuego que recuerdan con mas cariño de su infancia? XD
Bueno, no estan obligados a responder, sigamos…

-------- Tomemos un descanso para los ojos aqui -----------


 Cita:
¿Listos? OK. Vamos a la carpeta etc (/system/etc) de BASE y abrimos la carpeta permissions
Copiamos todo y lo pegamos en /system/etc/permissions de PORTED
En BASE, borramos la carpeta permissions
Y de PORTED, copiamos la carpeta permissions a /system/etc de BASE
(Esto es para corregir algunos problemas de permisos para las google apps)

Abrimos Notepad++ y abrimos build.prop de PORTED (/system)
Tambien abrimos build.prop de BASE, Editamos build.prop de PORTED, para que sea compatible con tu dispositivo.
 Cita:

ESTO ES MUY IMPORTANTE!

ro.build.description=
y
ro.build.fingerprint=

deben ser los mismos de build.prop de BASE!

Si no, la ROM no boteara!

Despues de hacer los cambios, salvamos el Build.prop de PORTED y cerramos NotePad++
Copiamos Build.prop de PORTED a BASE

 Cita:
En BASE, vamos a:
\META-INF\com\google\android
Abrimos de nuevo notepad++ y abrimos updater-script

De PORTED, vamos a:
\META-INF\com\google\android
y abrimos updater-script con notepad++

Debes tener 2 “updater-scripts” en las pestañas de notepad++
Editamos updater-script de BASE para que sea como updater-script de PORTED's
 Cita:

NO debes cambiar ningún symlinks

Solo cambiaras, editaras y/o añadiras “permissions (set_perm) , ui_prints , asserts , run_programs , e instalación de Kernel”
-----ESTO TAMBIÉN ES MUY IMPORTANTE!------
En el updater-script de BASE, ¡asegúrate de que el formato de valores sean para tu dispositivo!
-----ESTO TAMBIÉN ES MUY IMPORTANTE!------


Debemos asegurarnos de que el kernel es especifico para nuestro dispositivo.
 Cita:

(Ver actualización 1 y 2 al final)
 Cita:
La Rom final es BASE


Bien ahi termina, poco a poco ire anexando imagenes para que quede mejor explicado o en su defecto si alguien gusta donar las imagenes seran bienvenidas

TODO LO QUE HAGAS ES BAJO TU RESPONSABILIDAD

DEBIDO A QUE ES TU PORT, TU TE ENCARGARAS DE FIXEAR EN CASO DE BUG'S NO UTILIZES ESTE TEMA PARA PREGUNTAR COMO CORREGIRLO

NO LLENEMOS EL FORO CON PORT'S MAL HECHAS

NADA ES VERDAD TODO ESTA PERMITIDO


(favor de ignorar el ultimo )

NOTA: Aun tengo duda sobre el boot.img ya que mientras lo leia y traducia iba comprobando algunas carpetas, apertura de archivos, busqueda de lineas (con una rom del ACE) y todo lo iba encontrando, sin embargo lo unico que nunca pude hacer fue la parte final del init.rc almenos desde windows, aunque me parece que es mas facil hacerlo desde linux, (Ver actualización 1 y 2 al final)

NOTA2: Tengan en cuenta las dimensiones de nuestra pantalla asi que, por ejemplo si van a basarse en una rom de ACE, recuerden redimensionar la rom, para eso, ver actualizacion 5

NOTA3: Consejo en caso de problemas con el dialer ver actualizacion 6

Dudas, quejas, sugerencias, aportes, mentadas de madre, seran bienvenidas ^^

Y bien, es todo, saludos y suerte en sus ports




Actualizaciones

-----------------------------------------------------------
1)

Efectivamente a lo que kernel se refiere tiene que ver con boot.img

 Cita:
"Hmmmm. Lets see... The kernel is either the boot.img, zImage, or kernel.sin
Find a tool to unpack those. Once unpacked you can look for the file called: init.rc
Find a line called: BOOTCLASSPATH
Replace this with your PORTED's BOOTCLASSPATH
Repack the kernel.
And there! You're good to go! But you still need to do some more if you want to port from another manufacturer.
But nothing more has to be done to the kernel.
Just use your own Device's kernel and replace the BOOTCLASSPATH from the ROM you're porting's kernel. (The init.rc)"
Esas son palabras de Peteragent5, que traducido seria...

 Cita:
"Hmmmm. Veamos... El kernel is boot.img, zImage, o kernel.sin
Encuentra una herramienta para desempacar. Una vez desempacado encuentra un archivo llamado: init.rc
Encuentra la linea llamada: BOOTCLASSPATH
Remplaza esta linea por la linea BOOTCLASSPATH de PORTED
Re-empaca el kernel.
Solo utiliza tu kernel y remplaza la linea BOOTCLASSPATH del kernel de la rom PORTED. (The init.rc)"
Algo asi dice

-----------------------------------------------------------

2)

Guía de recompilacion de kernel en ubuntu preinstalado

*Algo magnifico de VMware es que te permite arrastrar y soltar archivos de ubuntu a windows y de windows a ubuntu directamente como si se trataran de un par de carpetas y no de sistemas operativos diferentes, en algunos casos si tratan de copiar de windows a ubuntu les puede marcar que no se ha podido, simplemente le dan a reintentar las veces que sean necesarias


Parte 1

-Vamos a la carpeta "Descargas\bt" y copiamos el boot.img de PORTED
-En el terminal que teniamos abierto escribimos "cd Descargas" sin comillas
-Ahora escribimos "cd bt" sin comillas
-A continuacion "mkdir -p unpack" sin comillas
-Ahora "tools/unpackbootimg -i boot.img -o unpack" sin comillas
-"mkdir -p unpack/boot.img-ramdisk" sin comillas
-"cd unpack/boot.img-ramdisk" sin comillas
-"gzip -dc ../boot.img-ramdisk.gz | cpio -i" sin comillas
-"cd ../../" sin comillas
-Se nos habrá creado una carpeta llamada unpack. Dentro de ella hay una carpeta llamada boot.img-ramdisk (dentro están los archivos del boot.img para modificar lo que queramos) también hay un archivo llamado boot.img.zImage, éste es el Kernel. Los demás archivos no se tocan.
-Ahora desde nautilus (el explorador de archivos) vamos a unpack > boot.img-ramdisk una vez situados ahi buscamos "init.rc"
-Le damos clic con boton derecho del mouse > propiedades > (pestaña) permisos > y en las tres opciones seleccionamos "Lectura y escritura" ademas de check "Permitir ejecutar el archivo como programa"
-Boton cerrar
-Le damos doble click ahora a "init.rc"
-En la ventana que aparezca le damos a "Mostrar"
-Buscamos la linea "BOOTCLASSPATH " que en mi caso es
(Click para mostrar/ocultar)

"BOOTCLASSPATH /system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar"


Asi de larga, nos daremos cuenta que antes de bootclasspath dice "export" no es necesario copiar esa parte

-Copiamos la linea en un papel, un txt, la mano, el brazo, o lo que quieran pero que este segura
-Cerramos el editor de texto
-vamos a la carpeta "bt" de nuevo desde nautilus y eliminamos el boot.img y la carpeta "unpack"


Parte 2

-Vamos a la carpeta "Descargas\bt" y copiamos el boot.img de BASE
-Abrimos una terminal y escribimos "cd Descargas" sin comillas
-Ahora escribimos "cd bt" sin comillas
-A continuacion "mkdir -p unpack" sin comillas
-Ahora "tools/unpackbootimg -i boot.img -o unpack" sin comillas
-"mkdir -p unpack/boot.img-ramdisk" sin comillas
-"cd unpack/boot.img-ramdisk" sin comillas
-"gzip -dc ../boot.img-ramdisk.gz | cpio -i" sin comillas
-"cd ../../" sin comillas
-Se nos habrá creado una carpeta llamada unpack. Dentro de ella hay una carpeta llamada boot.img-ramdisk (dentro están los archivos del boot.img para modificar lo que queramos) también hay un archivo llamado boot.img.zImage, éste es el Kernel. Los demás archivos no se tocan.
-Ahora desde nautilus (el explorador de archivos) vamos a unpack > boot.img-ramdisk una vez situados ahi buscamos "init.rc"
-Le damos clic con boton derecho del mouse > propiedades > (pestaña) permisos > y en las tres opciones seleccionamos "Lectura y escritura" ademas de check "Permitir ejecutar el archivo como programa"
-Boton cerrar
-Le damos doble click ahora a "init.rc"
-En la ventana que aparezca le damos a "Mostrar"
-Buscamos la linea "BOOTCLASSPATH " y ponemos lo que copiamos anteriormente, respetando la palabra "export"

Parte 3

-Una vez hecho las modificaciones escribimos en el terminal "tools/mkbootfs unpack/boot.img-ramdisk | gzip > unpack/boot.img-ramdisk.gz" sin comillas
-tools/mkbootimg --kernel unpack/boot.img-zImage --ramdisk unpack/boot.img-ramdisk.gz -o boot.img-repack --base `cat unpack/boot.img-base` (esta vez no puse comillas respeten los " ` "
-Dentro de la carpeta bt tendremos ahora un archivo llamado "boot.img-repack" ese es nuestro boot.img modificado, se elimina boot.img y le cambiamos el nombre a boot.img-repack por solo boot.img


-----------------------------------------------------------

3)

Instalación de ubuntu preinstalado en VMware Player

- Descargamos ubuntu y descomprimimos
- Abrimos VMware Player
- Le damos click en "Open Virtual Machine"
- De la carpeta descomprimida la abrimos y buscamos "Ubuntu" tiene un icono de 3 cuadrados sobrepuestos azules
- Le damos en abrir
- Esta configurado para trabajar con 1 nucleo y 1 Gb de ram
- Damos click en "Run Virtual Machine"
- Saltara un mensaje le damos clic a "I copied it"
- Saltara otro mensaje, le damos a "Yes"
- Comenzara a arrancar
- Si nuestra pc tiene pocos recursos graficos damos clic en el pequeño logo que esta arriba de Iniciar sesion y seleccionamos Ubuntu 2D
- Nos pedira usuario escribimos "root" (minusculas) y de contraseña "1111" sin comillas


(Ver actualización 2)

-----------------------------------------------------------

4)

Aqui un ejemplo de la rom S perience portada por mi, en un estado beta quiza rc

http://www.htcmania.com/showthread.php?t=409797

-----------------------------------------------------------

5)

Despues de pelearme con la resolucion de nuestro mini, me puse a investigar y de parte de DQiB recibi estas palabras...

"look in build.prop and change all 160 to 120 and it would be fine"


O sea, que para redimensionar debemos abrir el build.prop y adaptarlo a nuestro telefono, para eso buscamos la linea

ro.sf.lcd_density=

y el numero que haya ahi, lo cambiamos por 120 en el caso del galaxy mini y todo celular que cuente con resolucion de 320x240

-----------------------------------------------------------

6)

Personalmente, al momento de redimensionar la rom tuve el problema de que el dialer me daba fc, lo que hice fue que de la rom original, en mi caso chocobread, tome de "system\app" los apps de "DialerTabActivity" y "Phone", y los deje en una carpeta X, despues flashee, o sea, compile la rom con error. Despues tome las apps y volvi a recompilarla corregida, y sobre el primer flasheo (con error) volvi a flashearla corregida esta vez sin wipes. De ahi surgio mi fix, y el por que no deben wipear cuando aplican el fix
-----------------------------------------------------------

7)

Pre-rootear

facil

de su base original, copian la carpeta

xbin que esta en system y la pegan en BASE

de app de su base original copian superuser (system\app)
y lo pegan en system\app de su BASE


-----------------------------------------------------------



8) Extraer KDZ (Stock's LG)

Necesitan varias cosas:
Firmware Original LG (Archivo KDZ ejemplo: v10F.v10A,etc.)
LG Utils 0.4.2 (Para descomprimir el KDZ)
DzDecryptor v1.0b (Para descomprimir un archivo que sale del KDZ)
Cygwin (Una consola de linux para windows, como el cmd)
Unyaffsmbn (Parte del cygwin)


1. Creen una carpeta en su escritorio o en sus documentos y metan todo en eso para mas comodidad

2. En primer lugar tenemos que conseguir el archivo dz de la kdz (firmware original), extraimos de LG Utils 0.4.2 y ejecutamos KP500-Utils EN.exe (Es necesario ejecutar como administrador) , seleccione la opción I (Extraer archivos desde un archivo KDZ), y escriba la ruta a su archivo kdz (El mío es C: \ Users \ Patricio \ romcooking \ V10A_00.kdz).. Ahora, usted debe tener un archivo V10A_00.cab (u otro nombre, depende de la rom que ha descargado), abrirlo con winrar o similar y extraer el archivo "LGP500AT-00-V10a-EUR-XX-SEP- 25 a 2.010 0. dz "o similar a nuestra carpeta romcooking.
3.A continuación, vamos a descomprimir el dz con DZDecrypt (deben iniciar cmd con privilegios de administrador apretamos la tecla de windows + r y colocan cmd y llegan a donde se encuentra el archivo con el comando cd

Ejemplo

cd C:\Users\Patricio\romcooking\DZDecrypter_v0.2

despues entonces escribiriamos:

DZDecrypt.exe "C:\Users\Patricio\romcooking\AQUI VA EL NOMBRE QUE DESCOMPRIMISTE EN EL PASO 2.dz" C:\Users\Patricio\romcooking\stockrom

3.Esto va a crear una carpeta "stockrom" nuestra carpeta romcooking original, usted va a ver una gran cantidad de archivos en la carpeta stockrom, los más importantes son boot.img y system.mbn

En caso de que nos aparezcan 3 archivos (o mas) con nombre similar a lo siguiente

system.mbn_0 , system.mbn_1 y system.mbn_2

Vamos a la carpeta donde estan esos archivos (en el cmd de windows) y ponemos copy /b system.mbn_0 + system.mbn_1 + system.mbn_2 system.mbn anexamos los que sean necesarios en caso de que haya mas o quitamos si hay menos
De esta forma se generara un unico system.mbn


4.Tenemos que instalar cygwin, abra el archivo setup.exe, solo aprete next hasta que esté en la pantalla de selección de paquetes

a.En "Devel" seleccionar instalar gcc, y gdb
b.En "Interpreters" seleccione perl
c.En "Archive" zip y unzip
d.En" "Web" wget,
e.En "Editors" nano y vim
f.En "Util" cpio, util-linux y ncurses.

Ahora solo hay que dejar que se instale demora un tiempo


5.Ahora descomprimimos system.mbn
Para eso, copiamos Unyaffsmbn.exe, boot.img y system.mbn en una sola carpeta ejemplo "C:\zester"

a. Abrimos cygwin y ponemos..

Ejemplo

cd C:/zester


mkdir system

cd system

../unyaffsmbn.exe ../system.mbn

find bin -type l -exec rm {} +

cd..


Listo! busquen la carpeta "System" y ahi esta todo lo de la rom
-----------------------------------------------------------

Última edición por oamo Día 17/07/12 a las 15:19:19.
Responder Con Cita
Los siguientes 17 usuarios han agradecido a oamo su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]