Acceder

Ver la Versión Completa : KITCHEN ROM [KITCHEN] ArchiKitchen - Android Kitchen Continuation (WIP) [Linux]


RaYmunDooo
31/01/14, 16:16:20
https://dl.dropboxusercontent.com/u/23869279/Temp/kitchen.png



ArchiKitchen - Reworked dsixda's Android Kitchen

Commits/Changes -> https://github.com/JustArchi/ArchiKi...commits/master (https://github.com/JustArchi/ArchiKitchen/commits/master)
Source -> https://github.com/JustArchi/ArchiKitchen

Download (https://github.com/JustArchi/ArchiKitchen/archive/master.zip). Of course you can also clone my repository to stay up to date.

************************************************** ******************************************


DEPRECATED dsixda's kitchen continuation

In comparision with latest dsixda's kitchen:

Reworked rooting
Updated SuperSU to v1.92
Added Koush Superuser v1.0.2.8
Removed obsolete ChainsDD superuser + old su
Updated Busybox to 1.22.1
Updated Baksmali/Smali to 2.0.3
Bumped default API level to 18
Added support for deodexing priv-app folder
Added support for Nexus 5
Added support for GT-I9502 (Chinese S4)


Commits/Changes -> https://github.com/JustArchi/ArchiKi...commits/dsixda (https://github.com/JustArchi/ArchiKitchen/commits/dsixda)
Source -> https://github.com/JustArchi/ArchiKitchen/tree/dsixda

Download (https://github.com/JustArchi/ArchiKitchen/archive/dsixda.zip). Of course you can also clone my repository to stay up to date.

All credit goes to dsixda's and his awesome development, I'm only making my best to keep kitchen up-to-date and maybe push development further. Head on to original thread (http://forum.xda-developers.com/showthread.php?t=633246) to learn more. If you want to donate, please donate to dsixda (http://bit.ly/blHTKy).

************************************************** *************************************

Fuente: http://forum.xda-developers.com/showthread.php?t=2597220
JustArchi (http://forum.xda-developers.com/member.php?u=5161352)

mrbojangle69
31/01/14, 16:31:15
Ahora si he preguntado antes de disparar jeje.

Ray, ¿este es el que estás usando para tus trabajos?.

RaYmunDooo
31/01/14, 16:35:14
Ahora si he preguntado antes de disparar jeje.

Ray, ¿este es el que estás usando para tus trabajos?.

No una versión particular con modificaciones. Pero esta kitchen es superior. La testare en Linux esta noche.

lentey
31/01/14, 17:57:28
Esta la uso yo y va fenomenal, incluso con el root en las nuevas bases :thumbup:

RaYmunDooo
31/01/14, 18:45:37
Esta la uso yo y va fenomenal, incluso con el root en las nuevas bases :thumbup:

La colgarón extamente hoy a las (Last edited by JustArchi; Today at 03:49 AM.)

:silbando::silbando:

lentey
31/01/14, 19:01:54
En xda tenia justarchi el enlace al archivo de su github hace un tiempo

mrbojangle69
31/01/14, 19:07:25
Ya decía yo lentey que no encontraba el Kitchen Master en el github de archi. La pena que sólo sea para Linux.

lentey
31/01/14, 20:02:00
Montalo en una maquina virtual que es muy sencillito

padelking
01/02/14, 01:24:03
Perdon por la ignorancia pero esto para que vale? Gracias

lentey
01/02/14, 11:09:39
Basicamente te deja crearte una rom (deodexar, root, zipalign...)

RaYmunDooo
02/02/14, 00:03:41
TRADUCCIÓN del archi (sustituto en esta kitchen del ./menu)


#!/bin/bash

# Copyright 2014 [email protected]
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Initial variables
VERSION="1.0"
TOOLS=(basename dirname clear gcc java perl sed wget od wc cpio zip unzip tar)
ACTIVE_PROJECT=""
MODEMINCLUDED=false
ARCH="arm"
ALIGN=4

clear
echo -n "Por favor, espere"

# Navigate to our folder, even if user didn't execute it from the root dir
cd $(dirname $0)

# Before we begin, make sure that all our tools are available
for TOOL in "${TOOLS[@]}"; do
echo -n "."
if [ -z $(which $TOOL) ]; then
echo "Parece que usted no tiene una de las herramientas requeridas: $ HERRAMIENTA"
echo "Esta comprobación se realiza a través de 'que' comando"
echo "Por favor, instale falta de herramientas y puesta en marcha de la cocina de nuevo"
exit 1
fi
done

# Make sure our tools are executable
chmod -R 755 tools

# Core
PRESS_ENTER() {
read -p "Press [Enter] key to continue..."
}

ROOT_EXECUTE() {
if [ $(whoami) == "root" ]; then
"$@"
else
echo "Se requiere acceso de root! Estoy a punto de ejecutar el comando $ @"
if [ ! -z $(which sudo) ]; then
sudo "$@"
else
su -c "$@"
fi
fi
}

DO_SETPROJECT() {
echo
echo "Actualmente no tiene ningún proyecto activo"
echo "Voy ahora a enumerar todos los proyectos disponibles, que se creó en el pasado"
echo
COUNT=0
for i in $(find . -maxdepth 1 -iname "PROJECT_*" -type d); do
COUNT=$(expr $COUNT + 1)
echo "["$COUNT"] - $(basename $i)"
done
if [ $COUNT -gt 0 ]; then
echo "Encontré $ COUNT proyectos disponibles, y los enumerados anteriormente. Por favor, dime cuál de ellos desea utilizar"
echo "Escribe un n º de proyecto, que se desea activar o ..."
else
echo "Lo sentimos, no encontré ningún proyecto disponible, parece que es necesario crear uno nuevo"
fi
echo
echo "Escribe n para crear un nuevo proyecto"
echo "Escribir x abortar"
echo -n "ELECCIÓN: "
read CHOICE
case "$CHOICE" in
"n")
DO_NEWPROJECT
;;
"x")
exit 0
;;
*)
if [ $CHOICE -gt $COUNT ] || [ $CHOICE -lt 1 ]; then
echo "De error, la selección no válida"
return 1
fi
COUNT=$CHOICE
for i in $(find . -maxdepth 1 -iname "PROJECT_*" -type d); do
COUNT=$(expr $COUNT - 1)
if [ $COUNT -eq 0 ]; then
ACTIVE_PROJECT=$(basename $i)
break
fi
done
if [ -z $ACTIVE_PROJECT ]; then
echo "Error, no ha seleccionado nada"
return 1
else
echo "Aceptar, proyecto activo actual es de $ ACTIVE_PROJECT"
fi
esac
return 0
}

DO_NEWPROJECT() {
clear
echo "Puede crear un nuevo proyecto de esqueleto o un proyecto basado en una gota de base"
echo "En la mayoría de las situaciones que desea extraer de la base, pero el proyecto esqueleto puede ser útil fe para deodexing un conjunto de aplicaciones sólo"
echo
echo "b - Crea desnuda proyecto huesos"
echo "e - Extrae una ROM y utilizar como base de"
read -p "Which one you want to create? [b/e]: " CHOICE
case "$CHOICE" in
"e")
;;
*)
ACTIVE_PROJECT="PROJECT_"
ACTIVE_PROJECT+="$(date '+%m%d%y_%H%M%S')"
echo "Creación desnuda $ ACTIVE_PROJECT"
mkdir -p $ACTIVE_PROJECT/system
return 0
esac
echo "ArchiKitchen actualmente soporta el sistema en formato system.img y system.img.ext4"
echo "Por favor, ponga gota de base adecuada en la carpeta base_drops"
echo "Puede ser system.img independiente (. Ext4) de archivos o un archivo comprimido, que contiene dicho archivo"
echo "¿Está usted listo?"
PRESS_ENTER
SEARCH=true
while ($SEARCH); do
echo "Buscando system.img ..."
SYSTEMDIR=""
SYSTEMFILE=""
for f in $(find base_drops -type f); do
FILE=$(basename $f)
case "$FILE" in
"system.img")
SYSTEMDIR=$(dirname $f)
SYSTEMFILE=$(basename $f)
echo "Encontrado $ SYSTEMDIR / $ SystemFILE, que debe ser el archivo adecuado"
SEARCH=false
break
;;
"system.img.ext4")
SYSTEMDIR=$(dirname $f)
SYSTEMFILE=$(basename $f)
echo "Encontrado $ SYSTEMDIR / $ SystemFILE, que debe ser el archivo adecuado"
SEARCH=false
break
;;
*)
esac
done
if [ -z "$SYSTEMFILE" ]; then
echo "No se han encontrado system.img"
echo
echo "r - actualización"
echo "D - descomprimir uno de los archivos, si debe contener system.img"
echo "x - abortar"
echo -n "ELECCIÓN: "
read CHOICE
case "$CHOICE" in
"r")
clear
;;
"d")
COUNT=0
for i in $(find base_drops/ -type f); do
COUNT=$(expr $COUNT + 1)
echo "["$COUNT"] - $(dirname $i)/$(basename $i)"
done
echo "Por favor, dime qué archivo debe contener system.img"
echo -n "ELECCIÓN: "
read CHOICE
if [ $CHOICE -gt $COUNT ] || [ $CHOICE -lt 1 ]; then
echo "De error, la selección no válida"
exit 1
fi
COUNT=$CHOICE
for i in $(find base_drops/ -type f); do
COUNT=$(expr $COUNT - 1)
if [ $COUNT -eq 0 ]; then
FILE="$i"
break
fi
done
echo "La extracción de todo, desde $ FILE"

# TODO: We should find more universal way for finding out type of the file
tar xvf $FILE -C base_drops/ || unzip $FILE -d base_drops/

if [ $? -ne 0 ]; then
echo "Error, parece que este formato de archivo no sea compatible"
return 1
fi
;;
"x")
return 1
;;
*)
echo "No hay selección válida"
return 1
esac
fi
done

ACTIVE_PROJECT="PROJECT_"
ACTIVE_PROJECT+="$(date '+%m%d%y_%H%M%S')"
echo "Creación de $ PROYECTO ACTIVA"
mkdir -p $ACTIVE_PROJECT/system
cp $SYSTEMDIR/boot.img $ACTIVE_PROJECT/boot.img

# TODO: Support non-ext4 filesystems
FS="ext4"

cp $SYSTEMDIR/$SYSTEMFILE $ACTIVE_PROJECT/system.img
for EXTRA in 'cache.img' 'modem.bin'; do
if [ -e $SYSTEMDIR/$EXTRA ]; then
echo "Encontrado archivo EXTRA $ adicional"
echo "¿Quieres incluir este archivo en tu ROM?"
case "$EXTRA" in
"cache.img")
echo "Este archivo contiene normalmente CSC cosas. Di que sí si no está seguro"
;;
"modem.bin")
echo "Este archivo contiene generalmente de bajo nivel de código binario responsable de conexión móvil. Di no si no está seguro"
;;
*)
esac
echo
read -p "Include? [y/n]: " CHOICE
case "$CHOICE" in
"y")
cp $SYSTEMDIR/$EXTRA $ACTIVE_PROJECT/$EXTRA
;;
*)
esac
fi
done
for PARTITION in 'system.img' 'cache.img'; do
if [ -e $ACTIVE_PROJECT/$PARTITION ]; then
mv -f $ACTIVE_PROJECT/$PARTITION $ACTIVE_PROJECT/$PARTITION.$FS
fi
done

DO_MAKESURE_WEHAVE_SIMG2IMG
DO_SIMG2IMG_ALL
DO_MAKESURE_WEHAVE_METAINF
CHECK_KERNEL
CHECK_MODEM
BUILD_UPDATER_SCRIPT
}

DO_SIMG2IMG_ALL() {
for f in $(find $ACTIVE_PROJECT -maxdepth 1 -type f -iname "*.ext4"); do
echo "Conversión y $ montaje (basename $ f)"
./temp/simg2img $f $f.simg2img
rm -f $f
mkdir -p /tmp/ArchiKitchenLOOP
ROOT_EXECUTE "mount -o loop $f.simg2img /tmp/ArchiKitchenLOOP"
echo "Extraer archivos de $ (basename $ f)"
IMGNAME=$(basename "$f" | cut -d'.' -f1)
case "$IMGNAME" in
"cache")
unzip -q /tmp/ArchiKitchenLOOP/recovery/sec_csc.zip -d $ACTIVE_PROJECT/
# Delete old META-INF
rm -rf $ACTIVE_PROJECT/META-INF
;;
*)
cp -R /tmp/ArchiKitchenLOOP/* $ACTIVE_PROJECT/$IMGNAME/
esac
ROOT_EXECUTE "umount /tmp/ArchiKitchenLOOP"
rm -f $f.simg2img
done
}

CHECK_KERNEL() {
if [ ! -e $ACTIVE_PROJECT/META-INF/com/google/android/updater-script ] || ([ $(grep -i "boot.img" $ACTIVE_PROJECT/META-INF/com/google/android/updater-script | wc -l) -eq 0 ] && [ $(grep -i "zImage" $ACTIVE_PROJECT/META-INF/com/google/android/updater-script | wc -l) -eq 0 ]); then
echo "ADVERTENCIA! Ningún camino kernel que se encuentra en la corriente updater-script"
echo "Esto es típico cuando se va a convertir rom basada en imágenes para rom basada en zip"
local MODEL=$(grep -i "ro.product.model" $ACTIVE_PROJECT/system/build.prop | cut -d'=' -f2)
echo "Modelo ROM Detectado: $ MODELO"
echo "Asegúrese de que sea el modelo adecuado para su dispositivo!"
PRESS_ENTER
if [ -e files/product/$MODEL/KERNEL ]; then
KERNELPATH=$(cat files/product/$MODEL/KERNEL)
else
echo "Este modelo no existe aún en nuestra base de datos"
echo "Por favor, escriba su trayectoria kernel manualmente. Ejemplo de ruta de kernel de GT-I9300: / dev/block/mmcblk0p5"
echo -n "Ruta Kernel para su modelo: "
read KERNELPATH
fi
echo "Basado en el modelo de arriba y nuestra pequeña base de datos, su camino kernel debería ser de $ KERNELPATH"
echo "Asegúrese de que su CORRECTO, sobrescribiendo caminos equivocados PUEDEN CONDUCIR A SUAVE Y LADRILLOS DUROS"
PRESS_ENTER
echo "\"$KERNELPATH\");" >> $ACTIVE_PROJECT/META-INF/com/google/android/updater-script-KERNEL
echo "Vale, este es el efecto final:"
cat $ACTIVE_PROJECT/META-INF/com/google/android/updater-script-KERNEL
echo "Asegúrese de que ese camino y la sintaxis es correcta, si no, modificarlo manualy través archivo $ ACTIVE_PROJECT / META-INF / com / google / android / updater-script-núcleo antes de continuar con el siguiente paso"
PRESS_ENTER
fi
}

CHECK_MODEM() {
if [ -e $ACTIVE_PROJECT/modem.bin ]; then
echo "Archivo Modem.bin encontrado"
local MODEL=$(grep -i "ro.product.model" $ACTIVE_PROJECT/system/build.prop | cut -d'=' -f2)
echo "Modelo ROM Detectado: $ MODELO"
echo "Asegúrese de que su modelo adecuado para su dispositivo!"
PRESS_ENTER
if [ -e files/product/$MODEL/MODEM ]; then
MODEMPATH=$(cat files/product/$MODEL/MODEM)
else
echo "Este modelo no existe aún en nuestra base de datos"
echo "Por favor, escriba su trayectoria módem manualmente. Ejemplo de ruta de módem de GT-I9300: / dev/block/mmcblk0p7"
echo -n "Camino de módem para su modelo: "
read MODEMPATH
fi
echo "Basado en el modelo de arriba y nuestra pequeña base de datos, la ruta de módem debería ser de $ MODEMPATH"
echo "Asegúrese de que sea CORRECTO, SOBREGRABACIÓN caminos equivocados PUEDE LLEVAR A LA SUAVE Y LADRILLOS DUROS"
PRESS_ENTER
echo "\"$MODEMPATH\");" >> $ACTIVE_PROJECT/META-INF/com/google/android/updater-script-MODEM
echo "Vale, este es el efecto final:"
cat $ACTIVE_PROJECT/META-INF/com/google/android/updater-script-MODEM
echo "Asegúrese de que ese camino y la sintaxis es correcta, si no, modificar de forma manual a través de archivos $ ACTIVE_PROJECT / META-INF / com / google / android / updater-script-MODEM antes de continuar con el siguiente paso"
PRESS_ENTER
MODEMINCLUDED=true
fi
}

DO_MAKESURE_WEHAVE_SIMG2IMG() {
if [ ! -e temp/simg2img ]; then
mkdir -p temp
gcc -O2 tools/simg2img/sparse_crc32.c tools/simg2img/simg2img.c -o temp/simg2img
fi
}

DO_MAKESURE_WEHAVE_METAINF() {
mkdir -p $ACTIVE_PROJECT/META-INF/com/google/android
cp files/product/generic/update-binary $ACTIVE_PROJECT/META-INF/com/google/android/update-binary
for i in "updater-script-HEAD" "updater-script-SYMLINKS" "updater-script-PERMISSIONS" "updater-script-TAIL" "updater-script-KERNEL" "updater-script-MODEM"; do
cp "files/product/generic/$i" "$ACTIVE_PROJECT/META-INF/com/google/android/$i"
done
}

REBUILD_UPDATER-SCRIPT() {
local MODE=""
local STYLE=""
local FILE=""
for arg in $@; do
case "$arg" in
"ADD")
MODE="ADD"
shift 1
;;
"DEL")
MODE="DEL"
shift 1
;;
"HEAD")
FILE="updater-script-HEAD"
shift 1
;;
"SYMLINK")
FILE="updater-script-SYMLINKS"
shift 1
;;
"PERMISSIONS")
FILE="updater-script-PERMISSIONS"
shift 1
;;
"TAIL")
FILE="updater-script-TAIL"
shift 1
;;
"KERNEL")
FILE="updater-script-KERNEL"
shift 1
;;
"MODEM")
FILE="updater-script-MODEM"
shift 1
;;
"APPEND")
STYLE="APPEND"
shift 1
;;
"PREPEND")
STYLE="PREPEND"
shift 1
;;
*)
esac
done
if [ $MODE == "DEL" ]; then
#TODO1: We're handling it through so-called "primary key" but this needs to be implemented in a better way, as it's dangerous
sed -i "/$@/d" $ACTIVE_PROJECT/META-INF/com/google/android/$FILE
shift 1
elif [ $MODE == "ADD" ]; then
if [ $STYLE == "APPEND" ]; then
echo "" >> $ACTIVE_PROJECT/META-INF/com/google/android/$FILE
cat "$@" >> $ACTIVE_PROJECT/META-INF/com/google/android/$FILE
echo "" >> $ACTIVE_PROJECT/META-INF/com/google/android/$FILE
elif [ $STYLE == "PREPEND" ]; then
mv $ACTIVE_PROJECT/META-INF/com/google/android/$FILE $ACTIVE_PROJECT/META-INF/com/google/android/$FILE.tmp
cat "$@" > $ACTIVE_PROJECT/META-INF/com/google/android/$FILE
echo "" >> $ACTIVE_PROJECT/META-INF/com/google/android/$FILE
cat $ACTIVE_PROJECT/META-INF/com/google/android/$FILE.tmp >> $ACTIVE_PROJECT/META-INF/com/google/android/$FILE
rm -f $ACTIVE_PROJECT/META-INF/com/google/android/$FILE.tmp
fi
fi
sed -i '/^$/d' $ACTIVE_PROJECT/META-INF/com/google/android/$FILE # This removes empty lines added above
#BUILD_UPDATER_SCRIPT # We handle that through scripts itself, as it causes up to 4x non-needed overhead
}

BUILD_UPDATER_SCRIPT() {
echo -n "" > $ACTIVE_PROJECT/META-INF/com/google/android/updater-script
for i in "updater-script-HEAD" "updater-script-SYMLINKS" "updater-script-PERMISSIONS" "updater-script-TAIL" "updater-script-KERNEL"; do
cat "$ACTIVE_PROJECT/META-INF/com/google/android/$i" >> "$ACTIVE_PROJECT/META-INF/com/google/android/updater-script"
echo "" >> "$ACTIVE_PROJECT/META-INF/com/google/android/updater-script"
done
if ($MODEMINCLUDED); then
cat "$ACTIVE_PROJECT/META-INF/com/google/android/updater-script-MODEM" >> "$ACTIVE_PROJECT/META-INF/com/google/android/updater-script"
echo "" >> "$ACTIVE_PROJECT/META-INF/com/google/android/updater-script"
fi
}

CLEAN_EVERYTHING() {
for i in "updater-script-HEAD" "updater-script-SYMLINKS" "updater-script-PERMISSIONS" "updater-script-TAIL" "updater-script-KERNEL" "updater-script-MODEM"; do
rm -f $ACTIVE_PROJECT/META-INF/com/google/android/$i
done
}

CHANGE_ARCHITECTURE() {
case "$ARCH" in
"arm")
ARCH="x86"
;;
"x86")
ARCH="arm"
;;
*)
ARCH="arm"
esac
}

KERNEL_EXTRACT() {
mkdir -p temp
if [ ! -e temp/mkbootimg ]; then
cd tools/kernel/mkbootimg
make
if [ ! -e mkbootimg ] || [ ! -e unpackbootimg ]; then
echo "ERROR! Algo salió mal con la compilación de mkbootimg!"
PRESS_ENTER
return 1
fi
cp mkbootimg ../../../temp/mkbootimg
cp unpackbootimg ../../../temp/unpackbootimg
make clean
cd ../../..
fi
if [ -e $ACTIVE_PROJECT/boot.img ] && [ ! -e $ACTIVE_PROJECT/kernel ]; then
rm -rf $ACTIVE_PROJECT/kernel
mkdir -p $ACTIVE_PROJECT/kernel
temp/unpackbootimg -i $ACTIVE_PROJECT/boot.img -o $ACTIVE_PROJECT/kernel
mkdir -p $ACTIVE_PROJECT/kernel/ramdisk
if [ -e $ACTIVE_PROJECT/kernel/boot.img-ramdisk.gz ]; then
cd $ACTIVE_PROJECT/kernel/ramdisk
#TODO: Handle non-gz ramdisk as well, but not now...
gunzip -c ../boot.img-ramdisk.gz | cpio -i
cd ../../..
fi
else
echo "No se han encontrado kernel o núcleo ya se extrae!"
PRESS_ENTER
return 1
fi
}

KERNEL_REPACK() {
if [ -e $ACTIVE_PROJECT/kernel ]; then
if [ -e $ACTIVE_PROJECT/kernel/ramdisk ]; then
cd $ACTIVE_PROJECT/kernel/ramdisk
find . | cpio -o -H newc | gzip > ../boot.img-ramdisk-NEW.gz
cd ../../..
temp/mkbootimg --kernel $ACTIVE_PROJECT/kernel/boot.img-zImage --ramdisk $ACTIVE_PROJECT/kernel/boot.img-ramdisk-NEW.* -o $ACTIVE_PROJECT/temp.img
else
temp/mkbootimg --kernel $ACTIVE_PROJECT/kernel/boot.img-zImage --ramdisk $ACTIVE_PROJECT/kernel/boot.img-ramdisk.* -o $ACTIVE_PROJECT/temp.img
fi
mv -f $ACTIVE_PROJECT/temp.img $ACTIVE_PROJECT/boot.img
rm -rf $ACTIVE_PROJECT/kernel
else
echo "No núcleo extraído encontrado!"
PRESS_ENTER
fi
}

KERNEL_ABORT() {
rm -rf $ACTIVE_PROJECT/kernel
rm -f $ACTIVE_PROJECT/temp.img
}

ARCHIDROID_INITD() {
if [ ! -e $ACTIVE_PROJECT/system/bin/debuggerd.real ]; then
mv -f $ACTIVE_PROJECT/system/bin/debuggerd $ACTIVE_PROJECT/system/bin/debuggerd.real
cp -R files/archidroid/initd/system/* $ACTIVE_PROJECT/system/
else
mv -f $ACTIVE_PROJECT/system/bin/debuggerd.real $ACTIVE_PROJECT/system/bin/debuggerd
fi
}

INITD() {
KERNEL_EXTRACT
if [ -e kernel/ramdisk/init.rc ]; then
sed -i -e '0,/class_start /s//start sysinit\n\n class_start /' kernel/ramdisk/init.rc
sed -i -e 's/service media /service sysinit \/system\/bin\/logwrapper \/system\/xbin\/busybox run-parts \/system\/etc\/init.d\n disabled\n oneshot\n\nservice media /' kernel/ramdisk/init.rc
KERNEL_REPACK
cp -R files/initd/system/* $ACTIVE_PROJECT/system/
REBUILD_UPDATER-SCRIPT "ADD" "PERMISSIONS" "APPEND" "files/initd/updater-script-PERMISSIONS"
else
echo "ERROR, no encontrado init.rc?!"
rm -rf kernel
return 1
fi
PRESS_ENTER
}

BUILD() {
BUILD_UPDATER_SCRIPT
echo "A veces la cocina puede producir un archivo de actualización-script correctos, por eso se le pedirá que revise updater-script y eventualmente arreglarlo si es necesario antes de construir ROM"
echo "Updater-script se basa en la llamada "segmentos" disponible en el mismo directorio - META-INF/com/google/android"
echo "¿Está usted listo?"
PRESS_ENTER
echo "-=-= UPDATER-SCRIPT START =-=-"
cat $ACTIVE_PROJECT/META-INF/com/google/android/updater-script
echo "-=-= UPDATER-SCRIPT EOF =-=-"
read -p "Are you REALLY sure that above updater-script is correct? ESPECIALLY block-based paths? [y/n]: " CHOICE
case "$CHOICE" in
"y")
;;
*)
echo "Aceptar, corregir el actualizador-script y / o de sus segmentos y volver cuando haya terminado"
PRESS_ENTER
return 0
esac
local COMPLEVEL=""
echo
echo "¿Qué nivel de compresión que desea utilizar?"
echo "0 - Store (más rápido, sin compresión en absoluto)"
echo "g - Guess (velocidad y compresión moderada, elegido por utilidad de compresión basado en el contenido)"
echo "9 - El mejor (el más lento, máxima compresión)"
read -p "CHOICE: " CHOICE
case "$CHOICE" in
"0")
COMPLEVEL="-0"
;;
"9")
COMPLEVEL="-9"
;;
*)
esac
cd $ACTIVE_PROJECT
zip -ry $COMPLEVEL $ACTIVE_PROJECT.zip . -x META-INF/com/google/android/updater-script-HEAD META-INF/com/google/android/updater-script-SYMLINKS META-INF/com/google/android/updater-script-PERMISSIONS META-INF/com/google/android/updater-script-TAIL META-INF/com/google/android/updater-script-KERNEL
cd ..
mkdir -p OUTPUT_ZIP
mv -f $ACTIVE_PROJECT/$ACTIVE_PROJECT.zip OUTPUT_ZIP/$ACTIVE_PROJECT.zip
echo "Hecho, su ROM está disponible en SALIDA postal / $ ACTIVE_PROJECT.zip"
read -p "Rename it? [y/n]: " CHOICE
case "$CHOICE" in
"y")
read -p "New name: " NAME
mv -f OUTPUT_ZIP/$ACTIVE_PROJECT.zip OUTPUT_ZIP/$NAME
;;
*)
esac
echo "Todo hecho, su ROM debe estar listo!"
echo "Gracias por usar ArchiKitchen usted!"
PRESS_ENTER
exit 0
}

DEODEX() {
local API=$(grep "ro.build.version.sdk" $ACTIVE_PROJECT/system/build.prop | cut -d'=' -f2)
echo "Detectado nivel API $ API"
for f in $(find $ACTIVE_PROJECT -type f -iname "*.odex"); do
local FILE=$(basename $f)
local FILEDIR=$(dirname $f)
echo "Deodexing $FILE"
echo "Desmontaje $ FILE ..."
java -Xmx512m -jar tools/smali/baksmali.jar -a $API -d $ACTIVE_PROJECT/system/framework -x $FILEDIR/$FILE
if [ $? -ne 0 ]; then
echo "DEODEXING ERROR $ FILE, abortando!"
rm -rf out
PRESS_ENTER
return 1
fi
echo "Montaje en classes.dex ..."
java -Xmx512m -jar tools/smali/smali.jar -a $API -o classes.dex out
if [ ! -e classes.dex ]; then
echo "DEODEXING ERROR $ FILE, abortando!"
rm -rf out
PRESS_ENTER
return 1
fi
FILE=$(echo $FILE | rev | cut -d'.' -f2- | rev)
local FOUND=false
for EXTENSION in "jar" "apk"; do
if [ -e $FILEDIR/$FILE.$EXTENSION ]; then
echo "Embalaje de nuevo en $ FILE. $ EXTENSION ..."
zip -rq $FILEDIR/$FILE.$EXTENSION classes.dex
rm -f classes.dex
FOUND=true
break
fi
done
if (! $FOUND); then
echo "ERROR, No se han encontrado resultados?!"
rm -rf out
rm -f classes.dex
PRESS_ENTER
return 1
fi
rm -f $f
rm -rf out
done
echo "Deodexing terminado"
PRESS_ENTER
}

ZIPALIGN() {
for f in $(find $ACTIVE_PROJECT/system -type f -iname "*.apk"); do
local FILE=$(basename $f)
local FILEDIR=$(dirname $f)
echo "Zipaligning $FILE..."
tools/zipalign/zipalign -f $ALIGN "$FILEDIR/$FILE" "$FILEDIR/$FILE.zipaligned"
mv -f "$FILEDIR/$FILE.zipaligned" "$FILEDIR/$FILE"
done
echo "Zipaligning terminado"
PRESS_ENTER
}

ROOT() {
if [ ! -e $ACTIVE_PROJECT/system/xbin/su ]; then
mkdir -p $ACTIVE_PROJECT/system/xbin
cp -R files/root/system/* $ACTIVE_PROJECT/system/
cp -R files/root/$ARCH/system/* $ACTIVE_PROJECT/system/
cp $ACTIVE_PROJECT/system/xbin/su $ACTIVE_PROJECT/system/xbin/daemonsu
mkdir -p $ACTIVE_PROJECT/system/bin/.ext
cp $ACTIVE_PROJECT/system/xbin/su $ACTIVE_PROJECT/system/bin/.ext/su
REBUILD_UPDATER-SCRIPT "ADD" "PERMISSIONS" "APPEND" "files/root/updater-script-PERMISSIONS"
else
rm -f $ACTIVE_PROJECT/system/app/Superuser.apk
rm -f $ACTIVE_PROJECT/system/xbin/su
rm -f $ACTIVE_PROJECT/system/xbin/daemonsu
rm -f $ACTIVE_PROJECT/system/bin/.ext/su
rm -f $ACTIVE_PROJECT/system/etc/init.d/99SuperSUDaemon
rm -f $ACTIVE_PROJECT/system/etc/.installed_su_daemon
REBUILD_UPDATER-SCRIPT "DEL" "PERMISSIONS" "u:object_r:su_exec:s0" #TODO1
fi
BUILD_UPDATER_SCRIPT
}

BUSYBOX() {
if [ ! -e $ACTIVE_PROJECT/system/xbin/busybox ]; then
mkdir -p $ACTIVE_PROJECT/system/xbin
cp files/busybox/busybox $ACTIVE_PROJECT/system/xbin/busybox
REBUILD_UPDATER-SCRIPT "ADD" "SYMLINK" "APPEND" "files/busybox/updater-script-SYMLINKS"
REBUILD_UPDATER-SCRIPT "ADD" "TAIL" "PREPEND" "files/busybox/updater-script-TAIL"
else
rm -f $ACTIVE_PROJECT/system/xbin/busybox
REBUILD_UPDATER-SCRIPT "DEL" "SYMLINK" "busybox" #TODO1
REBUILD_UPDATER-SCRIPT "DEL" "TAIL" "busybox" #TODO1
fi
BUILD_UPDATER_SCRIPT
}

# Main
while :; do
clear

echo "Android Kitchen versión $ VERSION - por JustArchi (@ xda-developers.com)"
echo "Originalmente creado por dsixda (@ xda-developers.com)"
echo
if [ -z "$ACTIVE_PROJECT" ]; then
DO_SETPROJECT
continue
fi

echo "-------------------------------------"
ALLFINE=true
if [ -d $ACTIVE_PROJECT/kernel ]; then
ALLFINE=false
echo "WARNING: Unpacked kernel found"
fi
if [ ! -f $ACTIVE_PROJECT/boot.img ]; then
ALLFINE=false
echo "WARNING: No boot.img found, ROM will not boot properly"
fi
if [ ! -d $ACTIVE_PROJECT/META-INF ]; then
ALLFINE=false
echo "ADVERTENCIA: No la carpeta META-INF encontrado, esto no es una ROM"
fi
echo -n "Estado del proyecto: "
if ($ALLFINE); then
echo "OK"
else
echo "WARNING"
fi
echo "-------------------------------------"

echo
echo "Arquitectura: [$ ARCH]"
echo

echo -n "ArchiDroid Init.d? "
if [ ! -e $ACTIVE_PROJECT/system/bin/debuggerd.real ]; then
echo "[NO]"
else
echo "[YES]"
fi
echo
echo -n "Deodexed? "
if [ -e $ACTIVE_PROJECT/system/framework/framework.odex ]; then
echo "[NO]"
else
echo "[SI]"
fi
echo -n "Zipaligned? "
tools/zipalign/zipalign -c $ALIGN $ACTIVE_PROJECT/system/framework/framework-res.apk
if [ $? -ne 0 ]; then
echo "[NO]"
else
echo "[SI]"
fi
echo -n "Rooted? "
if [ ! -e $ACTIVE_PROJECT/system/xbin/su ]; then
echo "[NO]"
else
echo "[SI]"
fi
echo -n "Busybox? "
if [ ! -e $ACTIVE_PROJECT/system/xbin/busybox ]; then
echo "[NO]"
else
echo "[SI]"
fi
echo
echo "-------------------------------------------------------------------------------"
echo "a - Cambio de la arquitectura (arm/x86)"
echo
echo "adi - Activar / Desactivar ArchiDroid indepdendent init.d (gancho debuggerd software)"
echo "i - Añadir soporte init.d (NO TOQUE CON TODO) (gancho kernel hardware)"
echo
echo "d - Deodex Todo"
echo "z - Zipalign Todo"
echo "r - Activar / Desactivar Root"
echo "b - Activar / Desactivar Busybox"
echo
echo "ku - kernel Desembale"
echo "kr - Repack kernel"
echo "ka - Abortar reempaque del kernel"
echo
echo "bb - Construir ROM"
echo "x - Salida"
echo
echo -n "ELECCIÓN: "
read CHOICE
case "$CHOICE" in
"x")
exit 0
;;
"a")
CHANGE_ARCHITECTURE
;;
"adi")
ARCHIDROID_INITD
;;
"d")
DEODEX
;;
"z")
ZIPALIGN
;;
"r")
ROOT
;;
"b")
BUSYBOX
;;
"i")
INITD
;;
"ku")
KERNEL_EXTRACT
;;
"kr")
KERNEL_REPACK
;;
"ka")
KERNEL_ABORT
;;
"bb")
if ($ALLFINE); then
BUILD
else
echo "ERROR: No se puede construir ROM en el estado actual, por favor revise las advertencias arriba y corregirlos!"
PRESS_ENTER
fi
;;
*)
esac
done

xerkan
02/02/14, 00:38:31
Justo cuando termino mi primera rom cocinada, usando el Android-Kitchen 0.224 aparece una nueva version mas nueva, tendre que probarla en la archlinux que tengo en mi servidor ya que parece necesitar permisos de superusuario al intentar usarla en el cygwin se quejaba de no tener el comando sudo