ROMs y desarrollo bq Aquaris E10 ROMs y desarrollo bq Aquaris E10

Respuesta
 
Herramientas
  #1  
Viejo 14/01/15, 04:06:08
Array

[xs_avatar]
fusionero fusionero no está en línea
Usuario muy activo
 
Fecha de registro: abr 2014
Localización: Elche
Mensajes: 1,484
Modelo de smartphone: Xiaomi Mi8 256GB/GT-N7000/MediaPad M3 8,4"
Tu operador: Amena
[Kit-Kat] LINUX y La cocina Android Kernel MediaTeck MT8392/MT6592, adaptable a otras CPU's MediaTeck- Futuro también mejoras del kernel y posibles usos con versiones anteriores o posteriores a 4.4.x

Bueno chicos, como ahora tenemos el momento de nuestra Tablet y la cocina en ella voy a ir añadiendo todo lo que aprenda para que los demás puedan aprender de ello Eso si, lo primero que digo es que luisetex84 es quien me esta enseñando, así que solo es un hilo en principio en la que plasmar lo que suceda y que los demás puedan aprender desde 0 como yo en este momento a cocinar en un principio solo un kernel, y como es en el caso que me ocupa, para la Tablet BQ Aquaris E10, tanto en su versión wifi ( kaito_wifi ), como en su variante 3G ( kaito ).

NECESIDADES BÁSICAS PARA SEGUIR ESTE TUTORIAL

 Cita:
- Empezamos con la necesidad de usar un pc con Linux desde Ubuntu 12.04-14.10,Linux Mint 13-17.1, ambas en su versión 64 bit's.
- Tener una CPU de 64 bit's, si es de 32 bit's no podremos hacer nada igual o superior a Android 4.0 - IceCreamSandwich.
- Suficiente memoria y CPU, o se ralentizaran la compilaciones de kernel's o futuras Rom's. - Bueno se puede usar algo inferior, ya que yo empecé con un Celeron T-1600 64 bit's y 4 GB's de RAM DDR-667-800MHz ( es que cada una tiene una velocidad máxima, jeje ).
- 2 Discos Duros ( preferiblemente si el principal es SSD mejor por la velocidad ), para volvar siempre un repositorio o toda la carpeta al 2º HDD, por si vamos a probar muchos cambios, y no recordamos que hemos hecho poder restaurar la copia desde el 2º HDD.
- Tener ganas de poder cargarte el sistema de arranque de Linux, o archivos que no os indique y toque reinstalar Linux, por ese detalle algunos recomiendan empezar desde un Sistema Operativo Virtual, para no perder nada, ya que puede que tengamos que usar nuevamente la instalación desde USB/CD/DVD para reinstalar el Grub para si es necesario y restaurar una versión anterior a los cambios que nos den problemas, aunque yo mismo he ido a saco con mi usuario Root, y sin copia, con las bragas bajadas para que lleguen por todos los lados, que me gusta hacerla limpia, jeje.
PREPARACIÓN DEL ENTORNO

Bueno lo primero es que se debe preparar nuestro Linux para poder hacer cualquier cosa, ya que se deben manejar varias cosas o necesitar de ellas para compilar/descompilar, y en este Hilo de xda-developers da un inicio , añadiré los detalles exactos.

(Click para mostrar/ocultar)
 Cita:
Empezamos con el Terminal:

Instalamos el JDK:
 Cita:
$ sudo apt-get update
Y:
 Cita:
$ sudo apt-get install openjdk-7-jdk
Seguimos con la instalación de paquetes necesarios para trabajar con las herramientas que usaremos más adelante ( ejemplo las del Github, ya que necesitamos por ejemplo python, o no podriamos usarlo ):

 Cita:
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
Y también ejecutamos:

 Cita:
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
El especifico para Ubuntu 14.04 o Linux Mint 17:

 Cita:
$ sudo apt-get install bison g++-multilib git gperf libxml2-utils


Configuramos el acceso usb ADB:

(Click para mostrar/ocultar)
Gracias a luisete por los detalles ya que no los conocía, y solo lo he preparado apenas sustituyendo imágenes por palabras, para no perderse nunca ante caídas de las imágenes, y este es otro aporte suyo solo añadido en orden al hilo que nos conciñe/atañe. Así que nuevamente gracias a él, que nos da los detalles para ir haciendo crecer este hilo/tutorial/historia de mi propio inicio en la misma cocina desde 0.


 Cita:
1. Si no lo hemos hecho antes, ejecutamos en la Terminal:

 Cita:
$ adb devices
Esto es para iniciar el demonio de adb. En la raíz del nuestro sistema de archivos se creara la carpeta .android ( estara oculta, ya que eso hace el que tenga el punto delante, por eso se debe tener activado que podamos ver archivos y carpetas ocultas o no la veremos ), si no existía ya.

El problema que no te reconozca el dispositivo ( tablet, móvil, etc,... ) es que Linux no sabe el id del fabricante. Así que vamos a obtenerlo.

2. Sin conectar la tablet al pc ejecutamos:

 Cita:
$ adb devices
Y nos debería aparecer debajo esto

 Cita:
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
Podemos seguir con la comprobación de la conexión usb que hay en ese momento activa:

 Cita:
$ lsusb
Dandonos una respuesta de este estilo:

 Cita:
Bus 002 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 002: ID 8087:07dc Intel Corp.
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 0408:13ba Quanta Computer, Inc.
Bus 001 Device 002: ID 0bda:0158 Realtek Semiconductor Corp. USB 2.0 multicard reader
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Ahora ya conectamos el cable USB al pc y al dispositivo, y volvemos a ejecutarlo para comprobar la nueva entrada que nos debe aparecer ( la he remarcado para que lo notéis mejor ):

 Cita:
$ lsusb
Esta vez con otra respuesta que cambiaría en la 1ª línea:

 Cita:
Bus 002 Device 004: ID 2a47:2008
Bus 002 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 002: ID 8087:07dc Intel Corp.
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 0408:13ba Quanta Computer, Inc.
Bus 001 Device 002: ID 0bda:0158 Realtek Semiconductor Corp. USB 2.0 multicard reader
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Comparamos el resultado con el anterior resultado y debemos buscar ese nuevo dispositivo, que sera el nuestro ( tablet, móvil, etc,... ). Ahora apuntamos los 4 dígitos que salen detrás de ID y antes de los dos puntos, el remarcado en rojo es un ejemplo ( que en realidad es el de BQ ). Este es el idVendor.

3. En la raíz del nuestro sistema de archivos se creara la carpeta .android, busca el fichero adb_usb.ini. Se debe añadir el idVendor al fichero. Si no existiera, crealo y añade esto:

 Cita:
0x{idVendor}
- Siguiendo el ejemplo sería:

 Cita:
0x0bb4
4. Matamos ahora el demonio de adb ( esto es para que al volver a iniciarlo nos coja la nueva configuración ):

 Cita:
adb kill-server
5. Ahora volvemos a iniciar el demonio de adb

 Cita:
adb devices


Ya para más adelante sería aprender estos, que es para hacer ramas en nuestra carpeta, pero lo dejo para más adelante, ya que primero tenéis que probar a hacer una, y ya después tendremos tiempo para hacerlo, ya que sino sabemos con una rama no es cosa de crear varias si podemos querer borrar algo sino nos parece correcto, o queremos hacer solo pruebas con un solo kernel y una única variante. Aunque se pueden hacer ramas para crear varias versiones del mismo kernel para ver que cosa funciona o no según como se haga y no tener que pensar en que se hace y que se nos olvido, sino hacer directamente multiples ramas y probar cada una , ejemplo añadir cosas de otras CPU's y querer probar varias funentes con distintas opciones, así no perdemos tanto tiempo si encontramos una funcional, y al probar otra no recordamos la que era, así nunca se nos debe olvidar nombrar cada una con algún nombre que no nos olvide que la caracteriza.

 Cita:
Pendiente de traducir, ya que añado lo de la página indicada de donde saco la información:

Por defecto, la salida de cada build/generación se almacena en la salida/out/subdirectorio del árbol de código fuente correspondiente.

En algunas máquinas con múltiples dispositivos de almacenamiento ( HDD's, SSD's ), las build's/construcciones son más rápidas cuando se almacenan los archivos de origen y la salida de volúmenes separados. Para obtener un rendimiento adicional, la salida se puede almacenar en un sistema de archivos optimizado para la velocidad ( SSD's ) en lugar de robustez ante accidentes, ya que todos los archivos se pueden volver a generarse en caso de corrupción del sistema de archivos en un menor tiempo que con un HDD.

Para configurar esto, exporte la variable OUT_DIR_COMMON_BASE para apuntar a la ubicación donde se almacenarán los directorios de salida.

 Cita:
$ export OUT_DIR_COMMON_BASE=<indicar_el_nombre_de_nuestro_ directorio>
El directorio de salida para cada fuente del árbol fuente será nombrado independiente después del directorio que contiene el árbol de origen.

Por ejemplo, si usted tiene dintintas fuentes de árboles como /source/master1 y /source/master2 y OUT_DIR_COMMON_BASE se establece en /output, los directorios de salida serán /output/master1 y /output/master2.

Es importante en este caso al no tener varios orígenes de árboles almacenados en directorios que tienen el mismo nombre, porque los que terminarían compartiendo un directorio de salida, con resultados impredecibles.

Esto sólo se admite en Jelly Bean (4.1) y más recientes, incluyendo la rama principal.


PREPARANDO UN REPOSITORIO


(Click para mostrar/ocultar)
 Cita:
Es algo tan sencillo ( indicado por luisetex84 nuevamente este detalle ) en Ubuntu 14.04-14.10 y Linux Mint 17-17.1 como ejecutar este comando en la Terminal:

 Cita:
$ sudo apt-get install phablet-tools tclsh
Seguimos con unos recomandables:

 Cita:
$ sudo apt-get install bzr-doc bzrtools python-bzrlib.tests python-bzrlib-dbg python-kerberos
Y otros más:

 Cita:
$ sudo apt-get install python-gpgme click-apparmor upstart-app-launch-tools pybootchartgui
Esto otro es lo que había que hacerlo antiguamente, cuando no existía ningún paquete que contuviera el comando repo. Si nos da fallo la anterior ejecución en la Terminal nos tocaría hacer esto otro para poder continuar:

 Cita:
 Cita:
Revisamos que tenemos el directorio bin/ en la raíz de nuestro pc, o lo creamos así ( nada más abrir la Terminal, no cambiamos de directorio ):

 Cita:
$ mkdir ~/bin
Y:

 Cita:
$ PATH=~/bin:$PATH
Ya de paso recordar que mkdir es para crear carpetas u otro tipo de archivos, pero con sus correspondientes variantes, ya que mk es para crear, y dir especifica que es un directorio/carpeta.

Descargamos la tool/herramienta de la Repo y nos aseguramos de que sea ejecutable:

Y:

 Cita:
$ chmod a+x ~/bin/repo
 Cita:
Para la versión 1.17, el cheksum SHA-1 del Repo es ddd79b6d5a7807e911b524cb223bc3544b661c28

Para la versión 1.19, el cheksum SHA-1 del Repo es 92cbad8c880f697b58ed83e348d06619f8098e6c

Para la versión 1.20, el cheksum SHA-1 del Repo es e197cb48ff4ddda4d11f23940d316e323b29671c

Para la versión 1.21, el cheksum SHA-1 del Repo es b8bd1804f432ecf1bab730949c82b93b0fc5fede
Ahora es hora ya de crear la carpeta que usaremos para tener el/los repositorio/s que vamos a usar, la crearemos en la raíz del sistema ( /home/usuario ), y ya dependerá del nombre que se nos antoje, yo personalmente le di el nombre de android para reconocerla al principio al abrir el acceso al sistema de archivos. Recordar que si van a ser carpetas con nombres con más de una palabra deben ser unidas con _ en cada espacio que se le quiera añadir, ya que sino solo crearas varias carpetas cada una con su nombre respectivo. La 2ª línea es para acceder a la carpeta creada ya que desde ella que aremos todo la sincronización.

 Cita:
 Cita:
$ mkdir nuestro_directorio
Y:

 Cita:
$ cd nuestro_directorio
Ejecutamos el init repo para descargar la última versión del Repo con todas sus más recientes correcciones de errores. Debe especificar una dirección URL para el manifiesto, que especifica si los diferentes repositorios incluidos en la fuente a descargar de Android será colocado dentro de su directorio de trabajo. Y tenemos varias opciones según la fuente que usemos:

Repositorio de google:

 Cita:
$ repo init -u git://android.googlesource.com/platform/manifest
Repositorio de CyanogenMod 11.0:

 Cita:
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
Repositorio de CyanogenMod 12.0:

 Cita:
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
Repositorio de Omni 4.4:

 Cita:
$ repo init -u git://github.com/omnirom/android_bootable_recovery.git -b android-4.4
Repositorio de Omni 5.0:

 Cita:
$ repo init -u git://github.com/omnirom/android_bootable_recovery.git -b android-5.0
Todo esto tardara según la conexión que tengamos, pero pueden ser solo unos segundos o apenas 5 minutos, ya que son sobre los 5 MegaBytes en la Repo CyanogenMod.

Si fallasen las descargas de los repositorios para descargar por firmas, se soluciona saltando el uso del acceso por git://github usando este otro acceso https://github, quedando las 5 opciones anteriores así:

Repositorio de google:

Repositorio de CyanogenMod 11.0:

 Cita:
Repositorio de CyanogenMod 12.0:

 Cita:
Repositorio de Omni 4.4:

 Cita:
Repositorio de Omni 5.0:

 Cita:




DESCARGANDO UN REPOSITORIO SOLO PARA EL KERNEL
El manifest_local.xml es gracias al esfuerzo y trabajo de luisetext84, yo solo lo comprarto como base para enseñaros las diferencias lo más básicamente posible para que lo entendamos todos desde el principio lo que cambia si partimos del mismo repositorio, en el ejemplo es para usar el repositorio de CyanogenMod con el que hacer 4 kernel's distintos


(Click para mostrar/ocultar)
Tenemos que usar el Terminal en su principio, para instalar/crear/descargar la mayoría de las cosas. Aquí un ejemplo actual ( 14 de Enero de 2015 ) del manifest_local.xml creado por lusetex84, para usarlo tanto para CWM, TRWP, Philz y CTO según para que versión Android sean y su tamaño al estar descargados ( os aviso que solo el hacer la descarga se come al menos unas 7-9 veces lo ocupado, ya que lo he comprobado mientras se descargaban todos ).

Si no existe, creamos el fichero en nuestro_directorio/.repo/local_manifests/local_manifest.xml con uno de estos contenidos para bajar el código según que versión/base de kernel queramos usar, diferenciandose solo en la líneas finales que ponen el nombre a los kernel's no llamados CyanogenMod, ya que ese al ser usado no se le indica nombre, o daría error por multiple nombrado en 3 archivos, siendo el error del manifest_local nuestro si le indicamos nombre al CWM, los demás no tendrán ese problema, ya que todos necesitan el nombrado especifico si deseamos recordar que base para el kernel hemos seleccionado.

 Cita:
<?xml version="1.0" encoding="UTF-8"?>

-<manifest>

<remove-project name="CyanogenMod/android"/>

<remove-project name="CyanogenMod/android_abi_cpp"/>

<remove-project name="CyanogenMod/android_art"/>

<remove-project name="CyanogenMod/android_bootable_diskinstaller"/>

<remove-project name="CyanogenMod/android_bootable_recovery"/>

<remove-project name="CyanogenMod/android_bootable_recovery-cm"/>

<remove-project name="platform/cts"/>

<remove-project name="CyanogenMod/android_dalvik"/>

<remove-project name="platform/developers/build"/>

<remove-project name="platform/developers/demos"/>

<remove-project name="platform/developers/docs"/>

<remove-project name="platform/developers/samples/android"/>

<remove-project name="CyanogenMod/android_development"/>

<remove-project name="CyanogenMod/android_device_common"/>

<remove-project name="CyanogenMod/android_device_generic_armv7-a-neon"/>

<remove-project name="CyanogenMod/android_device_generic_common"/>

<remove-project name="CyanogenMod/android_device_generic_mips"/>

<remove-project name="CyanogenMod/android_device_generic_x86"/>

<remove-project name="device/generic/mini-emulator-armv7-a-neon"/>

<remove-project name="device/generic/mini-emulator-mips"/>

<remove-project name="device/generic/mini-emulator-x86"/>

<remove-project name="CyanogenMod/android_device_google_accessory_arduino"/>

<remove-project name="CyanogenMod/android_device_google_accessory_demokit"/>

<remove-project name="CyanogenMod/android_device_sample"/>

<remove-project name="platform/docs/source.android.com"/>

<remove-project name="CyanogenMod/android_external_aac"/>

<remove-project name="CyanogenMod/android_external_android-clat"/>

<remove-project name="CyanogenMod/android_external_android-mock"/>

<remove-project name="CyanogenMod/android_external_android-visualizer"/>

<remove-project name="CyanogenMod/android_external_ant-glob"/>

<remove-project name="CyanogenMod/android_external_ant-wireless_ant_native"/>

<remove-project name="CyanogenMod/android_external_ant-wireless_ant_service"/>

<remove-project name="CyanogenMod/android_external_ant-wireless_antradio-library"/>

<remove-project name="CyanogenMod/android_external_antlr"/>

<remove-project name="CyanogenMod/android_external_apache-harmony"/>

<remove-project name="CyanogenMod/android_external_apache-http"/>

<remove-project name="CyanogenMod/android_external_apache-qp"/>

<remove-project name="CyanogenMod/android_external_apache-xml"/>

<remove-project name="CyanogenMod/android_external_arduino"/>

<remove-project name="CyanogenMod/android_external_bash"/>

<remove-project name="CyanogenMod/android_external_blktrace"/>

<remove-project name="CyanogenMod/android_external_bluetooth_bluedroid"/>

<remove-project name="CyanogenMod/android_external_bsdiff"/>

<remove-project name="CyanogenMod/android_external_bson"/>

<remove-project name="CyanogenMod/android_external_cardslib"/>

<remove-project name="platform/external/ceres-solver"/>

<remove-project name="CyanogenMod/android_external_chromium"/>

<remove-project name="platform/external/chromium-libpac"/>

<remove-project name="CyanogenMod/android_external_chromium-trace"/>

<remove-project name="CyanogenMod/android_external_chromium_org"/>

<remove-project name="platform/external/chromium_org/sdch/open-vcdiff"/>

<remove-project name="platform/external/chromium_org/testing/gtest"/>

<remove-project name="platform/external/chromium_org/third_party/WebKit"/>

<remove-project name="platform/external/chromium_org/third_party/angle"/>

<remove-project name="platform/external/chromium_org/third_party/eyesfree/src/android/java/src/com/googlecode/eyesfree/braille"/>

<remove-project name="platform/external/chromium_org/third_party/freetype"/>

<remove-project name="platform/external/chromium_org/third_party/icu"/>

<remove-project name="platform/external/chromium_org/third_party/leveldatabase/src"/>

<remove-project name="platform/external/chromium_org/third_party/libjingle/source/talk"/>

<remove-project name="platform/external/chromium_org/third_party/libphonenumber/src/phonenumbers"/>

<remove-project name="platform/external/chromium_org/third_party/libphonenumber/src/resources"/>

<remove-project name="platform/external/chromium_org/third_party/mesa/src"/>

<remove-project name="CyanogenMod/android_external_chromium_org_third_party_openssl"/>

<remove-project name="platform/external/chromium_org/third_party/opus/src"/>

<remove-project name="platform/external/chromium_org/third_party/ots"/>

<remove-project name="platform/external/chromium_org/third_party/sfntly/cpp/src"/>

<remove-project name="platform/external/chromium_org/third_party/skia/gyp"/>

<remove-project name="platform/external/chromium_org/third_party/skia/include"/>

<remove-project name="platform/external/chromium_org/third_party/skia/src"/>

<remove-project name="platform/external/chromium_org/third_party/smhasher/src"/>

<remove-project name="platform/external/chromium_org/third_party/yasm/source/patched-yasm"/>

<remove-project name="platform/external/chromium_org/tools/grit"/>

<remove-project name="platform/external/chromium_org/tools/gyp"/>

<remove-project name="platform/external/chromium_org/v8"/>

<remove-project name="CyanogenMod/android_external_connectivity"/>

<remove-project name="CyanogenMod/android_external_crda"/>

<remove-project name="CyanogenMod/android_external_curl"/>

<remove-project name="CyanogenMod/android_external_dexmaker"/>

<remove-project name="CyanogenMod/android_external_dhcpcd"/>

<remove-project name="CyanogenMod/android_external_dnsmasq"/>

<remove-project name="CyanogenMod/android_external_doclava"/>

<remove-project name="CyanogenMod/android_external_dropbear"/>

<remove-project name="platform/external/droiddriver"/>

<remove-project name="CyanogenMod/android_external_easymock"/>

<remove-project name="CyanogenMod/android_external_ebtables"/>

<remove-project name="CyanogenMod/android_external_eclipse-basebuilder"/>

<remove-project name="CyanogenMod/android_external_eclipse-windowbuilder"/>

<remove-project name="CyanogenMod/android_external_elfutils"/>

<remove-project name="CyanogenMod/android_external_embunit"/>

<remove-project name="CyanogenMod/android_external_emma"/>

<remove-project name="CyanogenMod/android_external_esd"/>

<remove-project name="CyanogenMod/android_external_expat"/>

<remove-project name="CyanogenMod/android_external_eyes-free"/>

<remove-project name="CyanogenMod/android_external_f2fs-tools"/>

<remove-project name="CyanogenMod/android_external_fdlibm"/>

<remove-project name="CyanogenMod/android_external_ffmpeg"/>

<remove-project name="CyanogenMod/android_external_flac"/>

<remove-project name="CyanogenMod/android_external_ganymed-ssh2"/>

<remove-project name="CyanogenMod/android_external_giflib"/>

<remove-project name="CyanogenMod/android_external_google"/>

<remove-project name="CyanogenMod/android_external_google-diff-match-patch"/>

<remove-project name="CyanogenMod/android_external_grub"/>

<remove-project name="CyanogenMod/android_external_gson"/>

<remove-project name="CyanogenMod/android_external_gtest"/>

<remove-project name="CyanogenMod/android_external_guava"/>

<remove-project name="CyanogenMod/android_external_hamcrest"/>

<remove-project name="CyanogenMod/android_external_harfbuzz"/>

<remove-project name="platform/external/harfbuzz_ng"/>

<remove-project name="CyanogenMod/android_external_heimdall"/>

<remove-project name="CyanogenMod/android_external_htop"/>

<remove-project name="CyanogenMod/android_external_hyphenation"/>

<remove-project name="CyanogenMod/android_external_icu4c"/>

<remove-project name="CyanogenMod/android_external_iproute2"/>

<remove-project name="CyanogenMod/android_external_ipsec-tools"/>

<remove-project name="CyanogenMod/android_external_iptables"/>

<remove-project name="platform/external/iputils"/>

<remove-project name="CyanogenMod/android_external_jack"/>

<remove-project name="CyanogenMod/android_external_JakeWharton_butterknife"/>

<remove-project name="CyanogenMod/android_external_javasqlite"/>

<remove-project name="CyanogenMod/android_external_javassist"/>

<remove-project name="CyanogenMod/android_external_jdiff"/>

<remove-project name="CyanogenMod/android_external_jhead"/>

<remove-project name="CyanogenMod/android_external_jmdns"/>

<remove-project name="CyanogenMod/android_external_jmonkeyengine"/>

<remove-project name="CyanogenMod/android_external_jsilver"/>

<remove-project name="CyanogenMod/android_external_jsr305"/>

<remove-project name="CyanogenMod/android_external_jsr308"/>

<remove-project name="CyanogenMod/android_external_jsr330"/>

<remove-project name="CyanogenMod/android_external_junit"/>

<remove-project name="CyanogenMod/android_external_kernel-headers"/>

<remove-project name="CyanogenMod/android_external_kissfft"/>

<remove-project name="CyanogenMod/ion"/>

<remove-project name="CyanogenMod/AndroidAsync"/>

<remove-project name="CyanogenMod/Widgets"/>

<remove-project name="CyanogenMod/android_external_libcap-ng"/>

<remove-project name="platform/external/libexif"/>

<remove-project name="CyanogenMod/android_external_libffi"/>

<remove-project name="CyanogenMod/android_external_libgsm"/>

<remove-project name="CyanogenMod/android_external_liblzf"/>

<remove-project name="CyanogenMod/android_external_libmtp"/>

<remove-project name="CyanogenMod/android_external_libncurses"/>

<remove-project name="CyanogenMod/android_external_libnfc-nci"/>

<remove-project name="CyanogenMod/android_external_libnfc-nxp"/>

<remove-project name="CyanogenMod/android_external_libnl-headers"/>

<remove-project name="CyanogenMod/android_external_libogg"/>

<remove-project name="CyanogenMod/android_external_libpcap"/>

<remove-project name="CyanogenMod/android_external_libphonenumber"/>

<remove-project name="CyanogenMod/android_external_libphonenumbergoogle"/>

<remove-project name="CyanogenMod/android_external_libppp"/>

<remove-project name="CyanogenMod/android_external_libtruezip"/>

<remove-project name="CyanogenMod/android_external_libusb"/>

<remove-project name="CyanogenMod/android_external_libusbx"/>

<remove-project name="CyanogenMod/android_external_libusb-compat"/>

<remove-project name="platform/external/libssh2"/>

<remove-project name="CyanogenMod/android_external_libvorbis"/>

<remove-project name="CyanogenMod/android_external_libvpx"/>

<remove-project name="CyanogenMod/android_external_libxml2"/>

<remove-project name="CyanogenMod/android_external_libxslt"/>

<remove-project name="CyanogenMod/android_external_libyuv"/>

<remove-project name="CyanogenMod/android_external_linux-tools-perf"/>

<remove-project name="CyanogenMod/android_external_littlemock"/>

<remove-project name="platform/external/lzma"/>

<remove-project name="CyanogenMod/android_external_lsof"/>

<remove-project name="CyanogenMod/android_external_lzo"/>

<remove-project name="platform/external/marisa-trie"/>

<remove-project name="CyanogenMod/android_external_markdown"/>

<remove-project name="CyanogenMod/android_external_mdnsresponder"/>

<remove-project name="platform/external/mesa3d"/>

<remove-project name="CyanogenMod/android_external_mksh"/>

<remove-project name="platform/external/mockito"/>

<remove-project name="CyanogenMod/android_external_mockwebserver"/>

<remove-project name="CyanogenMod/android_external_mp4parser"/>

<remove-project name="CyanogenMod/android_external_mtpd"/>

<remove-project name="CyanogenMod/android_external_nano"/>

<remove-project name="CyanogenMod/android_external_naver-fonts"/>

<remove-project name="CyanogenMod/android_external_netcat"/>

<remove-project name="CyanogenMod/android_external_netperf"/>

<remove-project name="CyanogenMod/android_external_neven"/>

<remove-project name="platform/external/nist-pkits"/>

<remove-project name="CyanogenMod/android_external_nist-sip"/>

<remove-project name="platform/external/noto-fonts"/>

<remove-project name="CyanogenMod/android_external_oauth"/>

<remove-project name="platform/external/objenesis"/>

<remove-project name="CyanogenMod/android_external_okhttp"/>

<remove-project name="platform/external/open-vcdiff"/>

<remove-project name="CyanogenMod/android_external_opencv"/>

<remove-project name="CyanogenMod/android_external_openfst"/>

<remove-project name="CyanogenMod/android_external_openssh"/>

<remove-project name="CyanogenMod/android_external_oprofile"/>

<remove-project name="CyanogenMod/android_external_pciutils"/>

<remove-project name="platform/external/pixman"/>

<remove-project name="CyanogenMod/android_external_powertop"/>

<remove-project name="CyanogenMod/android_external_ppp"/>

<remove-project name="CyanogenMod/android_external_proguard"/>

<remove-project name="CyanogenMod/android_external_protobuf"/>

<remove-project name="CyanogenMod/android_external_protobuf-c"/>

<remove-project name="CyanogenMod/android_external_qemu"/>

<remove-project name="CyanogenMod/android_external_qemu-pc-bios"/>

<remove-project name="CyanogenMod/android_external_qrngd"/>

<remove-project name="CyanogenMod/android_external_regex-re2"/>

<remove-project name="CyanogenMod/android_external_replicaisland"/>

<remove-project name="platform/external/robolectric"/>

<remove-project name="CyanogenMod/android_external_rsync"/>

<remove-project name="platform/external/sfntly"/>

<remove-project name="platform/external/sil-fonts"/>

<remove-project name="CyanogenMod/android_external_skia"/>

<remove-project name="platform/external/smack"/>

<remove-project name="CyanogenMod/android_external_smali"/>

<remove-project name="CyanogenMod/android_external_sonivox"/>

<remove-project name="CyanogenMod/android_external_speex"/>

<remove-project name="CyanogenMod/android_external_spongycastle"/>

<remove-project name="CyanogenMod/android_external_square_dagger"/>

<remove-project name="CyanogenMod/android_external_square_javawriter"/>

<remove-project name="CyanogenMod/android_external_srec"/>

<remove-project name="CyanogenMod/android_external_srtp"/>

<remove-project name="CyanogenMod/android_external_stagefright-plugins"/>

<remove-project name="CyanogenMod/android_external_strace"/>

<remove-project name="CyanogenMod/android_external_stressapptest"/>

<remove-project name="platform/external/svox"/>

<remove-project name="CyanogenMod/android_external_tagsoup"/>

<remove-project name="CyanogenMod/android_external_tcpdump"/>

<remove-project name="platform/external/timezonepicker-support"/>

<remove-project name="CyanogenMod/android_external_tinyalsa"/>

<remove-project name="CyanogenMod/android_external_tinycompress"/>

<remove-project name="CyanogenMod/android_external_tinyxml"/>

<remove-project name="CyanogenMod/android_external_tinyxml2"/>

<remove-project name="CyanogenMod/android_external_tremolo"/>

<remove-project name="CyanogenMod/android_external_unrar"/>

<remove-project name="CyanogenMod/android_external_v8"/>

<remove-project name="CyanogenMod/android_external_valgrind"/>

<remove-project name="CyanogenMod/android_external_vim"/>

<remove-project name="CyanogenMod/android_external_webp"/>

<remove-project name="CyanogenMod/android_external_webrtc"/>

<remove-project name="CyanogenMod/android_external_whispersystems_TextSecure"/>

<remove-project name="CyanogenMod/android_external_whispersystems_WhisperPush"/>

<remove-project name="CyanogenMod/android_external_wpa_supplicant_8"/>

<remove-project name="CyanogenMod/android_external_wpa_supplicant_8_ti"/>

<remove-project name="CyanogenMod/android_external_xmlwriter"/>

<remove-project name="CyanogenMod/android_external_xmp_toolkit"/>

<remove-project name="CyanogenMod/android_external_zip"/>

<remove-project name="CyanogenMod/android_external_zxing"/>

<remove-project name="CyanogenMod/android_frameworks_av"/>

<remove-project name="CyanogenMod/android_frameworks_base"/>

<remove-project name="CyanogenMod/android_frameworks_compile_libbcc"/>

<remove-project name="CyanogenMod/android_frameworks_compile_mclinker"/>

<remove-project name="CyanogenMod/android_frameworks_compile_slang"/>

<remove-project name="CyanogenMod/android_frameworks_ex"/>

<remove-project name="CyanogenMod/android_frameworks_mff"/>

<remove-project name="CyanogenMod/android_frameworks_ml"/>

<remove-project name="CyanogenMod/android_frameworks_opt_calendar"/>

<remove-project name="CyanogenMod/android_frameworks_opt_carddav"/>

<remove-project name="CyanogenMod/android_frameworks_opt_colorpicker"/>

<remove-project name="CyanogenMod/android_frameworks_opt_datetimepicker"/>

<remove-project name="CyanogenMod/android_frameworks_opt_emoji"/>

<remove-project name="CyanogenMod/android_frameworks_opt_hardware"/>

<remove-project name="CyanogenMod/android_frameworks_opt_inputmethodcommon"/>

<remove-project name="CyanogenMod/android_frameworks_opt_mailcommon"/>

<remove-project name="CyanogenMod/android_frameworks_opt_mms"/>

<remove-project name="CyanogenMod/android_frameworks_opt_net_voip"/>

<remove-project name="CyanogenMod/android_frameworks_opt_photoviewer"/>

<remove-project name="CyanogenMod/android_frameworks_opt_timezonepicker"/>

<remove-project name="CyanogenMod/android_frameworks_opt_telephony"/>

<remove-project name="CyanogenMod/android_frameworks_opt_telephony-msim"/>

<remove-project name="CyanogenMod/android_frameworks_opt_vcard"/>

<remove-project name="platform/frameworks/opt/widget"/>

<remove-project name="CyanogenMod/android_frameworks_rs"/>

<remove-project name="CyanogenMod/android_frameworks_support"/>

<remove-project name="CyanogenMod/android_frameworks_testing"/>

<remove-project name="CyanogenMod/android_frameworks_volley"/>

<remove-project name="CyanogenMod/android_frameworks_webview"/>

<remove-project name="CyanogenMod/android_frameworks_wilhelm"/>

<remove-project name="CyanogenMod/android_hardware_akm"/>

<remove-project name="CyanogenMod/android_hardware_broadcom_libbt"/>

<remove-project name="CyanogenMod/android_hardware_broadcom_wlan"/>

<remove-project name="CyanogenMod/android_hardware_cm"/>

<remove-project name="CyanogenMod/android_hardware_invensense"/>

<remove-project name="CyanogenMod/android_hardware_qcom_audio"/>

<remove-project name="CyanogenMod/android_hardware_qcom_audio-caf"/>

<remove-project name="CyanogenMod/android_hardware_qcom_bt"/>

<remove-project name="CyanogenMod/android_hardware_qcom_camera"/>

<remove-project name="CyanogenMod/android_hardware_qcom_display"/>

<remove-project name="CyanogenMod/android_hardware_qcom_display-caf"/>

<remove-project name="CyanogenMod/android_hardware_qcom_gps"/>

<remove-project name="CyanogenMod/android_hardware_qcom_keymaster"/>

<remove-project name="CyanogenMod/android_hardware_qcom_media"/>

<remove-project name="CyanogenMod/android_hardware_qcom_media-caf"/>

<remove-project name="CyanogenMod/android_hardware_qcom_msm8960"/>

<remove-project name="CyanogenMod/android_hardware_qcom_msm8x74"/>

<remove-project name="CyanogenMod/android_hardware_qcom_power"/>

<remove-project name="CyanogenMod/android_hardware_qcom_sensors"/>

<remove-project name="CyanogenMod/android_hardware_qcom_wlan"/>

<remove-project name="CyanogenMod/android_hardware_ril"/>

<remove-project name="CyanogenMod/android_hardware_samsung_slsi_exynos5"/>

<remove-project name="CyanogenMod/android_hardware_ti_omap3"/>

<remove-project name="CyanogenMod/android_hardware_ti_omap4xxx"/>

<remove-project name="CyanogenMod/android_hardware_ti_wlan"/>

<remove-project name="CyanogenMod/android_hardware_ti_wpan"/>

<remove-project name="CyanogenMod/android_libcore"/>

<remove-project name="CyanogenMod/android_libnativehelper"/>

<remove-project name="platform/ndk"/>

<remove-project name="CyanogenMod/android_packages_apps_Apollo"/>

<remove-project name="CyanogenMod/android_packages_apps_BasicSmsReceiver"/>

<remove-project name="CyanogenMod/android_packages_apps_Bluetooth"/>

<remove-project name="CyanogenMod/android_packages_apps_BluetoothExt"/>

<remove-project name="CyanogenMod/android_packages_apps_Browser"/>

<remove-project name="CyanogenMod/android_packages_apps_Calculator"/>

<remove-project name="CyanogenMod/android_packages_apps_Calendar"/>

<remove-project name="CyanogenMod/android_packages_apps_Camera2"/>

<remove-project name="CyanogenMod/android_packages_apps_CellBroadcastReceiver"/>

<remove-project name="CyanogenMod/android_packages_apps_CertInstaller"/>

<remove-project name="CyanogenMod/android_packages_apps_CMAccount"/>

<remove-project name="CyanogenMod/android_packages_apps_CMBugreport"/>

<remove-project name="CyanogenMod/android_packages_apps_CMFileManager"/>

<remove-project name="CyanogenMod/android_packages_apps_CMHome"/>

<remove-project name="CyanogenMod/android_packages_apps_CMUpdater"/>

<remove-project name="CyanogenMod/android_packages_apps_CMWallpapers"/>

<remove-project name="CyanogenMod/android_packages_apps_Contacts"/>

<remove-project name="CyanogenMod/android_packages_apps_ContactsCommon"/>

<remove-project name="CyanogenMod/android_packages_apps_DeskClock"/>

<remove-project name="CyanogenMod/android_packages_apps_Dialer"/>

<remove-project name="CyanogenMod/android_packages_apps_DSPManager"/>

<remove-project name="CyanogenMod/android_packages_apps_Email"/>

<remove-project name="CyanogenMod/android_packages_apps_Exchange"/>

<remove-project name="CyanogenMod/android_packages_apps_Gallery2"/>

<remove-project name="CyanogenMod/android_packages_apps_HTMLViewer"/>

<remove-project name="CyanogenMod/android_packages_apps_InCallUI"/>

<remove-project name="CyanogenMod/android_packages_apps_KeyChain"/>

<remove-project name="CyanogenMod/android_packages_apps_LockClock"/>

<remove-project name="CyanogenMod/android_packages_apps_Mms-caf"/>

<remove-project name="CyanogenMod/android_packages_apps_Nfc"/>

<remove-project name="platform/packages/apps/OneTimeInitializer"/>

<remove-project name="CyanogenMod/android_packages_apps_PackageInstaller"/>

<remove-project name="CyanogenMod/android_packages_apps_PhoneCommon"/>

<remove-project name="CyanogenMod/android_packages_apps_Provision"/>

<remove-project name="CyanogenMod/android_packages_apps_Settings"/>

<remove-project name="CyanogenMod/android_packages_apps_SmartCardService"/>

<remove-project name="CyanogenMod/android_packages_apps_SoundRecorder"/>

<remove-project name="CyanogenMod/android_packages_apps_SpeechRecorder"/>

<remove-project name="CyanogenMod/android_packages_apps_Stk"/>

<remove-project name="CyanogenMod/android_packages_apps_Tag"/>

<remove-project name="CyanogenMod/android_packages_apps_ThemeChooser"/>

<remove-project name="CyanogenMod/android_packages_apps_Torch"/>

<remove-project name="CyanogenMod/android_packages_apps_Trebuchet"/>

<remove-project name="CyanogenMod/android_packages_apps_UnifiedEmail"/>

<remove-project name="CyanogenMod/android_packages_apps_VideoEditor"/>

<remove-project name="CyanogenMod/android_packages_apps_VoiceDialer"/>

<remove-project name="CyanogenMod/android_packages_apps_VoicePlus"/>

<remove-project name="CyanogenMod/android_packages_experimental"/>

<remove-project name="CyanogenMod/android_packages_inputmethods_LatinIME"/>

<remove-project name="CyanogenMod/android_packages_inputmethods_OpenWnn"/>

<remove-project name="CyanogenMod/android_packages_inputmethods_PinyinIME"/>

<remove-project name="CyanogenMod/android_packages_providers_ApplicationsProvider"/>

<remove-project name="CyanogenMod/android_packages_providers_CalendarProvider"/>

<remove-project name="CyanogenMod/android_packages_providers_ContactsProvider"/>

<remove-project name="CyanogenMod/android_packages_providers_DownloadProvider"/>

<remove-project name="CyanogenMod/android_packages_providers_MediaProvider"/>

<remove-project name="CyanogenMod/android_packages_providers_PartnerBookmarksProvide r"/>

<remove-project name="CyanogenMod/android_packages_providers_TelephonyProvider"/>

<remove-project name="CyanogenMod/android_packages_providers_ThemesProvider"/>

<remove-project name="CyanogenMod/android_packages_providers_UserDictionaryProvider"/>

<remove-project name="CyanogenMod/android_packages_screensavers_Basic"/>

<remove-project name="CyanogenMod/android_packages_screensavers_PhotoTable"/>

<remove-project name="CyanogenMod/android_packages_screensavers_WebView"/>

<remove-project name="CyanogenMod/android_packages_services_Telephony"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_Basic"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_Galaxy4"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_HoloSpiral"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_LivePicker"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_MagicSmoke"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_MusicVisualization"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_NoiseField"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_PhaseBeam"/>

<remove-project name="CyanogenMod/android_packages_wallpapers_PhotoPhase"/>

<remove-project name="platform/pdk"/>

<remove-project name="CyanogenMod/android_prebuilt"/>

<remove-project name="platform/prebuilts/clang/darwin-x86/3.1"/>

<remove-project name="platform/prebuilts/clang/darwin-x86/3.2"/>

<remove-project name="platform/prebuilts/clang/darwin-x86/arm/3.3"/>

<remove-project name="platform/prebuilts/clang/darwin-x86/host/3.3"/>

<remove-project name="platform/prebuilts/clang/darwin-x86/mips/3.3"/>

<remove-project name="platform/prebuilts/clang/darwin-x86/x86/3.3"/>

<remove-project name="platform/prebuilts/clang/linux-x86/3.1"/>

<remove-project name="platform/prebuilts/clang/linux-x86/3.2"/>

<remove-project name="platform/prebuilts/clang/linux-x86/arm/3.3"/>

<remove-project name="platform/prebuilts/clang/linux-x86/host/3.3"/>

<remove-project name="platform/prebuilts/clang/linux-x86/mips/3.3"/>

<remove-project name="platform/prebuilts/clang/linux-x86/x86/3.3"/>

<remove-project name="platform/prebuilts/devtools"/>

<remove-project name="platform/prebuilts/eclipse"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.7"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.7"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.6"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.7"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/host/headers"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/mips/mipsel-linux-android-4.6"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/mips/mipsel-linux-android-4.7"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/x86/i686-linux-android-4.6"/>

<remove-project name="platform/prebuilts/gcc/darwin-x86/x86/i686-linux-android-4.7"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.4.3"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.6"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.7"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.6"/>

<remove-project name="platform/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.7"/>

<remove-project name="platform/prebuilts/python/darwin-x86/2.7.5"/>

<remove-project name="platform/prebuilts/python/linux-x86/2.7.5"/>

<remove-project name="platform/prebuilts/qemu-kernel"/>

<remove-project name="platform/prebuilts/runtime"/>

<remove-project name="platform/prebuilts/tools"/>

<remove-project name="CyanogenMod/android_system_media"/>

<remove-project name="CyanogenMod/android_system_netd"/>

<remove-project name="CyanogenMod/android_system_qcom"/>

<remove-project name="CyanogenMod/android_system_security"/>

<remove-project name="platform/tools/adt/eclipse"/>

<remove-project name="platform/tools/adt/idea"/>

<remove-project name="platform/tools/base"/>

<remove-project name="platform/tools/build"/>

<remove-project name="platform/tools/emulator"/>

<remove-project name="platform/tools/external/fat32lib"/>

<remove-project name="platform/tools/external/gradle"/>

<remove-project name="platform/tools/idea"/>

<remove-project name="platform/tools/studio/cloud"/>

<remove-project name="platform/tools/swt"/>

<remove-project name="cyngn/android_vendor_cyngn"/>

<project name="CyanogenMod/android_bootable_recovery" revision="cm-11.0" path="../recoveryCWM"/>

<project name="
PhilZ-cwm6/philz_touch_cwm6" revision="cm-11.0" path="../recoveryPhilz"/>

<project name="omnirom/android_bootable_recovery" revision="android-4.4" path="../recoveryTWRP"/>

<project name="ProjectOpenCannibal/android_bootable_recovery-cm" revision="cm-11.0-dev" path="../recoveryCOT"/>


</manifest>
Si os habéis fijado solo he remarcado 4 líneas ( en rojo ), son las que se deben eliminar menos 1, que sera la base para hacer el kernel que seleccionemos, siendo cada uno para usar alguna de las versiones para una Rom Kit-Kat ( lo remarcado en negrita es la rama que usaremos de cada kernel base ), y donde indica proyect name, es el proyecto base del que sale la base del kernel real, lo demás son cosas necesarias que se añaden al kernel, y donde indica path es el nombre con el que distinguermos el kernel por su base al compilarlo, ya que no debemos confundirnos en ello si pretendemos desarrollar correctamente el kernel, no sea que tomenos por error unas características para mejorarlo, y usemos la base incorrecta, pudiendo producir errores en su funcionamiento al estár mal configurado por nuestra parte en ese caso.

Y tenemos ahora 2 ramas para usar según la Rom a la que este destinado nuestro kernel.

Android 4.4:

 Cita:
CyanogenMod para Android 4.4 CWM 6.0.4.2-6.0.5.1

Omni para Android 4.4 TWRP 2.5.1.0-2.8.1.0

Philz Touch Advanced cwm6 para Android 4.4 Philz 6.0.0-6.59.3

Proyect Open Cannibal para Android 4.4 CTO ¿?-¿?
Y Android 5.0:

 Cita:
CyanogenMod para Android 5.0 CWM 6.0.5.0-6.0.5.1

Omni para Android 5.0 TWRP 2.8.0.0-2.8.3.0

Philz Touch Advanced cwm6 para Android 5.0 Philz 6.48.4-6.59.3

Proyect Open Cannibal para Android 5.0 CTO ¿?-¿?
Ya seleccionada la rama y kernel base que vamos a usar debemos dejar la carpeta manifest_local y archivos manifest_local.xml colocada justo dentro de la carpeta .repo, para que tome esos datos como validos y nos descargue lo no seleccionado, y la base del kernel que hemos indicado al final del manifest_local.xml.

Tras esto se debe hacer hacer la sincronización con la Repo, para descargarlo, ya que todavía estamos en esto:

 Cita:
$ repo sync
Esto según la línea a internet puede tardar más o menos, recordar que se descargara mucho más de lo que realmente se crea, ya que se descarga puro y es más pesado que compilado, pero al ser sobre los 2 Gigas lo que debe descargarse si tenemos una buena conexión de fibra en menos que un café lo tendremos sincronizado en nuestro pc para empezar a compilar, pero solo tras meter la base del recovery/kernel de nuestro dispositivo, ya que solo hemos descargado lo básico para motarlo para el dispositivo seleccionado, pero al no estar todavía nuestro kernel no se puede compilar ninguno funcional.


Seguimos en el 2º post

Agradecimientos a:

 Cita:
luisetex84 por su ayuda para ir realizando los pasos he iniciarme con su ayuda

A lo hilos en los que me he ido guiando para hacer este tutorial:
Archivos Adjuntos
Tipo de Archivo: zip CyanogenMod_11.zip (2.9 KB, 3 visitas)
Tipo de Archivo: zip CyanogenMod_12.zip (2.1 KB, 14 visitas)
Tipo de Archivo: zip Omni_4.4.zip (2.9 KB, 3 visitas)
Tipo de Archivo: zip Omni_5.0.zip (2.1 KB, 7 visitas)

Última edición por fusionero Día 26/01/15 a las 21:17:48.
Responder Con Cita
Los siguientes 4 usuarios han agradecido a fusionero su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 14/01/15, 04:06:49
Array

[xs_avatar]
fusionero fusionero no está en línea
Usuario muy activo
 
Fecha de registro: abr 2014
Localización: Elche
Mensajes: 1,484
Modelo de smartphone: Xiaomi Mi8 256GB/GT-N7000/MediaPad M3 8,4"
Tu operador: Amena
Bueno seguiré añadiendo conforme yo misma siga, que hasta ahora voy por aquí.

Pero en principio son ir seleccionando el Recovery base en el que trabajar, teniendo las opciones de elegir entre algunas conocidas o que empiezan a conocerse:

CWM - versión actual 6.0.5.1
TRWP - versión actual 2.8.4.0 y ya se ve en pruebas la 2.8.4.1
Philz - versión actual 6.59.0 basada en CWM 6.0.5.1 y por ahora paralizada su actualización
CTR - versión actual 3

Pero sigue con esta guía ( en inglés ): How to compile TWRP touch recovery si vamos a usar un kernel TWRP, o bien este otro pendiente si vamos a usar CWM, o bien este [GUIDE] How to compile PhilZ Touch 6 Recovery for ARM android devices using BBQLinux si queremos hacer un Philz Touch.

Ya para ser especificos nos queda leernos los pasos 2, 3, 4 y 5; y el 2º post para ser especificos con las CPU's MediaTeck del último hilo: [GUIDE] How to compile PhilZ Touch 6 Recovery for ARM android devices using BBQLinux

(Click para mostrar/ocultar)
PASO 2

Syncing Part-Source


Updates -> Refer to this post . . .

Download & unzip the script to your [HOME]. Start Mate Terminal & follow below command.
Code:
chmod 777 ~/PhilZ
./PhilZ <- Execute it by typing dot forward-slash PhilZ
Screenshot
Click image for larger version

Name: syncing.png
Views: 1284
Size: 121.7 KB
ID: 2920278

You can stop the script at any time by pressing Ctrl + z
To resume then execute the script again.

Misc Tips


Pls be patient, first sync will take quite awhile depending on your ISP

Screenshot of Part-Source script when finish syncing
Name: script.jpg
Views: 7233
Size: 66.7 KB

You can also drag & drop it from your host OS
Name: dnd PhilZ boot.jpg
Views: 7264
Size: 101.0 KB

Pull your MTK device boot.img directly to BBQLinux then you have to enable the USB port on Virtualbox first.
Name: USB.jpg
Views: 7216
Size: 49.2 KB

Check your MT65xx_Android_scatter.txt for boot or recovery partition size

 Cita:
partition_index: SYS9
partition_name: BOOTIMG
file_name: boot.img
is_download: true
type: NORMAL_ROM
linear_start_addr: 0x1DA0000
physical_start_addr: 0x1DA0000
partition_size: 0xA00000
region: EMMC_USER
storage: HW_STORAGE_EMMC
boundary_check: true
is_reserved: false
operation_type: UPDATE
reserve: 0x00
 Cita:
partition_index: SYS10
partition_name: RECOVERY
file_name: recovery.img
is_download: true
type: NORMAL_ROM
linear_start_addr: 0x27A0000
physical_start_addr: 0x27A0000
partition_size: 0x1400000
region: EMMC_USER
storage: HW_STORAGE_EMMC
boundary_check: true
is_reserved: false
operation_type: UPDATE
reserve: 0x00
You can also use adb shell cat /proc/dumchar_info to check too.

 Cita:
Part_Name Size StartAddr Type MapTo
bootimg 0x0000000000A00000 0x0000000001DA0000 2 /dev/block/mmcblk0
recovery 0x0000000001400000 0x00000000027A0000 2 /dev/block/mmcblk0
Use Calculator or Online Hex to Dec & convert it to decimal.

 Cita:
0xA00000 = 10485760
0x1400000 = 20971520
 Cita:
adb shell "dd if=/dev/bootimg of=/mnt/sdcard/boot.img bs=10485760 count=1"
adb pull /mnt/sdcard/boot.img
adb shell rm /mnt/sdcard/boot.img
OR
adb shell "dd if=/dev/recovery of=/mnt/sdcard/recovery.img bs=20971520 count=1"
adb pull /mnt/sdcard/recovery.img
adb shell rm /mnt/sdcard/recovery.img
PASO 3

Setting up the files


Now that you have sync the Part-Source, you will need to use mkvendor.sh to generate the skeleton files for building PhilZ Touch.

Copy your device boot.img or recovery.img to [HOME]

 Cita:
cd ~/cm11
build/tools/device/mkvendor.sh vendor_name device_name ~/boot.img
OR
build/tools/device/mkvendor.sh vendor_name device_name ~/recovery.img

Eg. build/tools/device/mkvendor.sh Lenovo S939 ~/boot.img

mkvendor.sh will auto-generate eight files for your device needed for building PhilZ Touch

 Cita:
AndroidBoard.mk
AndroidProducts.mk
BoardConfig.mk
cm.mk
device_device_name.mk
kernel
recovery.fstab
system.prop
Screenshot of mkvendor.sh
Click image for larger version

Name: mkvendor.sh.png
Views: 1206
Size: 80.8 KB
ID: 2920279

You need to edit the files as listed below only. Below are examples, do not copy & paste, refer to here & here .

Put all PhilZ Touch build flags at the bottom of the BoardConfig.mk under a heading of #PhilZ Touch build flags for easy reference

~/cm11/device/Lenovo/S939/BoardConfig.mk

 Cita:
USE_CAMERA_STUB := true

# inherit from the proprietary version
-include vendor/Lenovo/S939/BoardConfigVendor.mk

TARGET_ARCH := arm
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := unknown <- Non-critical, you can either leave it as it is or change to any name
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_VARIANT := cortex-a7 <- Critical, either cortex-a5, cortex-a7, cortex-a8, cortex-a9, cortex-a15, krait, scorpion or generic
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true

TARGET_BOOTLOADER_BOARD_NAME := S939

BOARD_KERNEL_CMDLINE :=
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048

# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x1400000 <- Change this accordingly to your recovery size so that build will error when its oversize
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_FLASH_BLOCK_SIZE := 131072

TARGET_PREBUILT_KERNEL := device/Lenovo/S939/kernel

BOARD_HAS_NO_SELECT_BUTTON := true

#PhilZ Touch build flags for MTK
TARGET_COMMON_NAME := Lenovo S939
BOARD_USE_MTK_LAYOUT := true
BOARD_MTK_BOOT_LABEL := "/bootimg"
BOARD_USE_NTFS_3G := false
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/virtual/android_usb/android0/f_mass_storage/lun%d/file" <- Credits to RD chrmhoffmann
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720
BOARD_CUSTOM_BOOTIMG_MK := device/Lenovo/S939/boot.mk <- Credits to RD chrmhoffmann. MTK uses custom mkbootimg
~/cm11/device/Lenovo/S939/cm.mk

 Cita:
## Specify phone tech before including full_phone
$(call inherit-product, vendor/cm/config/gsm.mk)

# Release name
PRODUCT_RELEASE_NAME := S939

# Inherit some common CM stuff.
#$(call inherit-product, vendor/cm/config/common_full_phone.mk) <- Disable it to use this Part-Source or ERROR 1. You don't need this for building PhilZ Touch

# Inherit device configuration
$(call inherit-product, device/Lenovo/S939/device_S939.mk)

## Device identifier. This must come after all inclusions
PRODUCT_DEVICE := S939
PRODUCT_NAME := cm_S939
PRODUCT_BRAND := Lenovo
PRODUCT_MODEL := S939
PRODUCT_MANUFACTURER := Lenovo
~/cm11/device/Lenovo/S939/recovery.fstab

 Cita:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK

/dev/bootimg /bootimg emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
/emmc@android /system ext4 ro,noatime wait
/emmc@cache /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/emmc@usrdata /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer

/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto vfat defaults voldmanaged=sdcard0:4 <- Change accordingly to your MTK fat partition no.
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto vfat defaults voldmanaged=sdcard1:auto
~/cm11/device/Lenovo/S939/device_S939.mk

 Cita:
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)

# The gps config appropriate for this device
#$(call inherit-product, device/common/gps/gps_us_supl.mk) <- Disable it to use this Part-Source or ERROR 1.

$(call inherit-product-if-exists, vendor/Lenovo/S939/S939-vendor.mk)

DEVICE_PACKAGE_OVERLAYS += device/Lenovo/S939/overlay

LOCAL_PATH := device/Lenovo/S939
ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(LOCAL_PATH)/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif

PRODUCT_COPY_FILES +=
$(LOCAL_KERNEL):kernel

$(call inherit-product, build/target/product/full.mk)

PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
PRODUCT_NAME := full_S939
PRODUCT_DEVICE := S939

#PhilZ Touch
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/recovery.fstab:recovery/root/fstab.mt6592 <- adb shell getprop ro.hardware to identify it.
~/cm11/device/Lenovo/S939/boot.mk
Credits to Chris Hoffmann AKA RD chrmhoffmann , now you can automate the whole build process, no need to unpack/ repack after building !

 Cita:
define make_header
perl -e 'print pack("a4 L a32 a472", "x88x16x88x58", $$ARGV[0], $$ARGV[1], "xFF"x472)' $(1) $(2) > $(3)
endef

$(recovery_ramdisk).mtk.header: $(recovery_ramdisk)
size=$$($(call get-file-size,$(recovery_ramdisk))); \
$(call make_header, $$((size)), "RECOVERY", $@)
$(recovery_ramdisk).mtk: $(MKBOOTIMG) $(recovery_ramdisk).mtk.header
$(call pretty,"Adding MTK header to recovery ramdisk.")
cat $(recovery_ramdisk).mtk.header $(recovery_ramdisk) > $@

INTERNAL_MTK_RECOVERYIMAGE_ARGS := \
--kernel $(PRODUCT_OUT)/kernel \
--ramdisk $(recovery_ramdisk).mtk

$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTIMG) \
$(recovery_ramdisk).mtk $(PRODUCT_OUT)/kernel \
@echo -e ${CL_CYN}"----- Making recovery image ------"${CL_RST}
$(MKBOOTIMG) $(INTERNAL_MTK_RECOVERYIMAGE_ARGS) \
$(BOARD_MKBOOTIMG_ARGS) --output $@
$(hide) $(call assert-max-image-size,$@, \
$(BOARD_RECOVERYIMAGE_PARTITION_SIZE),raw)
@echo -e ${CL_CYN}"Made recovery image: $@"${CL_RST}
PASO 4

Start Building it !


Below are the commands to build, thats it !

 Cita:
cd ~/cm11
export USE_CCACHE=1
prebuilts/misc/linux-x86/ccache/ccache -M 50G
source build/envsetup.sh
lunch cm_S939-eng <- Change accordingly to your device_name
make -j8 recoveryimage


Misc Tips

First build will take quite awhile, pls be patient however subsequence build will be quick b'cos of ccache .

if you hate cli like i do then you can automate it, no need to type it every time since you are building for the same device that you own.

Click image for larger version

Name: s939.png
Views: 887
Size: 30.3 KB
ID: 2935830

Use geany & fill in the commands accordingly to your device.

Click image for larger version

Name: execute.png
Views: 801
Size: 37.3 KB
ID: 2935831
Make it executable by right-click at the file name -> Properties -> Permissions -> Put a Tick at Allow executing file as program. Execute it by typing ./s939 or whatever your file name is.

GNU make

GNU make can handle parallel tasks with a -j# argument.

 Cita:
make -j# recoveryimage
Replace the # with the core count +1, so if you have a dual core it's -j3 and a quad core becomes -j5, etc.

Above is applicable for Native-Boot, on Virtualbox -j8 will work even if you have the old Pentium II except your host OS will lag.

 Cita:
make -j8 recoveryimage 2>&1 | tee ~/Documents/compile.log
You can also use above command so that you can refer to the compile.log for error checking.

Subsequent Build

Refer to post #2 -> Misc Tips -> Make clean before each recompiling or your flag changes will not be picked up !


PASO 5

Push it directly to your device


Screenshot of Build Completed
Click image for larger version

Name: complete.png
Views: 1060
Size: 120.0 KB
ID: 2920729

Screenshot of adb push
Click image for larger version

Name: push.png
Views: 990
Size: 34.8 KB
ID: 2920732

 Cita:
adb push ~/cm11/out/target/product/S939/recovery.img /mnt/sdcard
adb shell "dd if=/mnt/sdcard/recovery.img of=/dev/recovery"
adb reboot recovery
Misc Tips

You can also use Flashify or Mobileuncle to install it too.
Congrats, now you have compiled & install PhilZ Touch to your MTK device . . .

Notes about 4.4 Kit Kat ROMs and SELinux

XDA members that has success in building PhilZ Touch for any other android devices please share your experience & tips here too so that this will help out others when they face the same problem . . .

Source

Confirmed working PhilZ Touch using this guide(mkvendor.sh technique)

Todos los dispositivos MediaTek(MT65xx) o los dispositivos MediaTek(MT83xx)
LG L90(msm8226) thanks to shoxxy


Ya también recuerdo que se puede usar autentificación para nuestras cosas, y así tener más seguridad por si usamos VPN o una IP que usen muchos clientes ( servidores remotos con múltiples clientes con la misma IP ):

Ya pendiente seguir a partir de esto para continuar con las opciones: - Pendiente traducir

https://source.android.com/source/do...authentication

Y aquí el hilo si queremos compilar un TWRP, que falta reducirlo también, [DEV]How to compile TWRP touch recovery

(Click para mostrar/ocultar)
All of TWRP 2.x source is public. You can compile it on your own. This guide isn't going to be a step-by-step, word-for-word type of guide. If you're not familiar with basic Linux commands and/or building in AOSP then you probably won't be able to do this.

You can currently use Omni 4.3, Omni 4.4, Omni 5.0, CM10.0, CM10.1, CM10.2, and CM11.0 source code. Omni 4.4 or 5.0 is recommended. (If for some reason you need to compile in an older tree like CM9 or CM7, you will have to use the android-4.4 branch which we will not continue to update.)

If you are using CM, you'll need to replace CM/bootable/recovery with this:
https://github.com/omnirom/android_bootable_recovery
Select the newest branch available. This step is not necessary with Omni because Omni already includes TWRP source by default.

*BEFORE YOU COMPILE*
Note: If you add or change any flags, you will need to make clean or make clobber before recompiling or your flag changes will not be picked up.

Now that you have the source code, you'll need to set or change a few build flags for your device(s). Find the BoardConfig.mk for your device. The BoardConfig.mk is in your devices/manufacturer/codename folder (e.g. devices/lge/hammerhead/BoardConfig.mk). First, scan the BoardConfig.mk file for
TARGET_RECOVERY_INITRC :=
If your device has this line, it will have a path to a custom, prebuilt init.rc that is used in recovery. Most likely you will need to change the custom init.rc slightly. Find the recovery's init.rc file and open it. Near the top you will see something like this:
Code:
on init

 Cita:
$ export PATH /sbin
 Cita:
$ export LD_LIBRARY_PATH .:/sbin
Add the last line needed. This line is needed to get the linker running. Unlike ClockworkMod, TWRP is a dynamically linked recovery. Dynamic linking allows us to save a considerable amount of space to help make sure that TWRP recovery images will fit on more devices. It also lets us use dynamically linked touchscreen binaries as seen on the Motorola Photon and Atrix and the HP TouchPad without having to mount /system.

Your board config also needs to include architecture and platform settings. Usually these are already included if you're using device configs that someone else created, but if you created your own, you may need to add them. Without them, recovery may seg fault during startup and you'll just see the teamwin curtain flash on the screen over and over.

We usually put all of our flags at the bottom of the BoardConfig.mk under a heading of #twrp For all devices you'll need to set a resolution. TWRP needs to know the resolution at compile time so that it knows what stock theme to include. You can only use resolutions that have a theme so if you don't see your resolution, you'll have to pick one that's less than or equal to your resolution. You can find the list of stock themes in bootable/recovery/gui/devices. So if your device has a 540x960 display, you would add this:
DEVICE_RESOLUTION := 540x960

Note that themes do not rotate, so the 1280x800 theme is intended for tablets and would not work on the Samsung Galaxy Note 1 that expects a 800x1280 type of theme.

In addition to the resolution, we have the following build flags:
RECOVERY_SDCARD_ON_DATA := true -- this enables proper handling of /data/media on devices that have this folder for storage (most Honeycomb and devices that originally shipped with ICS like Galaxy Nexus)
RECOVERY_GRAPHICS_USE_LINELENGTH := true -- fixes slanty looking graphics on some devices
BOARD_HAS_NO_REAL_SDCARD := true -- disables things like sdcard partitioning and may save you some space if TWRP isn't fitting in your recovery patition
TW_INCLUDE_DUMLOCK := true -- includes HTC Dumlock for devices that need it
TW_NO_BATT_PERCENT := true -- disables the display of the battery percentage for devices that don't support it properly
TW_CUSTOM_POWER_BUTTON := 107 -- custom maps the power button for the lockscreen
TW_NO_REBOOT_BOOTLOADER := true -- removes the reboot bootloader button from the reboot menu
TW_NO_REBOOT_RECOVERY := true -- removes the reboot recovery button from the reboot menu
TW_NO_USB_STORAGE := true -- removes the USB storage button on devices that don't support USB storage
RECOVERY_TOUCHSCREEN_SWAP_XY := true -- swaps the mapping of touches between the X and Y axis
RECOVERY_TOUCHSCREEN_FLIP_Y := true -- flips y axis touchscreen values
RECOVERY_TOUCHSCREEN_FLIP_X := true -- flips x axis touchscreen values
TW_ALWAYS_RMRF := true -- forces the rm -rf option to always be on (needed for some Motorola devices)
TW_NEVER_UNMOUNT_SYSTEM := true -- never unmount system (needed for some Motorola devices)
TW_INCLUDE_INJECTTWRP := true -- adds ability to inject TWRP into some Samsung boot images for Samsung devices that have recovery as a second ramdisk in the boot image
TW_DEFAULT_EXTERNAL_STORAGE := true -- defaults to external storage instead of internal on dual storage devices (largely deprecated)
TWRP_EVENT_LOGGING := true -- enables touch event logging to help debug touchscreen issues (don't leave this on for a release - it will fill up your logfile very quickly)

Here's some flags that may help you, but are not specific to TWRP (works in CWM too):
This flag has multiple options, but can be used to set different graphics modes that may be need to correct color space issues on some devices:
TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGB_565"

BOARD_HAS_FLIPPED_SCREEN := true -- flips the screen upside down for screens that were mounted upside-down
TARGET_PREBUILT_RECOVERY_KERNEL := path/to/kernel -- use to specify a kernel specifically for building recovery

*RECOVERY.FSTAB*
TWRP 2.5 and higher supports some new recovery.fstab features that you can use to extend TWRP's backup/restore capabilities. You do not have to add fstab flags as most partitions are handled automatically.

Note that TWRP does not currently support the "fstab 2" version of fstab files seen in 4.3 or higher. You will still need to use the "old" format of fstab for TWRP (example of that format is below). To maximize TWRP's compatibility with your build tree, you can create a twrp.fstab and use PRODUCT_COPY_FILES to place the file in /etc/twrp.fstab When TWRP boots, if it finds a twrp.fstab in the ramdisk it will rename /etc/recovery.fstab to /etc/recovery.fstab.bak and then rename /etc/twrp.fstab to /etc/recovery.fstab. Effectively this will "replace" the fstab 2 file that your device files are providing with the TWRP fstab allowing you to maintain compatibility within your device files and with other recoveries.
Code:

 Cita:
$ PRODUCT_COPY_FILES += device/lge/hammerhead/twrp.fstab:recovery/root/etc/twrp.fstab
The fstab in TWRP can contain some "flags" for each partition listed in the fstab.

Here's a sample TWRP fstab for the Galaxy S4 that we will use for reference:
Code:

 Cita:
/boot emmc /dev/block/platform/msm_sdcc.1/by-name/boot
/system ext4 /dev/block/platform/msm_sdcc.1/by-name/system
/data ext4 /dev/block/platform/msm_sdcc.1/by-name/userdata length=-16384
/cache ext4 /dev/block/platform/msm_sdcc.1/by-name/cache
/recovery emmc /dev/block/platform/msm_sdcc.1/by-name/recovery
/efs ext4 /dev/block/platform/msm_sdcc.1/by-name/efs flags=display="EFS";backup=1
/external_sd vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1 flags=display="Micro SDcard";storage;wipeingui;removable
/usb-otg vfat /dev/block/sda1 /dev/block/sda flags=display="USB-OTG";storage;wipeingui;removable
/preload ext4 /dev/block/platform/msm_sdcc.1/by-name/hidden flags=display="Preload";wipeingui;backup=1
/modem ext4 /dev/block/platform/msm_sdcc.1/by-name/apnhlos
/mdm emmc /dev/block/platform/msm_sdcc.1/by-name/mdm
Flags are added to the end of the partition listing in the fstab separated by white space (spaces or tabs are fine). The flags affect only that partition but not any of the others. Flags are separated by semicolons. If your display name is going to have a space, you must surround the display name with quotes.
Code:

 Cita:
$ /external_sd vfat /dev/block/mmcblk1p1 flags=display="Micro SDcard";storage;wipeingui;removable
The flags for this partition give it a display name of "Micro SDcard" which is displayed to the user. wipeingui makes this partition available for wiping in the advanced wipe menu. The removable flag indicates that sometimes this partition may not be present preventing mounting errors from being displayed during startup. Here is a full list of flags:
removable -- indicates that the partition may not be present preventing mounting errors from being displayed during boot
storage -- indicates that the partition can be used as storage which makes the partition available as storage for backup, restore, zip installs, etc.
settingsstorage -- only one partition should be set as settings storage, this partition is used as the location for storing TWRP's settings file
canbewiped -- indicates that the partition can be wiped by the back-end system, but may not be listed in the GUI for wiping by the user
userrmrf -- overrides the normal format type of wiping and only allows the partition to be wiped using the rm -rf command
backup= -- must be succeeded by the equals sign, so backup=1 or backup=0, 1 indicates that the partition can be listed in the backup/restore list while 0 ensures that this partition will not show up in the backup list.
wipeingui -- makes the partition show up in the GUI to allow the user to select it for wiping in the advanced wipe menu
wipeduringfactoryreset -- the partition will be wiped during a factory reset
ignoreblkid -- blkid is used to determine what file system is in use by TWRP, this flag will cause TWRP to skip/ignore the results of blkid and use the file system specified in the fstab only
retainlayoutversion -- causes TWRP to retain the .layoutversion file in /data on devices like Sony Xperia S which sort of uses /data/media but still has a separate /sdcard partition
symlink= -- causes TWRP to run an additional mount command when mounting the partition, generally used with /data/media to create /sdcard
display= -- sets a display name for the partition for listing in the GUI
storagename= -- sets a storage name for the partition for listing in the GUI storage list
backupname= -- sets a backup name for the partition for listing in the GUI backup/restore list
length= -- usually used to reserve empty space at the end of the /data partition for storing the decryption key when Android's full device encryption is present, not setting this may lead to the inability to encrypt the device
canencryptbackup= -- 1 or 0 to enable/disable, makes TWRP encrypt the backup of this partition if the user chooses encryption (only applies to tar backups, not images)
userdataencryptbackup= -- 1 or 0 to enable/disable, makes TWRP encrypt only the userdata portion of this partition, certain subfuldes like /data/app would not be encrypted to save time
subpartitionof= -- must be succeeded by the equals sign and the path of the partition it is a subpartition of. A subpartition is treated as "part" of the main partition so for instance, TWRP automatically makes /datadata a subpartition of /data. This means that /datadata will not show up in the GUI listings, but /datadata would be wiped, backed up, restored, mounted, and unmounted anytime those operations are performed on /data. A good example of the use of subpartitions is the 3x efs partitions on the LG Optimus G:
Code:

 Cita:
/efs1 emmc /dev/block/mmcblk0p12 flags=backup=1;display=EFS
/efs2 emmc /dev/block/mmcblk0p13 flags=backup=1;subpartitionof=/efs1
/efs3 emmc /dev/block/mmcblk0p14 flags=backup=1;subpartitionof=/efs1
This lumps all 3 partitions into a single "EFS" entry in the TWRP GUI allowing all three to be backed up and restored together under a single entry.

If you have questions, feel free to stop by #twrp on Freenode. If you post here I may not see it for a while as I have lots of threads out there and there's no way for me to keep track of them all. If you successfully port TWRP to a new device, please let us know! We love to hear success stories!

If you have code changes that you'd like to submit, please submit them through the Omni Gerrit server. Guide is here.

Once you get Omni or CM sync'ed and your TWRP flags set, you should do a source ./build/envsetup.sh We usually lunch for the device in question, so something like "lunch omni_hammerhead-eng".

After you lunch successfully for your device this is the command used for most devices:
Code:

 Cita:
$ make clean && make -j# recoveryimage
Replace the # with the core count +1, so if you have a dual core it's -j3 and a quad core becomes -j5, etc. If you're dealing with a "typical" Samsung device, then you'll need to
Code:

 Cita:
$ make -j# bootimage
Most Samsung devices have the recovery included as an extra ramdisk in the boot image instead of a separate recovery partition as found on most other devices.

Notes about 4.4 Kit Kat ROMs and SELinux
There's absolutely no SELinux support in ICS trees or older. libselinux is not included in these trees and some dependencies for libselinux don't exist elsewhere in these older trees so there's no way to get SELinux support unless you move to a newer tree. I recommend using a 4.3 based tree or higher.

SELinux support is included in all builds of TWRP so long as you build in a tree that has libselinux present. However, for SELinux support to work, your kernel must support EXT4 security labels as well. If you're using an older kernel, your TWRP won't support SELinux and you will get errors when installing 4.4 Kit Kat ROMs due to set_metadata not being able to set SELinux contexts. You'll see an error in the recovery log stating something along the lines of "Operation not supported on transport endpoint." This means you need to add proper support to the kernel you are using in recovery. (Yes, at least in most cases, recovery has its own kernel.)

In the kernel source I was testing, the needed flag was CONFIG_EXT4_FS_SECURITY=y and the option was called Ext4 Security Labels under the file systems menu. If you want full SELinux in your kernel you will need to add auditing support (usually found under general setup) then enable SELinux under security options. There's multiple flags and some dependencies involved so your setup may vary slightly.

The android-4.4 branch of TWRP from Omni now includes a check during boot. You will see text in the log and in the console indicating the SELinux status. This should help you identify what issue(s) you may have with SELinux support.

Deprecated build flags:
For TWRP < 2.5:
The below is how you can add custom / special partitions to the list of partitions available for backup. The SP1_NAME must match the name of a partition defined in recovery.fstab. The SP1_DISPLAY_NAME is the name displayed on the backup page if it needs to be different than SP1_NAME. SP1_BACKUP_METHOD defines how the partition should be backed up (files or image). And SP1_MOUNTABLE determines if the partition can be mounted.
SP1_NAME := "pds"
SP1_BACKUP_METHOD := files
SP1_MOUNTABLE := 1
SP2_NAME := "osh"
SP2_DISPLAY_NAME := "Webtop"
SP2_BACKUP_METHOD := files
SP2_MOUNTABLE := 1
SP3_NAME := "preinstall"
SP3_BACKUP_METHOD := image
SP3_MOUNTABLE := 0


Y ya de paso una buena opción para probarlo sin arriesgar nuestro dispositivo puede ser con esto ( sigue faltandome traducirlo ):

(Click para mostrar/ocultar)
You can now boot TWRP in an emulator. If you're trying to help develop TWRP, this can be a huge help as you don't have to risk your device and you can do everything directly on your computer.


Download this set of device configuration files

Compile a recoveryimage using those device files. In the Android SDK, click on Tools -> Manage AVDs. Click New. Set it up as the following:
AVD Name: TWRP
Device: Galaxy Nexus
Target: ICS or newer though anything will probably work here
CPU: ARM (armeabi-v7a)
Check the box for hardware keyboard (your computer's keyboard will work in TWRP)
Up to you if you want to have the skin with controls present
Front Camera: None
Back Camera: None
RAM: 1024 VM Heap: 64
Internal Storage: 200
SD Card: Size: 500 MiB

Then click OK.

Once you have your AVD and your recoveryimage, you can boot TWRP in the emulator by browsing to your android-sdk/tools folder and run this command:
./emulator -avd TWRP -ramdisk CMFOLDER/out/target/product/twrp/ramdisk-recovery.img

Note that ADB doesn't work right away. About 10 to 15 seconds after TWRP finishes booting, ADB will come online. We start ADB via init.rc so even if TWRP fails to boot due to some kind of code error that you may have made, ADB should still work. Enjoy!
__________________
Xiaomi Mi 8 256GB Azul Chino
Huawei MediaPad M3 8,4" BTV-W09 + microSD 128 GB's
Galaxy Note GT-N7000
(Click para mostrar/ocultar)

DEAD's LG V10 H961N + microSD 128GB's — Nvidia Shield Tablet K1 — BQ E10 kaito-wifi

Última edición por fusionero Día 26/01/15 a las 20:38:52.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a fusionero su comentario:
  #3  
Viejo 14/01/15, 04:07:28
Array

[xs_avatar]
fusionero fusionero no está en línea
Usuario muy activo
 
Fecha de registro: abr 2014
Localización: Elche
Mensajes: 1,484
Modelo de smartphone: Xiaomi Mi8 256GB/GT-N7000/MediaPad M3 8,4"
Tu operador: Amena
reservado

Como hacer un .zip con el kernel/recovery creado para instalar a través del recovery original o ya cambiado por uno de los 4 que hay en opciones por ahora:

Como hacer un zip flasheable (update.zip|Amend|Edify|firmas)

(Click para mostrar/ocultar)
Muchas veces para aplicar parches o cambios al sistema se nos otorgan archivos zipeados que están hechos para poder ser flasheados desde el custom recovery (Amon-Ra, ClockWorkMod, TWRP, etc.), hacer estos archivos no es difícil y son muy prácticos cuando se requieren hacer pequeños cambios. En este tuto primero voy a explicar de dónde viene esta funcionalidad y realizaremos un ejemplo simple, cabe decir que todo lo que esta acá esta en base a lo que he venido deduciendo, experimentando y leyendo en varios sitios.

El flasheo de estos zips es una función nativa de la partición recovery y está hecha con el fin de realizar actualizaciones en el sistema, originalmente llamados update.zip son usados por los fabricantes para realizar los upgrades al sistema o parches de seguridad. En el 2008 cuando salió el G1 y se logro el acceso root, los devs accesaron a esta partición, la modificaron creando los custom recoverys y aprovecharon esta funcionalidad para realizar cambios al sistema o reemplazarlo por completo (Custom ROMs).

El zip contiene un archivo con instrucciones que indican como el recovery debe realizar el flasheo, estas instrucciones están escritas en un formato (o lenguaje) creado por Google, la primera versión se llamó Amend que fue usado en Android 1.0 y 1.5, luego de eso Google removió Amend y a partir de Donut (1.6) se empezó a usar Edify que es la versión actual de ese lenguaje de instrucciones.

La diferencia más saltante entre ambos formatos es que en Amend el archivo de instrucciones se llama update-script y el lenguaje es parte del recovery, mientras que en Edify el archivo se llama updater-script y así mismo se requiere un archivo update-binary que contiene el lenguaje compilado. A mi parecer Amend es más sencillo y básico mientras que Edifiy es más elaborado y algo complejito en la forma de realizar las instrucciones, si bien Amend fue descontinuado aún se continua usando por varios devs mas que todo debido a su simplicidad y que aun hay equipos con recoverys de fabrica que leen Amend, pero actualmente solo el Custom Recovery de Amon-Ra lo sigue soportando, ClockWorkMod no lo soporta desde su versión 3 y otros recoverys que vienen saliendo ya no lo consideran al estar solo Edify en el código fuente del recovery. Para efectos del tuto mostrare ambos formatos pero siempre es más recomendable usar Edify.

Ahora vamos al ejemplo de cómo crear un zip flasheable, para el caso vamos a crear un zip que realice algunas funciones básicas:

- Borrar el archivo "01ejemplo" de la ruta system/etc/init.d
- Copiar el archivo "gps.conf" en la ruta system/etc/ y la app de sistema "app.apk" en la ruta system/app
- Asignar permisos a "app.apk"
- Crear el directorio "ejemplo" en la SD y dentro de este habrá un archivo ejemplo.txt

Primero en nuestro ambiente de trabajo (una carpeta cualquiera en la PC) creamos una carpeta llamada "META-INF" y dentro de esta creamos la siguiente ruta de subdirectorios: com\google\android\ , es en esta ruta donde va a ir el archivo con instrucciones, pero la creación de esto lo dejaremos para el final.

Luego replicamos las rutas de lo que queremos meter en el sistema, para eso creamos la carpeta "system" con las carpetas "etc/init.d" y "app" dentro y dentro de estas los archivos gps.conf y app.apk, así mismo creamos la carpeta "sdcard" dentro de esta creamos la carpeta "ejemplo" y dentro de esta ponemos el archivo ejemplo.txt, finalmente el árbol debería quedar así:

 Cita:
[PHP] -META-INF
|-com
|-google
|-android
-system
|-etc
|-init.d/
|-gps.conf
|-app
|-app.apk
-sdcard
|-ejemplo
|-ejemplo.txt
[/PHP]
Ahora viene la parte de crear el archivo de instrucciones, como se indico usaremos ambos lenguajes empezando por Amend:

Amend

Creamos un archivo de texto simple, lo llamamos update-script y lo colocamos en la ruta META-INF\com\google\android\ con las siguientes instrucciones:

Esta línea crea la barra de progreso (opcional):
 Cita:
show_progress 0.1 0
Esta línea borra el archivo 01ejemplo de la ruta system/ect/init.d/:
 Cita:
delete SYSTEM:etc/init.d/01ejemplo
Esta línea copia los contenidos de la carpeta system dentro de las rutas indicadas en el archivo, si ya hay un archivo con ese nombre, será sobrescrito:
 Cita:
copy_dir PACKAGE:system SYSTEM:
Esta línea asigna los permisos correspondientes al archivo flasheado, el tipo de permiso depende mucho del sistema, los que se indica en el ejemplo (0 0 0644) son los que se deben asignar a las apps de sistema, la mejor manera de saber que permisos requiere cada archivo es mirando que permisos tienen los otros archivos de la misma carpeta:
 Cita:
set_perm 0 0 0644 SYSTEM:app/app.apk
Esta línea copia los contenidos de la carpeta sdcard en la raíz de la SD, si ya hay un archivo con ese nombre, será sobrescrito:
 Cita:
copy_dir PACKAGE:sdcard SDCARD:
Esta línea cierra la barra de progreso(opcional):
 Cita:
show_progress 0.1 10
Adicionalmente hay que dejar una línea en blanco luego de la última instrucción, el archivo debe quedar de esta manera:
 Cita:
show_progress 0.1 0
delete SYSTEM:etc/init.d/01ejemplo
copy_dir PACKAGE:system SYSTEM:
set_perm 0 0 0644 SYSTEM:app/app.apk
copy_dir PACKAGE:sdcard SDCARD:
show_progress 0.1 10
luego grabar y cerrar.

Edify

Creamos un archivo de texto simple, lo llamamos updater-script y lo colocamos en la ruta META-INF\com\google\android\ con las siguientes instrucciones:

Esta línea crea la barra de progreso (opcional):
 Cita:
show_progress(0.1, 0);
Esta línea monta la partición SYSTEM:
 Cita:
mount("MTD", "system", "/system");
Esta línea monta la partición SDCARD:
 Cita:
mount("MTD", "sdcard", "/sdcard");
Esta línea borra el archivo 01ejemplo de la ruta system/ect/init.d/:
 Cita:
delete("/system/etc./init.d/10ejemplo")
Esta línea copia los contenidos de la carpeta system dentro de las rutas indicadas en el archivo, si ya hay un archivo con ese nombre, será sobrescrito:
 Cita:
package_extract_dir("system", "/system");
Esta línea asigna los permisos correspondientes al archivo flasheado, el tipo de permiso depende mucho del sistema, los que se indica en el ejemplo (0 0 0644) son los que se deben asignar a las apps de sistema, la mejor manera de saber que permisos requiere cada archivo es mirando que permisos tienen los otros archivos de la misma carpeta:
 Cita:
set_perm(0, 0, 0644, "/system/app/app.apk");
Esta línea copia los contenidos de la carpeta sdcard en la raíz de la SD, si ya hay un archivo con ese nombre, será sobrescrito:
 Cita:
package_extract_dir("sdcard", "/sdcard")
Esta línea desmonta la partición SYSTEM:
 Cita:
unmount("/system");
Esta línea desmonta la partición SDCARD:
 Cita:
unmount("/sdcard");
Esta línea cierra la barra de progreso(opcional):
 Cita:
show_progress(0.1, 10);
Adicionalmente hay que dejar una línea en blanco luego de la última instrucción, el archivo deberá quedar de esta manera:
 Cita:
show_progress(0.1, 0);
mount("MTD", "system", "/system");
mount("MTD", "sdcard", "/sdcard");
delete("/system/etc/init.d/10ejemplo");
package_extract_dir("system", "/system");
set_perm(0, 0, 0644, "/system/app/app.apk");
package_extract_dir("sdcard", "/sdcard");
unmount("/system");
unmount("/sdcard");
show_progress(0.1, 10);
Luego grabar y cerrar, adicionalmente Edify requiere de un archivo update-binary, la forma más práctica de obtener este archivo es abrir el zip de alguna ROM para tu equipo y copiarlo de la ruta META-INF\com\google\android\

Como se ve Edify tiene una sintaxis más compleja y requiere que se monten primero las particiones, un tip sobre Edify es que tiene un comando que permite mostrar mensajes en el recovery, para esto se usa el comando ui_print, por ejemplo si quisiéramos mostrar el mensaje "Borrando el archivo 10ejemplo" antes de ejecutar esa acción, tendríamos que insertar esta línea antes del la línea con el comando "delete":
 Cita:
ui_print("Borrando el archivo 10ejemplo");
Cualquiera que sea el método que deseemos usar para el archivo de instrucciones hay que recordar que solo podemos usar uno de ellos y que él/los archivo/s van dentro de la ruta META-INF\com\google\android\

Tomando el caso que usáramos Edify nuestro árbol de carpetas quedaría así:

 Cita:
[PHP] -META-INF
|-com
|-google
|-android
|-update-binary
|-updater-script
-system
|-etc
|-init.d/
|-gps.conf
|-app
|-app.apk
-sdcard
|-ejemplo
|-ejemplo.txt[/PHP]
Luego procedemos a zipear las tres carpetas con todo su contenido con algún nombre y ahora se procede a firmar.

Firma digital

La firma digital se genera vía java, es un mecanismo de seguridad de que los archivos en el zip son correctos y que no se hayan corrompido durante la descarga, los custom recovery como Amon-Ra permiten desactivar la verificación de firmas y otros como el ClockWorkMod ni siquiera la revisan, de todas maneras si desean firmar sus zips las opciones más simples a mi parecer son dos:

- HTC kitchen .- La cocina de ROMs tiene una opción de firma de zips, para eso solo vamos a la opción 0, luego la opción 22, luego la opción z, esto crea una carpeta sign_files_XXX_XXXX, ponemos el zip dentro de esta carpeta y presionamos Enter, la cocina lo firmara y dejara el archivo con la palabra signed en la carpeta.

Cualquiera de estas dos opciones requiere tener el JDK instalado para su uso.

Una vez firmado el zip esta listo para flashearlo, solo queda ponerlo en la SD y realizar el flasheo vía recovery.

Un par de últimos consejos por si desean experimentar, primero siempre hagan un nandroid backup antes de flashear cualquier cosa y segundo que la mejor forma de aprender sobre esto es abriendo los zips y chequeando el update/r-script.

Creador del tutorial RoQ


Este hilo por si le puedo sacar utilidad a los pasos 3 y 4 o se hace sin esa necesidad, aunque para dispositivos sin sources si que se necesitaría por ejemplo el paso 3 que viene bien ante actualizaciones que no se tengan esas nuevas caracteristicas en ningún github:

[Tutorial] Compila tu primer Kernel [EXPLICADO]
__________________
Xiaomi Mi 8 256GB Azul Chino
Huawei MediaPad M3 8,4" BTV-W09 + microSD 128 GB's
Galaxy Note GT-N7000
(Click para mostrar/ocultar)

DEAD's LG V10 H961N + microSD 128GB's — Nvidia Shield Tablet K1 — BQ E10 kaito-wifi

Última edición por fusionero Día 02/02/15 a las 11:39:14.
Responder Con Cita
  #4  
Viejo 14/01/15, 04:10:12
Array

[xs_avatar]
fusionero fusionero no está en línea
Usuario muy activo
 
Fecha de registro: abr 2014
Localización: Elche
Mensajes: 1,484
Modelo de smartphone: Xiaomi Mi8 256GB/GT-N7000/MediaPad M3 8,4"
Tu operador: Amena
2º reservado

Adaptar instrucciones de este hilo a Linux, ya que no usamos Windows en este tuto:

Tienes un MTK y quieres empezar a cocinar entra aqui
__________________
Xiaomi Mi 8 256GB Azul Chino
Huawei MediaPad M3 8,4" BTV-W09 + microSD 128 GB's
Galaxy Note GT-N7000
(Click para mostrar/ocultar)

DEAD's LG V10 H961N + microSD 128GB's — Nvidia Shield Tablet K1 — BQ E10 kaito-wifi

Última edición por fusionero Día 14/01/15 a las 04:32:51.
Responder Con Cita
  #5  
Viejo 14/01/15, 04:10:49
Array

[xs_avatar]
fusionero fusionero no está en línea
Usuario muy activo
 
Fecha de registro: abr 2014
Localización: Elche
Mensajes: 1,484
Modelo de smartphone: Xiaomi Mi8 256GB/GT-N7000/MediaPad M3 8,4"
Tu operador: Amena
3º reservado

Pendiente la traducción de este hilo para dexodear la Rom con una CPU MT6592:

http://www.telefoninostop.com/forum/...om-mt6592.html

Y añadir más cosas como este hilo:

[SCRIPTS] Unpack / repack MT65xx/MT83xx boot.img, recovery.img or logo.bin
__________________
Xiaomi Mi 8 256GB Azul Chino
Huawei MediaPad M3 8,4" BTV-W09 + microSD 128 GB's
Galaxy Note GT-N7000
(Click para mostrar/ocultar)

DEAD's LG V10 H961N + microSD 128GB's — Nvidia Shield Tablet K1 — BQ E10 kaito-wifi

Última edición por fusionero Día 15/01/15 a las 07:48:00.
Responder Con Cita
  #6  
Viejo 14/01/15, 08:44:43
Array

[xs_avatar]
luisetex84 luisetex84 no está en línea
Miembro del foro
 
Fecha de registro: nov 2013
Localización: Barcelona
Mensajes: 105
Modelo de smartphone: One Plus 3
Tu operador: Pepephone
Me he leído el post en diagonal ya que estoy en el curro y te comento algunas cosillas de memoria ya que no puedo comprobarlo del todo:

- Requisito imprescindible: para compilar android se necesita una cpu de 64 bits. Creo que desde ICS se necesita, para versiones anteriores una de 32 bits nos valdría.

 Cita: Originalmente Escrito por fusionero Ver Mensaje
Configuramos el acceso usb ADB:
 Cita:
Pendiente, no lo he conseguido por ahora
1. Si no lo has hecho antes, ejecuta 'adb devices' para iniciar el demonio de adb. Se creará una carpeta oculta en tu directorio home llamada .android, si no existía ya. El problema que no te reconozca la tablet es que Linux no sabe el id del fabricante. Vamos a obtenerlo.

2. Sin conectar la tablet al pc ejecuta:
lsusb1.jpg
Conecta la tablet al pc y vuelve a ejecutar de nuevo comando.
lsusb2.jpg
Compara el resultado con la ejecución anterior y el dispositivo que aparezca nuevo es la tablet. Apunta los cuatro dígitos después de ID y antes de los dos puntos, el del recuadro rojo es un ejemplo. Este es el idVendor.

3. En la carpeta .android de tu home, busca el fichero adb_usb.ini . Se debe añadir el idVendor al fichero. Si no existiera, crealo y añade esto:
0x{idVendor} ->>>> siguiendo el ejemplo 0x0bb4

4. Mata el demonio de adb para que al volver a iniciarlo y que coja la nueva configuración:
adb kill-server

5. adb devices

 Cita: Originalmente Escrito por fusionero Ver Mensaje
Revisamos que tenemos el directorio bin/ en la raíz de nuestro pc, o lo creamos así ( nada más abrir la Terminal, no cambiamos de directorio ):
 Cita:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
Ya de paso recordar que mkdir es para crear carpetas u otro tipo de archivos, pero con sus correspondientes variantes, ya que mk es para crear, y dir especifica que es un directorio/carpeta.

Descargamos la tool/herramienta de la Repo y nos aseguramos de que sea ejecutable:

 Cita:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Estoy habia que hacerlo antiguamente, cuando no existía ningún paquete que contuviera el comando repo. Ahora si que existe uno (por lo menos en Ubuntu 14.04) y es tan sencillo como hacer:
 Cita:
sudo apt-get install phablet-tools
Yo lo que haría es editar el tutorial, poniendo lo del phablet-tools (que es mucho más rápido y sencillo) y en el caso que no exista el paquete, hacer lo que comentabas.
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 15/01/15, 05:52:48
Array

[xs_avatar]
fusionero fusionero no está en línea
Usuario muy activo
 
Fecha de registro: abr 2014
Localización: Elche
Mensajes: 1,484
Modelo de smartphone: Xiaomi Mi8 256GB/GT-N7000/MediaPad M3 8,4"
Tu operador: Amena
Añadidos tus detalles y revisado para que este mejor a la vista, lo malo es que no es posible meter un spoiler dentro de otro, o usar quotes dentro de otros, o descuadra todo apareciendo muchos más y desorganizados, estropeando lo que hago, jeje.

Bueno por lo menos hasta aquí voy por ahora, ya que como he querido añadir todo lo que pueda al final, de todas maneras quiero ponerlo para al menos 3 Recovery's, TWRP, CWM y Philz, que ya sabemos que los sabes hacer luisetex84, jeje, por eso con tús indicaciones esto al final se debe dejar adaptable a todas las CPU's MediaTeck, y si se puede dejar algo para otros modelos de CPU's de otras marcas lo que se pueda, y como tengo un exynos4 puedo readaptar lo necesario para ellos, o con ayuda de otros usaurios a otros modelos de CPU's ( ejemplo SnapDragon ), que lo importante es ya dejar las bases e ir mejorandolo para ser al final un hilo para que este todo para iniciarse y usarlo usuarios de linux, al que pertenezco, y que no le veo casi información al menos en español y en un solo hilo y sin tener que rebuscar en todo el hilo si tiene miles de páginas que ya se hace una locura enterarse de todo y no perder el hilo principal de la tarea, ya que tener que buscar cada cosa por un lado no es eficiente para dar el inicio a todos los posibles cocineros
__________________
Xiaomi Mi 8 256GB Azul Chino
Huawei MediaPad M3 8,4" BTV-W09 + microSD 128 GB's
Galaxy Note GT-N7000
(Click para mostrar/ocultar)

DEAD's LG V10 H961N + microSD 128GB's — Nvidia Shield Tablet K1 — BQ E10 kaito-wifi
Responder Con Cita
  #8  
Viejo 17/06/15, 07:25:07
Array

[xs_avatar]
Necro1280 Necro1280 no está en línea
Miembro del foro
 
Fecha de registro: ago 2012
Mensajes: 469
Modelo de smartphone: Samsung Galaxy Mini S5570I
Tu operador: Movistar
Muyyyyyy buen tutorial, a ver si me animo y me pongo a probar lo que decis, seguiiiiid asiiiii!!!!!

Un Saludo.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Foro Tablets / Laptops > Tablets bq > bq Aquaris E10 > ROMs y desarrollo bq Aquaris E10



Hora actual: 15:25:21 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /