Home Menu

Menu



Cocina para Android Subforo exclusivo para Cocina para Android


 
Herramientas
  #1  
Viejo 11/11/12, 15:00:07
Avatar de JesusAlber1
JesusAlber1 JesusAlber1 no está en línea
Usuario veterano
Mensajes: 563
 
Fecha de registro: may 2012
Localización: Madrid
Mensajes: 563
Modelo de smartphone: Samsung Galaxy S4
Versión de ROM: iOS 8
Versión de Radio: No tiene :(
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Instalador AROMA para tu propia ROM.

He creado este tutorial porque actualmente la mayoría de las ROMs cocinadas suele incorporar AROMA (la mayoría de las sacadas de las cocinas de xda, que suelen ser las más extendidas). La idea es que todos los que quieran crear una CUSTOM ROM puedan implementar este instalador si necesidad de tener que invertir tiempo estudiando como hacerlo desde varios post y probando. Aquí está todo estructurado.

AROMA es un instalador que permite que elijamos diferentes opciones al flashear una ROM. Este instalador es muy cómodo, porque el creador de la ROM (cualquiera de nosotros que haga una Custom Rom) puede incorporar diferentes opciones para que cada usuario elija las que se adaptan más a sus necesidades o gustos.

Antes de modificar nada, recomiendo que quien vaya a hacer un instalador AROMA consiga un instalador de una ROM ya hecha. Esto es porque hay algunos parámetros como la calibración de la pantalla y demás que necesitamos conocer y que son diferentes en cada dispositivo. Por lo que es muy sencillo basarse en un instalador hecho, aunque al final lo modificaremos y quedará a nuestro gusto
Si alguien quiere puede descargar el META-INF propio de AROMA, aunque tendríamos que emplear muchísimo tiempo para conseguir que fuera instalador de una ROM. (AROMA puede ser instalador de ROMs o un instalador de Tweaks o aplicaciones... Personalmente, creo que la potencia de AROMA se aprovecha mejor en el instalador de una ROM, ya que también podremos elegir aplicaciones y tweaks que meter)

Pondré como ejemplo SlimMania (ROM para Xperia Arc/S) hecha por luiseteyo y por mi, para el subforo de HTCmania de nuestro terminal.
SlimMania tiene unas características propias, con aplicaciones propias y aplicaciones del sistema propias tambien. Con esto quiero decir que nosotros hemos elegido unas opciones para AROMA determinadas, pero cualquiera puede poner las opciones que quiera. AROMA ES TOTALMENTE PERSONALIZABLE!
Copio el código de SlimMania, es bastante largo, pero es un claro ejemplo de lo que se puede hacer, además, cuanto más largo es mejor porque veis los diferentes grupos y opciones de cada grupo. Es un buen ejemplo!

Cabe destacar unos conceptos importantes de AROMA (no es necesario saberlos):
-selectbox: Conjunto de opciones donde es obligatorio marcar una (da igual la que sea). Se da al elegir opciones del sistema, es decir, el tipo de bloqueo de pantalla, teclado, barra de notificaciones... Ya que son necesarias para que el sistema operativo funcione correctamente. Por defecto, se suele poner una opción por si el usuario quiere instalar las recomendaciones y para que no se olvide marcar ninguna y que tenga que volver a flashear.
-checkbox: Conjunto de opciones donde se pueden elegir todas las que quiera o ninguna. Se da para elegir aplicaciones opcionales o tweaks no necesarios que puede meter el usuario si quiere...
-resread: muestra un archivo .txt modificado previamente por el desarrollador donde aparecen: términos y condiciones o el changelog de la ROM.
-ini_get(): función que llama al ini_set(), donde se han metido previamente unos datos que mostrará después el ini_get.
-casi todo lo que está entre comillas: "(lo que sea)" suele ser modificable por el creador para adptarlo a su propia ROM. Si tiene la estructura en aroma-config "@..." no debemos modificarlo, porque @ se refiere a un objeto especial. En updater-script sí debemos modificarlos.

Recomiendo instalar Notepad ++ para editar los textos o el editor de Linux.

Descargas:
SlimMania (ROM completa): http://d-h.st/Lqd
RECOMENDADO! SlimMania (Ejemplo de AROMA, con META-INF y carpeta aroma de aplicaciones sin aplicaciones, ejemplo de distribución de carpetas): http://www.mediafire.com/?1tgm8634eqk9dfi
Aroma installer (original, no recomendado porque faltan muchas cosas): http://d-h.st/vi6

Empezamos!
1-Descargamos cualquier ROM con AROMA de nuestro terminal y extraemos la carpeta META-INF del update.zip (cualquier .zip flasheable de una ROM). También debemos fijarnos en la carpetas carpetas que hay en el flasheable .zip (luego entenderemos mejor el código).



Al lado de la carpeta META-INF ,hay una carpeta llamada aroma, allí meteremos TODOS los archivos que se corresponderán con las opciones. Creamos una carpeta para cada aplicación o archivo y dentro metemos lo que queremos que se extraiga.
La de SlimMania es:



2-Abrimos la carpeta META-INF / com / google /android . Veremos una lista de archivos con una carpeta llamada aroma.



Abrimos los archivos seleccionados en rojo en el editor de texto (Notepad++ en mi caso): aroma-config y updater-script.

En la carpeta /META-INF/com/google/android/aroma tendremos unos archivos .txt importantes para nosotros, es necesario modificarlos, son los marcados (para modificarlos seguimos la estructura que tienen, no me voy a extender más porque sino sería un tutorial muy amplio)
También debemos modificar sample.png para poner la imagen que queramos con un tamaño 480x854 pixeles:



  • Empezamos con el aroma-config. Os pondré fragmentos de mi código y explico para que sirve cada cosa. El creador pone comentarios en inglés con la estructura: #comentario. Yo los pondré en rojo

    Todas las frases que pone modificable, son las que se pueden cambiar manualmente según queramos, la ROM que sea o según el idioma, NO se cambian automáticamente con el idioma de AROMA.

    Introducción
    (Click para mostrar/ocultar)

    Introducción en AROMA, configuración esencial: Datos de la ROM, calibración de pantalla (depende del modelo del teléfono), fuente del instalador e imagen propia de la ROM.
    Código:
    calibrate("0.9718","4","1.0176","-9"); Calibración de la pantalla, cada modelo tendrá una distinta, no la tocamos
    
    loadlang("langs/es.lang"); Lenguaje del instalador AROMA, yo he puesto español (es.lang) en inglés sería (en.lang). Además del idioma del instalador debemos cambiar las frases que ponemos entre comillas, iré avisando cuales son)
    fontresload( "0", "ttf/DroidSans.ttf", "12" ); Fuente del instalador, no la tocamos
    fontresload( "1", "ttf/DroidSans.ttf", "18" );
    ini_set("rom_name",             "SlimMania"); Nombre de nuestra ROM
    ini_set("rom_version",          "1.0"); Versión de nuestra ROM
    ini_set("rom_author",           "JesusAlber1 & Luiseteyo"); Autores de la ROM
    ini_set("rom_device",           "Xperia arc S"); Modelo del teléfono
    ini_set("rom_date",             "29 10 2012"); Fecha de expedición de la ROM
    
    splash(
      #-- Duration 6000ms / 5 seconds 
        6000, Duración en milisegundos de la muestra de la imagen de nuestra ROM.
      
      #-- <AROMA Resource Dir>/sample.png Tenemos que poner nuestra imagen con el nombre sample.png en la carpeta aroma que estaba en la misma carpeta que el archivo que modificamos
        "sample"
    );


    Primera parte del código
    (Click para mostrar/ocultar)

    Primera parte del código: Selección de tema del propio instalador AROMA, para que se haga más amena la instalación según el gusto de cada usuario.
    Código:
    ###################################################################################################################
    #
    # STEP 1 - SELECT THEME 
    #
    selectbox( Tipo de selección de opciones, explicado al principio del post
      #-- Title
        "<~themes.title>",
      
      #-- Sub Title
        "<~themes.desc>",
      
      #-- Icon: <AROMA Resource Dir>/icons/personalize.png or <ThemeDir>/icon.personalize.png 
        "@personalize",
      
      #-- Will be saved in /tmp/aroma/theme.prop Guarda las opciones en un archivo temporal llamado theme.prop (no nos afecta)
        "theme.prop",
      
      #---------------------------------[ Selectbox Without Group ]----------------------------------#
      # TITLE            |  SUBTITLE                                                 | Initial Value #
      #------------------+-----------------------------------------------------------+---------------#
    
        "MIUI",         "MIUI Theme by mickey-r & amarullz",                           0,      #-- selected.0 = 1 Tema estilo MIUI corresponde al 1
        "ICS",          "Ice Cream Sandwitch by DemonWav & amarullz",                  0,      #-- selected.0 = 2 Tema estilo ICS corresponde al 2
        "MIUI V4",      "MIUI 4 Theme by amarullz & Lennox",                           0,      #-- selected.0 = 3 Tema estilo MIUI v4 corresponde al 3
        "Sense",        "HTC Sense Theme by amarullz",                                 0       #-- selected.0 = 4 Tema estilo Sense de HTC corresponde al 4
    
      #--------[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]---------#
    );
    
    ##
    # SET THEME
    #
    #-- Change Info:
    # file_getprop : should use absolute path "/tmp/aroma/theme.prop"
    # prop         : just use relative path "theme.prop" will automatically read the "/tmp/aroma/theme.prop"
    #  Los if condicionan cada opción, es decir, si elegimos la opción 1 entonces el tema será MIUI, si elegimos la opción 2 entonces el tema será ICS y así hasta las 4 opciones
    if prop("theme.prop","selected.0")=="1" then
      theme("miui");
    endif;
    
    if prop("theme.prop","selected.0")=="2" then
      theme("ics");
    endif;
    
    if prop("theme.prop","selected.0")=="3" then
      theme("miui4");
    endif;
    
    if prop("theme.prop","selected.0")=="4" then
      theme("sense");
    endif;


    Segunda parte del código:
    (Click para mostrar/ocultar)

    Segunda parte del código: Muestra al usuario la información de la ROM más extendida y de forma más clara.
    Código:
    ###################################################################################################################
    #
    # STEP 2 - SHOW ROM INFORMATION
    #
    viewbox(
      #-- Title
        "Bienvenido a SlimMania!", Mensaje de bienvenida al usuario, personalizable por cada desarrollador en el idioma correspondiente
      
      #-- Text
        "Vas a instalar <b>"+ Personalizable por cada desarrollador en el idioma correspondiente
    	  #-- Get Config Value
    	  ini_get("rom_name")+ Muestra al usuario el nombre de la ROM, puesto en las primeras líneas de AROMA
    	"</b> for <b>"+ini_get("rom_device")+"</b>.\n\n"+ Muestra al usuario el dispositivo en el que va a usar la ROM, también indicado en las primeras líneas de AROMA
        
    	
          "  Version\t: <b><#selectbg_g>"+ini_get("rom_version")+"</#></b>\n"+ Muestra la versión de la ROM
          "  Codename\t: <b><#selectbg_g>SlimMania</#></b>\n"+ Muestra el código de la ROM (nombre identificativo, normalmente lo más breve posible), este nombre se cambia aquí!
          "  Updated\t: <b><#selectbg_g>"+ini_get("rom_date")+"</#></b>\n\n\n"+ Muestra la fecha en la que se creó la ROM, puesta en las primeras líneas también.
    
        "Pulsa Siguiente para continuar con la Instalacion", Mensaje de cada desarrollador en su idioma correspondiente, es para continuar
      
      #-- Icon
        "@welcome"
    );


    Tercera parte del código
    (Click para mostrar/ocultar)

    Tercera parte del código: Muestra el mensaje de los desarrolladores, en este caso es para aceptar los términos y condiciones de instalar la ROM (No nos hacemos responsables de bootlops ni brikeos...)
    Código:
    ###################################################################################################################
    #
    # STEP 3 - LICENSE
    #
    agreebox(
      #-- Title
        "Terminos y condiciones", Modificable por cada uno
      
      #-- Subtitle / Description
        "Lee atentamente y acepta para continuar con la instalacion.", Modificable por cada uno
      
      #-- Icon
        "@license",
      
      #-- Text Content ( Read from <AROMA Resource Dir>/license.txt )
        resread("license.txt"), AROMA muestra el archivo license.txt, modificado previamente por el creador y se refiere a los términos y condiciones escritos. license.txt está en la carpeta aroma situada junto a aroma-config
      
      #-- Checkbox Text
        "Acepto los terminos y condiciones...", Modificable
      
      #-- Unchecked Alert Message
        "Por favor, marca la casilla de aceptar..." Modificable
    );


    Cuarta parte del código:
    (Click para mostrar/ocultar)

    Cuarta parte del código: Muestra al usuario el changelog (respecto a versiones anteriores o sólo el nuevo, depende de qué pongamos en el archivo correspondiente).
    Código:
    ###################################################################################################################
    #
    # STEP 4 - CHANGELOG
    #
    textbox(
      #-- Title
        "Changelog SlimMania", Modificable
      
      #-- Subtitle
        "Changelog de la nueva version de SlimMania", Modificable
      
      #-- Icon
        "@update",
      
      #-- Arg 4
        resread("changelog.txt") Muestra al usuario el archivo changelog.txt donde está el changelog escrito por el desarrollador. changelog.txt está en la carpeta aroma situada junto a aroma-config
    );


    Quinta parte del código:
    (Click para mostrar/ocultar)

    Menú principal: Pide al usuario que elija entre Instalar la ROM o Salir del instalador.
    Código:
    ##
    # MAIN MENU
    #
    menubox(
      #-- Title
        ini_get("rom_name") + " " + ini_get("rom_version"), Muestra el nombre de la ROM y la versión
      
      #-- Sub Title
        "Elige una de las opciones:", Modificable
      
      #-- Icon
        "@welcome",
        
      #-- Will be saved in /tmp/aroma/demo.prop Guardará los cambios en demo.prop, no tocamos nada.
        "demo.prop",
        
      #-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
      # TITLE                   |  SUBTITLE                                                 |   Item Icons  #
      #-------------------------+-----------------------------------------------------------+---------------#
      
        "Instalar ROM",     			  "Instalar SlimMania en este dispositivo",     			 	"@install",      #-- selected = 1 Modificar según la ROM y el idioma
        "Otras opciones",       		  "Salir, reiniciar, etc.",           		       				  "@apps"        #-- selected = 2 Más de lo mismo
    );
    Si el usuario elige la opción 2, es decir, Otras opciones, el instalador le llevará a una nueva ventana:
    Código:
    ##
    # MISC MENU
    #
    if prop("demo.prop","selected")=="2" then El usuario ha elegido 2 (este if se refiere a: "si el usuario elige la opción 2, entonces -pasa esto-).
    
      #-- Show Other Demo
      menubox(
        #-- Title
          "Cancelando...", Modificable
        
        #-- Sub Title
          "Elige una opción", Modificable
        
        #-- Icon
          "@cancel",
          
        #-- Will be saved in /tmp/aroma/other_demo.prop Guarda los cambios en other_demo.prop, no tocamos nada.
          "other_demo.prop",
          
        #-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
        # TITLE                   |  SUBTITLE                                                 |   Item Icons  #
        #-------------------------+-----------------------------------------------------------+---------------#
        
          "Reiniciar",               "Reiniciar el dispositivo",                	      "@alert",  #-- selected = 1 Modificable
          "Salir",                   "Regresar al recovery",           	                 "@install"    #-- selected = 2 Modificable
      );
      Ahora, dentro de este nuevo menú, el instalador dice:
      #-- Reboot
      if prop("other_demo.prop","selected")=="1" then Si el usuario elige 1, entonces reinicia
    	if
    	  confirm(
    		#-- Title
    		  "Reiniciar", Modificable
    		#-- Text
    		  "¿Reiniciar el dispositivo?", Modificable
    		#-- Icon (Optional)
    		  "@reboot"
    	  )=="yes"
    	then
    	  reboot("now"); Reinicia el dispositivo si hemos marcado "yes"
    	endif;
      endif;
      
      #-- Exit
      if prop("other_demo.prop","selected")=="2" then Si el usuario elige la opción 2 de este menú:
    	if
    	  confirm(
    		#-- Title
    		  "Salir", Modificable
    		#-- Text
    		  "¿Volver al recovery?", Modificable
    		#-- Icon (Optional)
    		  "@exit"
    	  )=="yes"
    	then
    	  #-- Exit - 
    	  exit(""); El dispositivo sale del instalador si hemos marcado "yes"
    	endif;
      endif;
    
    #-- Back To Other Demo Menu Si el usuario no elige la segunda opción, va volviendo al menú anterior hasta llegar al menú donde se elige si Instalar la ROM u Otras opciones.
      back(
        getvar("1")
      );
    endif;
    Si el usuario elige la opción 1, es decir, Instalar la ROM el instalador le llevará a la siguiente ventana: (será elegir el modelo, si queremos instalar la ROM en un terminal específico, omitimos este paso!)
    Código:
    menubox(
      #-- Title
        "Elige tu modelo:", Modificable
      
      #-- Sub Title
        "Elige el modelo de tu terminal:", Modificable
      
      #-- Icon
        "@personalize",
        
      #-- Will be saved in /tmp/aroma/type.prop Guarda las opciones en type.prop, no tocamos nada
        "type.prop",
        
      #-------------------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
      # TITLE                               |  SUBTITLE                                                 |   Item Icons  #
      #-------------------------------------+-----------------------------------------------------------+---------------#
    	
    	"Arc S",				"Sony Xperia arc S LT18i",				 "@device",  #-- selected = 1 La opción 1 es el Arc S, el nombre del dispositivo es modificable 
            "Arc",				"Sony Xperia arc LT15i",				 "@device"  #-- selected = 2 La opción 1 es el Arc, modificamos tanto "Arc" como "Sony Xperia arc LT15i" 
    
    		);


    Sexta parte del código:
    (Click para mostrar/ocultar)

    Sexta parte del código: aquí elegiremos las opciones esenciales, es decir, tenemos que elegir una de las opciones, da igual la que sea, pero una tiene que haber para que funcione todo.
    Código:
    selectbox( Obliga a que siempre elijamos una sola opción, da igual la que sea, pero como como máximo y como mínimo tiene que ser una opción.
        #-- Title
          "Apariencia personalizada", Modificable
    	  
        #-- Sub Title
          "Elige lo que quieras que contenga tu nueva ROM", Modificable
    	  
        #-- Icon
          "@choose",
    	  
        #-- Will be saved in /tmp/aroma/patch.prop Guardará estos cambios en patch.prop, un archivo temporal, no tocamos nada
          "patch2.prop",
          #-----------------------+-----------------[ Selectbox ]---------------------------+---------------#
          # TITLE                 |  SUBTITLE                                               | Initial Value #
          #-----------------------+---------------------------------------------------------+---------------#  
    	  
       "Bloqueo de pantalla",		"",									        	          2,	#-- Group 1. key = "selected.1" El 2 dice que es un grupo nuevo, será el grupo numero 1 (selected.1)
    	"AOSP lockscreen",	"Bloqueo de pantalla estilo AOSP, elegante y sencillo",					     1,      #-- selected.1 = 1 El 1 dice que está marcada por defecto y es la posición  del grupo 1 (selected.1 = 1)
    	"Xperia T lockscreen",	"Bloqueo del Xperia T con shortcuts. ¡No olvides el parche!",		                     0, 	 #-- selected.1 = 2 El 0 dice que no está marcada por defecto y que es la posición 2 del grupo 1 (selected.1 = 2)
      "Barra de notificaciones",		"",								                                  2,	#-- Group 2. key = "selected.2" Grupo 2 (selected.2)
    	"Estilo GX 1",	"Estilo GX, bateria en circulo blanco y toggles muy sencillos",	  			             1,     	#-- selected.2 = 1  Opción 1 del grupo 2 (selected.2 = 1), además está marcada por defecto
    	"Estilo GX 2",	"Estilo GX, similar a la anterior pero semitransparente",                                              0,       #-- selected.2 = 2
    	"Estilo GX 3",	"Estilo GX, bateria de procentaje similar a MIUI",						              0,      #-- selected.2 = 3
    	"Estilo GX 4",	"Estilo GX, bateria MIUI y toggles diferentes",					 	              0,      #-- selected.2 = 4
    	"Estilo GX 5",	"Estilo GX, bateria en circulo blanco y toggles de colores",				              0,      #-- selected.2 = 5 Opción 5 del grupo 2 (selected.2=5), no está marcada por defecto porque tiene un 0
      "Teclado",		"",													          2,	#-- Group 3. key = "selected.3" Grupo 3 (selected.3)
    	"Xperia stock",	"Teclado de stock ICS",							                                      1,      #-- selected.3 = 1
    	"Xperia S",	"Teclado del Xperia S",										                      0,      #-- selected.3 = 2
    	"Iconos",		"",												                  2,	#-- Group 4. key = "selected.4"
    	"Iconos SIII",	"Iconos del Samsung Galaxy SIII",					                                      1,      #-- selected.4 = 1
    	"Iconos stock",	"Iconos de stock, propios de SONY",					                                      0,      #-- selected.4 = 2
      "Navegador",		"",												                  2,	#-- Group 5. key = "selected.5"
    	"Dolphin Browser Beta",	"Recomendado: Rapido, gran apariencia, soporta HTML 5",	                      1,      #-- selected.5 = 1
    	"Navegador stock",	"Navegador de stock, propio de SONY",					                      0,      #-- selected.5 = 2
      "Launcher",		"",												                  2,	#-- Group 5. key = "selected.6"
    	"SlimMania",	"Recomendado: Launcher propio de SlimMania, con opciones adicionales",	              1,      #-- selected.6 = 1
    	"Launcher stock",	"Launcher de stock de Xperia arc S, 4x4 con boton AOSP, simple",	                      0,      #-- selected.6 = 2
    	"APEX",	"Launcher APEX, con apariencia ICS, rapido y fluido",	   						      0,      #-- selected.6 = 3 Opción 3 del grupo 6 (seleted.6 = 3)
    	"ZEAM",	"Launcher ZEAM, sencillo y comodo",	      									      0,      #-- selected.6 = 4	
    	"MIUI launcher",	"Launcher basado en el propio de MIUI, original y diferente",   	                              0       #-- selected.6 = 5
    	
    	  #--------[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]---------#
      );
    Esta chuleta nos muestra que signnifica el primer número que hay despues de la descripción, el 1 muestra que la selecciona por defecto, aunque puede cambiarse. El 2 muestra que es un grupo diferente
    Podemos crear tantos grupos como queramos, y tantas opciones dentro del grupo que queramos


    Séptima parte del código:
    (Click para mostrar/ocultar)

    Séptima parte del código: aquí elegiremos las opciones libres, es decir, se pueden coger o no. No hay ninguna opción necesaria, si queremos las cogemos, sino no.
    Código:
    checkbox(
        #-- Title
          "Aplicaciones opcionales", Modificable
    	  
        #-- Sub Title
          "Selecciona las aplicaciones opcionales que quieras instalar", Modificable
    	  
        #-- Icon: <AROMA Resource Dir>/icons/personalize.png or <ThemeDir>/icon.personalize.png
          "@choose",
    	  
        #-- Will be saved in /tmp/aroma/patch.prop Guarda las opciones en un archivo temporal, no nos interesa
          "patch.prop",
    	  
          #-----------------------+-----------------[ Checkbox  ]---------------------------+---------------#
          # TITLE                 |  SUBTITLE                                               | Initial Value #
          #-----------------------+---------------------------------------------------------+---------------#  
    	  
        "Aplicaciones opcionales",		"Elige las aplicaciones siguientes que quieras instalar",                         2,	#-- Group 1. key = "item.1.x" Similar al anterioe, el 2 crea el grupo.
    	"Youtube",	"Aplicacion Youtube",                       									                            0, 	     #-- item.1.1 Aplicación 1 del grupo 1 (item.1.1). No está preseleccionada
    	"Gmail",	"Aplicacion GMail para ver tu correo electronico de Google",				                                    0,      #-- item.1.2
    	"Email",	"Aplicacion Email de stock de Xperia",					 		             	                            0,      #-- item.1.3
    	"Script Manager",	"Aconsejable instalar para configurar despues SuperCharguer",			                    1,      #-- item.1.4 Aplicación 4 del grupo 1 (item.1.4). Está preseleccionada porque tiene el 1 correspondiente
    	"Notas",	"Aplicacion Notas de stock de Xperia",			  								            0,      #-- item.1.5
    	"DroidSail",	"Aplicacion que permite pasar apps a la SD, para mayor almacenamiento interno",                      0,      #-- item.1.6
    	"SDBooster",	"Aplicacion para aumentar la velocidad de transferencia de datos con la SD",                              1,      #-- item.1.7
    	"Smart Connect",	"Aplicacion para ejecutar ciertas acciones al conectar perifericos",    	                            0,      #-- item.1.8 Aplicación 8 del grupo 1 (item.1.8), no está preseleccionada porque tiene el 0 correspondiente
    	"ES explorador",	"Explorador y administrador de archivos ",    								            0,      #-- item.1.9
    	"Camara 3D",	"Camara y Album 3D stock de SONY ",    										    0       #-- item.1.10
    	 );
    Si queremos añadir más grupos, es tan sencillo como poner la misma estructura que la primera linea, pero cambiando en cada caso y poniendo item.2.x, item.3.x (siendo x la aplicación dentro del grupo). Cada grupo nuevo, las x vuelven a empezar en 1.
    Ejemplo: Grupo1-> item1.1, item1.2, item1.3  
    Grupo2-> item2.1, item2.2, item2.3 (cada uno con sus correspondientes aplicaciones)


    Octava parte del código:
    (Click para mostrar/ocultar)

    Octava parte del código: Aquí pedirá que se pulse Instalar o llevará el menú del principio para salir de la instalación o volver a elegir las opciones.
    Código:
    ##
    #
    # Next Screen is Installation UI
    #
    ini_set("text_next", "Install"); Indica que el botón siguiente será para instalar
    
    ##
    # READY TO INSTALL
    #
    viewbox(
      #-- Title
        "Instalacion preparada", Modificable
    
      #-- Text
        "Todo esta preparado para ser instalado.\n\n"+
    	"Presiona <b>Instalar</b> para comenzar.\n\n"+
    	"Si no estas seguro de tus elecciones, presiona <b>Atras</b>\n\n"+
    	"Pulsar Menu -> Deja la instalacion, salir.",
    Las líneas anteriores modificables solo las letras, los \n significan salto de línea y <b> que la letra destaque, así que mejor no tocarlos
      #-- Icon
        "@install"
    );
    
    ini_set("text_next", "Next");
    
    #-- Extract sleep to /tmp/aroma/sleep. It will be used in updater-script for testing wait script
    restotmp("exec_demo/sleep","sleep");


    Novena parte del código:
    (Click para mostrar/ocultar)

    Novena parte del código: Proceso de instalación, mostrará al usuario lo que se está instalando y todo el proceso de instalación.
    Código:
    #
    # INSTALLATION PROCESS
    #
    setvar("retstatus",
      install(
    	#-- Title
          "Instalacion", Modificable
    	
    	#-- Installation Process message
    	  "Instalando <b>"+ini_get("rom_name")+"</b>.\n\n"+ Muestra que está instalando la ROM (con su nombre)
          "",
    	
    	#-- Installation Icon
          "@install",
    	
    	#-- Installation Finish Message
          "<b>"+ini_get("rom_name")+"</b> ha sido instalada correctamente. Pulsa Finalizar para acabar." Muestra el nombre de la ROM y que se ha instalado correctamente. Modificable después de </b>
      )
    );
    
    ini_set("text_next", "Finish"); Botón de Finalizar


    Décima parte del código:
    (Click para mostrar/ocultar)

    Décima parte del código: Finalizar con el instalador, despedirse del usuario y reiniciar.
    Código:
    ##
    # FINISH
    #
    # You can use return value or "reboot_it" variable to retrive checkbox value
    # Example:
    # if (checkviewbox(....)=="1" then
    #    ... checked ...
    # endif;
    #
    checkviewbox(
      #-- Title
        "Hecho", Modificable
      
      #-- Text
        "<b>"+ini_get("rom_name")+"</b> ha sido instalada correctamente. ¡Disfruta de SlimMania!\n\n", Muestra el nombre de la ROM y que se ha instalado. Modificable a partir de </b>
    	
      #-- Icon
        "@welcome",
    
      #-- Checkbox Text
        "¡Reiniciando tu terminal!", Modificable
    
      #-- Initial Checkbox value ( 0=unchecked, 1=checked ) -  (Optional, default:0)
        "1",
    
      #-- Save checked value in variable "reboot_it" (Optional)
        "now"
    );
    
    if
      getvar("reboot_it")=="1" Si has seleccionado que reinicie...
    then
      reboot("now"); Reinicia el terminal
    endif;


  • Continuamos con updater-script. Lo que modifiquemos en aroma-config debemos modificarlo después en updater-script para que realice la tarea correspondiente.
    Si hemos hecho un updater-script para nuestra ROM, tenemos que modificarlo para el de AROMA, ya que la función que tiene es la misma (contiene la información del flasheo de la ROM), pero al intervenir AROMA tenemos que adaptarlo.

    Parte esencial:
    (Click para mostrar/ocultar)

    Aquí tendremos lo esencial para flashear una ROM: (Puede ser que cada dispositivo tenga uno específico, en ese caso, modificaremos el código en función al dispositivo)
    Código:
    format("yaffs2", "MTD", "system", "0");
    mount("yaffs2", "MTD", "system", "/system");
    mount("yaffs2", "MTD", "userdata", "/data");
    ui_print("@Initializing file system..."); No tocar!
    ui_print("Iniciando AROMA"); Modificable
    
    
    show_progress(0.95, "-55000");
    ui_print("- Instalando aplicaciones del sistema."); Modificable
    package_extract_dir("system", "/system");
    package_extract_dir("data", "/data");


    Primera parte del código:Corresponde con el final de la quinta parte de aroma-config. Es necesario mirar aroma-config para configurarlo, ya que en función de las opciones que hayamos metido, así configuraremos.
    (Click para mostrar/ocultar)

    Aquí tendremos la configuración relativa a la elección de dispositivo (cuando elegimos entre los dos dispositivos que puede ser).
    Código:
    ui_print("@Dispositivo"); Se refiere a la elección del dispositivo (configurada en aroma-config). Tenemos que poner después del @ el nombre del grupo de la elección (el grupo es la línea que hemos puesto con el número 2 en aroma-config
    	# arcs
    	if
    	  file_getprop("/tmp/aroma/type.prop","selected") == "1" Si elegimos la opción 1...
    	then
    	ui_print("Xperia arc S LT18i"); Modificable, según la opción que sea
    	package_extract_dir("aroma/arcS", "/system/"); Busca la carpeta con ese nombre que hemos metido en la carpeta /aroma (en la raíz del flasehable.zip) En este caso extrae la carpeta aroma/arcS en la carpeta /system/ de la ROM.
    	endif;
    
    	# arc
    	if
    	  file_getprop("/tmp/aroma/type.prop","selected") == "2" Si elegimos la opción 2...
    	then
        ui_print("Xperia arc LT15i"); Modificable, según la opción que sea
    		package_extract_dir("aroma/arc", "/system/"); Esta vez, en vez de extraer la carpeta /aroma/arcS, extrae la carpeta aroma/arc. Así tendremos los archivos correspondientes a esta opción
    	endif;


    Segunda parte del código: Correspondiente a la sexta parte del código de aroma-config.
    (Click para mostrar/ocultar)

    Aquí tendremos la configuración correspondiente a las aplicaciones del sistema que queramos elegir.
    Código:
    ##---- Customization
    ui_print("@Bloqueo de pantalla"); Se refiere a la elección del bloqueo de pantalla, configurada en aroma-config). Tenemos que poner después del @ el nombre del grupo de la elección (el grupo es la línea que hemos puesto con el número 2 en aroma-config
    	# aosplock Código de referencia para el desarrollador, le dice de qué opción está hablando
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.1") == "1" Si en el grupo 1 (selected.1), elegimos la opción 1, entonces...
    	then
    	ui_print("- Instalando AOSP lockscreen"); Modificable
    		package_extract_dir("aroma/AOSPlock", "/system/"); Extrae la carpeta aroma/AOSPlock en /system/.
    	endif;
    
    	# xperiatlock
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.1") == "2" Si en el grupo 1, elegimos la opción 2...
    	then
        ui_print("- Instalando Xperia T lockscreen. ¡No olvides el parche!");
    		package_extract_dir("aroma/XperiaTlock", "/system/");
    	endif;
    
    ui_print("@Barra de notificaciones"); Tenemos que poner después del @ el nombre del grupo de la elección (el grupo es la línea que hemos puesto con el número 2 en aroma-config
    	# estilogx1
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "1" Si en el grupo 2 (selected.2), elegimos la opción 1...
    	then
        ui_print("- Estilo GX, bateria en circulo blanco y toggles muy sencillos");
    		package_extract_dir("aroma/EstiloGX1", "/system/app");
    	endif;
    
    	# estilogx2
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "2"
    	then
        ui_print("- Estilo GX,similar a la anterior pero semitransparente");
    		package_extract_dir("aroma/EstiloGX2", "/system/app");
    	endif;
    
    	# estilogx3
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "3"
    	then
        ui_print("- Estilo GX, bateria de procentaje similar a MIUI");
    		package_extract_dir("aroma/EstiloGX3", "/system/app");
    	endif;
    	
    	# estilogx4
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "4"
    	then
    	ui_print("- Estilo GX, bateria MIUI y toggles diferentes");
    		package_extract_dir("aroma/EstiloGX4", "/system/app");
    	endif;
    	
    	# estilogx5
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "5" Si elegimos la opción 5 del grupo 2 (selected.2)
    	then
    	ui_print("- Estilo GX, bateria en circulo blanco y toggles de colores");
    		package_extract_dir("aroma/EstiloGX5", "/system/app");
    	endif;
    
    ui_print("@Teclado"); Cambiar nombre de grupo!
    	# tecladostock
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.3") == "1"
    	then
    	ui_print("- Instalando Teclado de stock ICS");
    	package_extract_dir("aroma/XperiaStockTeclado", "/system/");
    	endif;
    
    	# tecladoxperias
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.3") == "2"
    	then
    	ui_print("- Instalando Teclado del Xperia S");
    	  package_extract_dir("aroma/XperiaSteclado", "/system/");
    	endif;
    	
    ui_print("@Iconos"); Cambiar nombre de grupo... Así en todos los grupos. (@nombreGrupo)
    	# iconoss3
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.4") == "1"
    	then
    	ui_print("- Aplicaciones con Iconos del Samsung Galaxy SIII");
    	package_extract_dir("aroma/S3Iconos", "/system/app");
    	endif;
    	
    	# iconosstock
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.4") == "2"
    	then
    	ui_print("- Aplicaciones con Iconos de stock de SONY");
    	package_extract_dir("aroma/StockIconos", "/system/app");
    	endif;
    	
    ui_print("@Navegador");
    	# dolphin
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.5") == "1"
    	then
    	ui_print("- Instalando Dolphin Browser Beta");
    	package_extract_dir("aroma/Dolphin", "/system/app");
    	endif;	
    	
    	# browstock
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.5") == "2"
    	then
    	ui_print("- Instalando Navegador de stock de SONY");
    	package_extract_dir("aroma/BrowStock", "/system/app");
    	endif;	
    
    ui_print("@Launcher");
    	# slimlauncher
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "1"
    	then
    	ui_print("- Instalando Launcher propio de SlimMania");
    	package_extract_dir("aroma/LaunchSlim", "/system/");
    	endif;	
    	
    	# launchstock
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "2"
    	then
    	ui_print("- Instalando Launcher propio de SONY");
    	package_extract_dir("aroma/LaunchStock", "/system/");
    	endif;
    	
    	# apex
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "3"
    	then
    	ui_print("- Instalando Apex launcher");
    	package_extract_dir("aroma/Apex", "/system/");
    	endif;
    	
    	# zeam
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "4"
    	then
    	ui_print("- Instalando Zeam Launcher");
    	package_extract_dir("aroma/Zeam", "/system/");
    	endif;
    	
    	# miui
    	if
    	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "5" Si elegimos la opción 5 del grupo 6 (selected.6)...
    	then
    	ui_print("- Instalando Launcher estilo MIUI");
    	package_extract_dir("aroma/LaunchMIUI", "/system/");
    	endif;


    Tercera parte: Corresponde a la séptima parte del código de aroma-config.
    (Click para mostrar/ocultar)

    En este apartado trataremos la selección de aplicaciones opcionales.
    Código:
    ui_print("@Aplicaciones opcionales"); Cambiar nombre de grupo!
    	# youtube
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.1") == "1" Como solo hay un grupo es item.1.x y como es la aplicación 1,entonces es item.1.1
    	then
    	ui_print("- Instalando Youtube");
    	  package_extract_dir("aroma/Youtube", "/data/app");
    	endif;
    	
    	# gmail
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.2") == "1" En este caso la aplicación es item.1.2, y el == "1" se refiere a si está marcada o no (1 es marcada y 0 es no marcada). Si es 0, entonces no ponemos nada porque no haría nada.
    	then
    	ui_print("- Instalando GMail");
    		package_extract_dir("aroma/Gmail", "/data/app"); Extrae la carpeta aroma/Gmail en data/app porque queremos que sea una aplicación eliminable, si quisieramos que no se pueda eliminar la extraeríamos a /system/app
    	endif;
    	
    	# email
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.3") == "1"
    	then
    	ui_print("- Instalando Email de stock de Xperia");
    		package_extract_dir("aroma/Emailstock", "/system/app");
    	endif;
    	
    	# scriptmanager
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.4") == "1"
    	then
    	ui_print("- Instalando Script Manager");
    		package_extract_dir("aroma/ScriptManager", "/data/app");
    	endif;
    	
    	# notas
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.5") == "1"
    	then
    	ui_print("- Instalando Notas de stock de Xperia");
    		package_extract_dir("aroma/Notasstock", "/system/app");
    	endif;
    	
    	# droidsail
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.6") == "1"
    	then
    	ui_print("- Instalando DroidSail APP to SD");
    		package_extract_dir("aroma/droidsail", "/system/app");
    	endif;
    	
    	# sdbooster
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.7") == "1"
    	then
    	ui_print("- Instalando SD Booster");
    		package_extract_dir("aroma/SDbooster", "/system/app");
    	endif;
    	
    	# smartconect
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.8") == "1"
    	then
    	ui_print("- Instalando SmartConnect");
    		package_extract_dir("aroma/smartconnect", "/data/app");
    	endif;
    	
    	# esexplorador
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.9") == "1"
    	then
    	ui_print("- Instalando ES explorador");
    		package_extract_dir("aroma/ESexplorador", "/data/app");
    	endif;
    	
    	# 3d
    	if
    	  file_getprop("/tmp/aroma/patch.prop","item.1.10") == "1"
    	then
    	ui_print("- Instalando Camara y Album 3D");
    		package_extract_dir("aroma/3D", "/system/app");
    	endif;


    Cuarta parte: Propia de updater-script (ya nos olvidamos de aroma-config). Lo necesario para flashear la ROM, similar a cualquier final de un updater-script.
    (Click para mostrar/ocultar)

    Contiene lo propio para flashear cualquier ROM desde un .zip flasheable.
    Código:
    ui_print("");
    ui_print("Flasheando SlimMania..."); Modificable
    show_progress(0.14, 3);
    package_extract_dir("sdcard", "/sdcard"); Funciones de un updater-script, no las toques a no se que sepas hacerlo
    package_extract_dir("system", "/system");
    package_extract_dir("data", "/data");
    symlink("toolbox", "/system/bin/start");
    symlink("toolbox", "/system/bin/lsmod");
    symlink("toolbox", "/system/bin/r");
    symlink("toolbox", "/system/bin/vmstat");
    symlink("toolbox", "/system/bin/ifconfig");
    symlink("toolbox", "/system/bin/ionice");
    symlink("toolbox", "/system/bin/schedtop");
    symlink("toolbox", "/system/bin/wipe");
    symlink("toolbox", "/system/bin/reboot");
    symlink("toolbox", "/system/bin/rmdir");
    symlink("toolbox", "/system/bin/route");
    symlink("toolbox", "/system/bin/chown");
    symlink("toolbox", "/system/bin/lsof");
    symlink("toolbox", "/system/bin/getevent");
    symlink("toolbox", "/system/bin/mkdir");
    symlink("toolbox", "/system/bin/netstat");
    symlink("toolbox", "/system/bin/renice");
    symlink("toolbox", "/system/bin/uptime");
    symlink("mksh", "/system/bin/sh");
    symlink("toolbox", "/system/bin/smd");
    symlink("toolbox", "/system/bin/sync");
    symlink("toolbox", "/system/bin/mount");
    symlink("toolbox", "/system/bin/printenv");
    symlink("toolbox", "/system/bin/top");
    symlink("toolbox", "/system/bin/log");
    symlink("toolbox", "/system/bin/sendevent");
    symlink("toolbox", "/system/bin/ps");
    symlink("toolbox", "/system/bin/dmesg");
    symlink("toolbox", "/system/bin/umount");
    symlink("toolbox", "/system/bin/kill");
    symlink("toolbox", "/system/bin/stop");
    symlink("toolbox", "/system/bin/newfs_msdos");
    symlink("toolbox", "/system/bin/iftop");
    symlink("toolbox", "/system/bin/chmod");
    symlink("toolbox", "/system/bin/rmmod");
    symlink("toolbox", "/system/bin/setconsole");
    symlink("toolbox", "/system/bin/mv");
    symlink("toolbox", "/system/bin/rm");
    symlink("toolbox", "/system/bin/id");
    symlink("toolbox", "/system/bin/watchprops");
    symlink("toolbox", "/system/bin/hd");
    symlink("toolbox", "/system/bin/ctrlaltdel");
    symlink("toolbox", "/system/bin/sleep");
    symlink("toolbox", "/system/bin/ls");
    symlink("toolbox", "/system/bin/cmp");
    symlink("toolbox", "/system/bin/insmod");
    symlink("toolbox", "/system/bin/nandread");
    symlink("toolbox", "/system/bin/date");
    symlink("toolbox", "/system/bin/dd");
    symlink("toolbox", "/system/bin/getprop");
    symlink("toolbox", "/system/bin/cat");
    symlink("toolbox", "/system/bin/df");
    symlink("toolbox", "/system/bin/touch");
    symlink("toolbox", "/system/bin/ioctl");
    symlink("toolbox", "/system/bin/setprop");
    symlink("toolbox", "/system/bin/notify");
    symlink("toolbox", "/system/bin/ln");
    set_perm_recursive(0, 0, 0755, 0644, "/system");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
    set_perm(0, 3003, 06755, "/system/bin/ip");
    set_perm(0, 3003, 02750, "/system/bin/netcfg");
    set_perm(0, 3004, 02755, "/system/bin/ping");
    set_perm(0, 2000, 06750, "/system/bin/run-as");
    set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
    set_perm(0, 0, 0755, "/system/etc/bluetooth");
    set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
    set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
    set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
    set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
    set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
    set_perm_recursive(0 ,0 , 0755, 0755, "/system/etc/init.d");
    set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
    set_perm(0, 0, 0755, "/system/etc/be_movie");
    set_perm(0, 0, 0755, "/system/etc/be_photo");
    set_perm(0, 0, 06755, "/system/bin/su");
    set_perm(0, 2000, 0755, "/system/bin/sysinit");
    set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
    set_perm(0, 1000, 0755, "/system/xbin/busybox");
    delete("/system/xbin/busybox-installer");
    set_perm(0, 0, 04755, "/system/xbin/busybox");
    set_perm(0, 0, 0644, "/system/etc/group");
    set_perm(0, 0, 0644, "/system/etc/gshadow");
    set_perm(0, 0, 0644, "/system/etc/passwd");
    set_perm(0, 0, 0644, "/system/etc/shadow");
    package_extract_file("busybox_update.sh", "/tmp/busybox_update.sh");
    set_perm(0, 0, 0777, "/tmp/busybox_update.sh");
    run_program("/tmp/busybox_update.sh");
    run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");
    symlink("/system/bin/su", "/system/xbin/su");
    symlink("/system/fonts/Roboto-Regular.ttf","/system/fonts/DroidSans.ttf");
    symlink("/system/fonts/Roboto-Bold.ttf","/system/fonts/DroidSans-Bold.ttf");
    symlink("/factory/hdcp.keys","/system/vendor/firmware/hdcp.keys");
    symlink("/data/etc/wifi/wl1271-nvs.bin","/system/etc/firmware/ti-connectivity/wl1271-nvs.bin");
    unmount("/system");
    unmount("/data");
    show_progress(1, 0);
    ui_print("¡Instalacion completada! ¡Disfruta de SlimMania!"); Modifícalo a tu gusto ;)
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print("Agradece el trabajo a los desarrolladores, ¡anima a seguir trabajando!"); Más modificaciones
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");

Los archivos que no son aroma-config, updater-script ni carpetas aroma: (/aroma y /META-INF/com/google/android/aroma). No se tocan, se dejan igual que estaban, si al instalador AROMA nos referimos.

Última edición por JesusAlber1 Día 11/11/12 a las 18:12:00
Responder Con Cita
Los siguientes 30 usuarios han agradecido a JesusAlber1 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 11/11/12, 15:00:44
Avatar de JesusAlber1
JesusAlber1 JesusAlber1 no está en línea
Usuario veterano
Mensajes: 563
 
Fecha de registro: may 2012
Localización: Madrid
Mensajes: 563
Modelo de smartphone: Samsung Galaxy S4
Versión de ROM: iOS 8
Versión de Radio: No tiene :(
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Códigos completos de SlimMania para ver un instalador AROMA completo y funcional:

aroma-config
(Click para mostrar/ocultar)
Código:
calibrate("0.9718","4","1.0176","-9");

loadlang("langs/es.lang");
fontresload( "0", "ttf/DroidSans.ttf", "12" );
fontresload( "1", "ttf/DroidSans.ttf", "18" );
ini_set("rom_name",             "SlimMania");
ini_set("rom_version",          "1.0");
ini_set("rom_author",           "JesusAlber1 & Luiseteyo");
ini_set("rom_device",           "Xperia arc S");
ini_set("rom_date",             "29 10 2012");

splash(
  #-- Duration 6000ms / 5 seconds
    6000,
  
  #-- <AROMA Resource Dir>/sample.png
    "sample"
);

###################################################################################################################
#
# STEP 1 - SELECT THEME
#
selectbox(
  #-- Title
    "<~themes.title>",
  
  #-- Sub Title
    "<~themes.desc>",
  
  #-- Icon: <AROMA Resource Dir>/icons/personalize.png or <ThemeDir>/icon.personalize.png
    "@personalize",
  
  #-- Will be saved in /tmp/aroma/theme.prop
    "theme.prop",
  
  #---------------------------------[ Selectbox Without Group ]----------------------------------#
  # TITLE            |  SUBTITLE                                                 | Initial Value #
  #------------------+-----------------------------------------------------------+---------------#

    "MIUI",         "MIUI Theme by mickey-r & amarullz",                           0,      #-- selected.0 = 1
    "ICS",          "Ice Cream Sandwitch by DemonWav & amarullz",                  0,      #-- selected.0 = 2
    "MIUI V4",      "MIUI 4 Theme by amarullz & Lennox",                           0,      #-- selected.0 = 3
    "Sense",        "HTC Sense Theme by amarullz",                                 0       #-- selected.0 = 4

  #--------[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]---------#
);

##
# SET THEME
#
#-- Change Info:
# file_getprop : should use absolute path "/tmp/aroma/theme.prop"
# prop         : just use relative path "theme.prop" will automatically read the "/tmp/aroma/theme.prop"
#
if prop("theme.prop","selected.0")=="1" then
  theme("miui");
endif;

if prop("theme.prop","selected.0")=="2" then
  theme("ics");
endif;

if prop("theme.prop","selected.0")=="3" then
  theme("miui4");
endif;

if prop("theme.prop","selected.0")=="4" then
  theme("sense");
endif;

###################################################################################################################
#
# STEP 2 - SHOW ROM INFORMATION
#
viewbox(
  #-- Title
    "Bienvenido a SlimMania!",
  
  #-- Text
    "Vas a instalar <b>"+
	  #-- Get Config Value
	  ini_get("rom_name")+
	"</b> for <b>"+ini_get("rom_device")+"</b>.\n\n"+
    
	
      "  Version\t: <b><#selectbg_g>"+ini_get("rom_version")+"</#></b>\n"+
      "  Codename\t: <b><#selectbg_g>SlimMania</#></b>\n"+
      "  Updated\t: <b><#selectbg_g>"+ini_get("rom_date")+"</#></b>\n\n\n"+

    "Pulsa Siguiente para continuar con la Instalacion",
  
  #-- Icon
    "@welcome"
);

###################################################################################################################
#
# STEP 3 - LICENSE
#
agreebox(
  #-- Title
    "Terminos y condiciones",
  
  #-- Subtitle / Description
    "Lee atentamente y acepta para continuar con la instalacion.",
  
  #-- Icon
    "@license",
  
  #-- Text Content ( Read from <AROMA Resource Dir>/license.txt )
    resread("license.txt"),
  
  #-- Checkbox Text
    "Acepto los terminos y condiciones...",
  
  #-- Unchecked Alert Message
    "Por favor, marca la casilla de aceptar..."
);

###################################################################################################################
#
# STEP 4 - CHANGELOG
#
textbox(
  #-- Title
    "Changelog SlimMania",
  
  #-- Subtitle
    "Changelog de la nueva version de SlimMania",
  
  #-- Icon
    "@update",
  
  #-- Arg 4
    resread("changelog.txt")
);


##
# MAIN MENU
#
menubox(
  #-- Title
    ini_get("rom_name") + " " + ini_get("rom_version"),
  
  #-- Sub Title
    "Elige una de las opciones:",
  
  #-- Icon
    "@welcome",
    
  #-- Will be saved in /tmp/aroma/demo.prop
    "demo.prop",
    
  #-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
  # TITLE                   |  SUBTITLE                                                 |   Item Icons  #
  #-------------------------+-----------------------------------------------------------+---------------#
  
    "Instalar ROM",     			  "Instalar SlimMania en este dispositivo",     			 	"@install",      #-- selected = 1
    "Otras opciones",       		  "Salir, reiniciar, etc.",           		       				  "@apps"        #-- selected = 2
);

##
# MISC MENU
#
if prop("demo.prop","selected")=="2" then

  #-- Show Other Demo
  menubox(
    #-- Title
      "Cancelando...",
    
    #-- Sub Title
      "Elige una opción",
    
    #-- Icon
      "@cancel",
      
    #-- Will be saved in /tmp/aroma/other_demo.prop
      "other_demo.prop",
      
    #-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
    # TITLE                   |  SUBTITLE                                                 |   Item Icons  #
    #-------------------------+-----------------------------------------------------------+---------------#
    
      "Reiniciar",               "Reiniciar el dispositivo",                	      "@alert",  #-- selected = 1
      "Salir",                   "Regresar al recovery",           	                 "@install"    #-- selected = 2
  );
  
  #-- Reboot
  if prop("other_demo.prop","selected")=="1" then
	if
	  confirm(
		#-- Title
		  "Reiniciar",
		#-- Text
		  "¿Reiniciar el dispositivo?",
		#-- Icon (Optional)
		  "@reboot"
	  )=="yes"
	then
	  reboot("now");
	endif;
  endif;
  
  #-- Exit
  if prop("other_demo.prop","selected")=="2" then
	if
	  confirm(
		#-- Title
		  "Salir",
		#-- Text
		  "¿Volver al recovery?",
		#-- Icon (Optional)
		  "@exit"
	  )=="yes"
	then
	  #-- Exit - NOTE: Add dummy argument
	  exit("");
	endif;
  endif;
  
  #-- Back To Other Demo Menu
  back(
    getvar("1")
  );
endif;

	
menubox(
  #-- Title
    "Elige tu modelo:",
  
  #-- Sub Title
    "Elige el modelo de tu terminal:",
  
  #-- Icon
    "@personalize",
    
  #-- Will be saved in /tmp/aroma/type.prop
    "type.prop",
    
  #-------------------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
  # TITLE                               |  SUBTITLE                                                 |   Item Icons  #
  #-------------------------------------+-----------------------------------------------------------+---------------#
	
	"Arc S",				"Sony Xperia arc S LT18i",						                                        "@device",  #-- selected = 1
    "Arc",					"Sony Xperia arc LT15i",																"@device"  #-- selected = 2

		);


	
	selectbox(
    #-- Title
      "Apariencia personalizada",
	  
    #-- Sub Title
      "Elige lo que quieras que contenga tu nueva ROM",
	  
    #-- Icon
      "@choose",
	  
    #-- Will be saved in /tmp/aroma/patch.prop
      "patch2.prop",
      #-----------------------+-----------------[ Selectbox ]---------------------------+---------------#
      # TITLE                 |  SUBTITLE                                               | Initial Value #
      #-----------------------+---------------------------------------------------------+---------------#  
	  
    "Bloqueo de pantalla",		"",															2,	#-- Group 1. key = "selected.1"
	"AOSP lockscreen",	"Bloqueo de pantalla estilo AOSP, elegante y sencillo",						1,      #-- selected.1 = 1
	"Xperia T lockscreen",	"Bloqueo del Xperia T con shortcuts. ¡No olvides el parche!",		    0, 	    #-- selected.1 = 2
	"Barra de notificaciones",		"",								                        2,	#-- Group 2. key = "selected.2"
	"Estilo GX 1",	"Estilo GX, bateria en circulo blanco y toggles muy sencillos",	  			    1,     	#-- selected.2 = 1
	"Estilo GX 2",	"Estilo GX, similar a la anterior pero semitransparente",                       0, 		#-- selected.2 = 2
	"Estilo GX 3",	"Estilo GX, bateria de procentaje similar a MIUI",							    0,      #-- selected.2 = 3
	"Estilo GX 4",	"Estilo GX, bateria MIUI y toggles diferentes",					 		   	    0,      #-- selected.2 = 4
	"Estilo GX 5",	"Estilo GX, bateria en circulo blanco y toggles de colores",				    0,      #-- selected.2 = 5
	"Teclado",		"",																	   2,	#-- Group 3. key = "selected.3"
	"Xperia stock",	"Teclado de stock ICS",							                                1,      #-- selected.3 = 1
	"Xperia S",	"Teclado del Xperia S",										                        0,      #-- selected.3 = 2
	"Iconos",		"",																	   2,	#-- Group 4. key = "selected.4"
	"Iconos SIII",	"Iconos del Samsung Galaxy SIII",					                            1,      #-- selected.4 = 1
	"Iconos stock",	"Iconos de stock, propios de SONY",					                            0,      #-- selected.4 = 2
	"Navegador",		"",																   2,	#-- Group 5. key = "selected.5"
	"Dolphin Browser Beta",	"Recomendado: Rapido, gran apariencia, soporta HTML 5",	                1,      #-- selected.5 = 1
	"Navegador stock",	"Navegador de stock, propio de SONY",					                    0,      #-- selected.5 = 2
	"Launcher",		"",																	   2,	#-- Group 5. key = "selected.6"
	"SlimMania",	"Recomendado: Launcher propio de SlimMania, con opciones adicionales",			1,      #-- selected.6 = 1
	"Launcher stock",	"Launcher de stock de Xperia arc S, 4x4 con boton AOSP, simple",	        0,      #-- selected.6 = 2
	"APEX",	"Launcher APEX, con apariencia ICS, rapido y fluido",	   						        0,      #-- selected.6 = 3
	"ZEAM",	"Launcher ZEAM, sencillo y comodo",	      											    0,      #-- selected.6 = 4	
	"MIUI launcher",	"Launcher basado en el propio de MIUI, original y diferente",   	        0       #-- selected.6 = 5
	
	  #--------[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]---------#
  );
 
	checkbox(
    #-- Title
      "Aplicaciones opcionales",
	  
    #-- Sub Title
      "Selecciona las aplicaciones opcionales que quieras instalar",
	  
    #-- Icon: <AROMA Resource Dir>/icons/personalize.png or <ThemeDir>/icon.personalize.png
      "@choose",
	  
    #-- Will be saved in /tmp/aroma/patch.prop
      "patch.prop",
	  
      #-----------------------+-----------------[ Checkbox  ]---------------------------+---------------#
      # TITLE                 |  SUBTITLE                                               | Initial Value #
      #-----------------------+---------------------------------------------------------+---------------#  
	  
    "Aplicaciones opcionales",		"Elige las aplicaciones siguientes que quieras instalar",2,	#-- Group 1. key = "item.1.x"
	"Youtube",	"Aplicacion Youtube",                       									    0, 		#-- item.1.1
	"Gmail",	"Aplicacion GMail para ver tu correo electronico de Google",				        0,      #-- item.1.2
	"Email",	"Aplicacion Email de stock de Xperia",					 		             	    0,      #-- item.1.3
	"Script Manager",	"Aconsejable instalar para configurar despues SuperCharguer",			    1,      #-- item.1.4
	"Notas",	"Aplicacion Notas de stock de Xperia",			  								    0,      #-- item.1.5
	"DroidSail",	"Aplicacion que permite pasar apps a la SD, para mayor almacenamiento interno", 0,      #-- item.1.6
	"SDBooster",	"Aplicacion para aumentar la velocidad de transferencia de datos con la SD",    1,      #-- item.1.7
	"Smart Connect",	"Aplicacion para ejecutar ciertas acciones al conectar perifericos",    	0,      #-- item.1.8
	"ES explorador",	"Explorador y administrador de archivos ",    								0,      #-- item.1.9
	"Camara 3D",	"Camara y Album 3D stock de SONY ",    													0       #-- item.1.10
	 
	 );


##
#
# Next Screen is Installation UI
#
ini_set("text_next", "Install");

##
# READY TO INSTALL
#
viewbox(
  #-- Title
    "Instalacion preparada",

  #-- Text
    "Todo esta preparado para ser instalado.\n\n"+
	"Presiona <b>Instalar</b> para comenzar.\n\n"+
	"Si no estas seguro de tus elecciones, presiona <b>Atras</b>\n\n"+
	"Pulsar Menu -> Deja la instalacion, salir.",

  #-- Icon
    "@install"
);

ini_set("text_next", "Next");

#-- Extract sleep to /tmp/aroma/sleep. It will be used in updater-script for testing wait script
restotmp("exec_demo/sleep","sleep");

##
# INSTALLATION PROCESS
#
setvar("retstatus",
  install(
	#-- Title
      "Instalacion",
	
	#-- Installation Process message
	  "Instalando <b>"+ini_get("rom_name")+"</b>.\n\n"+
      "",
	
	#-- Installation Icon
      "@install",
	
	#-- Installation Finish Message
      "<b>"+ini_get("rom_name")+"</b> ha sido instalada correctamente. Pulsa Finalizar para acabar."
  )
);

ini_set("text_next", "Finish");


##
# FINISH
#
# You can use return value or "reboot_it" variable to retrive checkbox value
# Example:
# if (checkviewbox(....)=="1" then
#    ... checked ...
# endif;
#
checkviewbox(
  #-- Title
    "Hecho",
  
  #-- Text
    "<b>"+ini_get("rom_name")+"</b> ha sido instalada correctamente. ¡Disfruta de SlimMania!\n\n",
	
  #-- Icon
    "@welcome",

  #-- Checkbox Text
    "¡Reiniciando tu terminal!",

  #-- Initial Checkbox value ( 0=unchecked, 1=checked ) -  (Optional, default:0)
    "1",

  #-- Save checked value in variable "reboot_it" (Optional)
    "now"
);

if
  getvar("reboot_it")=="1"
then
  reboot("now");
endif;


updater-script
(Click para mostrar/ocultar)
Código:
format("yaffs2", "MTD", "system", "0");
mount("yaffs2", "MTD", "system", "/system");
mount("yaffs2", "MTD", "userdata", "/data");
ui_print("@Initializing file system...");
ui_print("Iniciando AROMA");


show_progress(0.95, "-55000");
ui_print("- Instalando aplicaciones del sistema.");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");

ui_print("@Dispositivo");
	# arcs
	if
	  file_getprop("/tmp/aroma/type.prop","selected") == "1"
	then
	ui_print("Xperia arc S LT18i");
	package_extract_dir("aroma/arcS", "/system/");
	endif;

	# arc
	if
	  file_getprop("/tmp/aroma/type.prop","selected") == "2"
	then
    ui_print("Xperia arc LT15i");
		package_extract_dir("aroma/arc", "/system/");
	endif;
	
	
##---- Customization
ui_print("@Bloqueo de pantalla");
	# aosplock
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.1") == "1"
	then
	ui_print("- Instalando AOSP lockscreen");
		package_extract_dir("aroma/AOSPlock", "/system/");
	endif;

	# xperiatlock
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.1") == "2"
	then
    ui_print("- Instalando Xperia T lockscreen. ¡No olvides el parche!");
		package_extract_dir("aroma/XperiaTlock", "/system/");
	endif;

ui_print("@Barra de notificaciones");
	# estilogx1
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "1"
	then
    ui_print("- Estilo GX, bateria en circulo blanco y toggles muy sencillos");
		package_extract_dir("aroma/EstiloGX1", "/system/app");
	endif;

	# estilogx2
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "2"
	then
    ui_print("- Estilo GX,similar a la anterior pero semitransparente");
		package_extract_dir("aroma/EstiloGX2", "/system/app");
	endif;

	# estilogx3
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "3"
	then
    ui_print("- Estilo GX, bateria de procentaje similar a MIUI");
		package_extract_dir("aroma/EstiloGX3", "/system/app");
	endif;
	
	# estilogx4
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "4"
	then
	ui_print("- Estilo GX, bateria MIUI y toggles diferentes");
		package_extract_dir("aroma/EstiloGX4", "/system/app");
	endif;
	
	# estilogx5
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.2") == "5"
	then
	ui_print("- Estilo GX, bateria en circulo blanco y toggles de colores");
		package_extract_dir("aroma/EstiloGX5", "/system/app");
	endif;

ui_print("@Teclado");
	# tecladostock
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.3") == "1"
	then
	ui_print("- Instalando Teclado de stock ICS");
	package_extract_dir("aroma/XperiaStockTeclado", "/system/");
	endif;

	# tecladoxperias
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.3") == "2"
	then
	ui_print("- Instalando Teclado del Xperia S");
	  package_extract_dir("aroma/XperiaSteclado", "/system/");
	endif;
	
ui_print("@Iconos");
	# iconoss3
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.4") == "1"
	then
	ui_print("- Aplicaciones con Iconos del Samsung Galaxy SIII");
	package_extract_dir("aroma/S3Iconos", "/system/app");
	endif;
	
	# iconosstock
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.4") == "2"
	then
	ui_print("- Aplicaciones con Iconos de stock de SONY");
	package_extract_dir("aroma/StockIconos", "/system/app");
	endif;
	
ui_print("@Navegador");
	# dolphin
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.5") == "1"
	then
	ui_print("- Instalando Dolphin Browser Beta");
	package_extract_dir("aroma/Dolphin", "/system/app");
	endif;	
	
	# browstock
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.5") == "2"
	then
	ui_print("- Instalando Navegador de stock de SONY");
	package_extract_dir("aroma/BrowStock", "/system/app");
	endif;	

ui_print("@Launcher");
	# slimlauncher
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "1"
	then
	ui_print("- Instalando Launcher propio de SlimMania");
	package_extract_dir("aroma/LaunchSlim", "/system/");
	endif;	
	
	# launchstock
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "2"
	then
	ui_print("- Instalando Launcher propio de SONY");
	package_extract_dir("aroma/LaunchStock", "/system/");
	endif;
	
	# apex
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "3"
	then
	ui_print("- Instalando Apex launcher");
	package_extract_dir("aroma/Apex", "/system/");
	endif;
	
	# zeam
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "4"
	then
	ui_print("- Instalando Zeam Launcher");
	package_extract_dir("aroma/Zeam", "/system/");
	endif;
	
	# miui
	if
	  file_getprop("/tmp/aroma/patch2.prop","selected.6") == "5"
	then
	ui_print("- Instalando Launcher estilo MIUI");
	package_extract_dir("aroma/LaunchMIUI", "/system/");
	endif;

ui_print("@Aplicaciones opcionales");
	# youtube
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.1") == "1"
	then
	ui_print("- Instalando Youtube");
	  package_extract_dir("aroma/Youtube", "/data/app");
	endif;
	
	# gmail
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.2") == "1"
	then
	ui_print("- Instalando GMail");
		package_extract_dir("aroma/Gmail", "/data/app");
	endif;
	
	# email
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.3") == "1"
	then
	ui_print("- Instalando Email de stock de Xperia");
		package_extract_dir("aroma/Emailstock", "/system/app");
	endif;
	
	# scriptmanager
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.4") == "1"
	then
	ui_print("- Instalando Script Manager");
		package_extract_dir("aroma/ScriptManager", "/data/app");
	endif;
	
	# notas
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.5") == "1"
	then
	ui_print("- Instalando Notas de stock de Xperia");
		package_extract_dir("aroma/Notasstock", "/system/app");
	endif;
	
	# droidsail
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.6") == "1"
	then
	ui_print("- Instalando DroidSail APP to SD");
		package_extract_dir("aroma/droidsail", "/system/app");
	endif;
	
	# sdbooster
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.7") == "1"
	then
	ui_print("- Instalando SD Booster");
		package_extract_dir("aroma/SDbooster", "/system/app");
	endif;
	
	# smartconect
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.8") == "1"
	then
	ui_print("- Instalando SmartConnect");
		package_extract_dir("aroma/smartconnect", "/data/app");
	endif;
	
	# esexplorador
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.9") == "1"
	then
	ui_print("- Instalando ES explorador");
		package_extract_dir("aroma/ESexplorador", "/data/app");
	endif;
	
	# 3d
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.10") == "1"
	then
	ui_print("- Instalando Camara y Album 3D");
		package_extract_dir("aroma/3D", "/system/app");
	endif;
	
		
ui_print("");
ui_print("Flasheando SlimMania...");
show_progress(0.14, 3);
package_extract_dir("sdcard", "/sdcard");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");
symlink("toolbox", "/system/bin/start");
symlink("toolbox", "/system/bin/lsmod");
symlink("toolbox", "/system/bin/r");
symlink("toolbox", "/system/bin/vmstat");
symlink("toolbox", "/system/bin/ifconfig");
symlink("toolbox", "/system/bin/ionice");
symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/wipe");
symlink("toolbox", "/system/bin/reboot");
symlink("toolbox", "/system/bin/rmdir");
symlink("toolbox", "/system/bin/route");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/lsof");
symlink("toolbox", "/system/bin/getevent");
symlink("toolbox", "/system/bin/mkdir");
symlink("toolbox", "/system/bin/netstat");
symlink("toolbox", "/system/bin/renice");
symlink("toolbox", "/system/bin/uptime");
symlink("mksh", "/system/bin/sh");
symlink("toolbox", "/system/bin/smd");
symlink("toolbox", "/system/bin/sync");
symlink("toolbox", "/system/bin/mount");
symlink("toolbox", "/system/bin/printenv");
symlink("toolbox", "/system/bin/top");
symlink("toolbox", "/system/bin/log");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/ps");
symlink("toolbox", "/system/bin/dmesg");
symlink("toolbox", "/system/bin/umount");
symlink("toolbox", "/system/bin/kill");
symlink("toolbox", "/system/bin/stop");
symlink("toolbox", "/system/bin/newfs_msdos");
symlink("toolbox", "/system/bin/iftop");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/rmmod");
symlink("toolbox", "/system/bin/setconsole");
symlink("toolbox", "/system/bin/mv");
symlink("toolbox", "/system/bin/rm");
symlink("toolbox", "/system/bin/id");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/hd");
symlink("toolbox", "/system/bin/ctrlaltdel");
symlink("toolbox", "/system/bin/sleep");
symlink("toolbox", "/system/bin/ls");
symlink("toolbox", "/system/bin/cmp");
symlink("toolbox", "/system/bin/insmod");
symlink("toolbox", "/system/bin/nandread");
symlink("toolbox", "/system/bin/date");
symlink("toolbox", "/system/bin/dd");
symlink("toolbox", "/system/bin/getprop");
symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/df");
symlink("toolbox", "/system/bin/touch");
symlink("toolbox", "/system/bin/ioctl");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/notify");
symlink("toolbox", "/system/bin/ln");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 06755, "/system/bin/ip");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm(0, 0, 0644, "/system/lib/libgoogle_recognizer_jni.so");
set_perm(0, 0, 0644, "/system/app/GoogleQuickSearchBox.apk");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
set_perm_recursive(0 ,0 , 0755, 0755, "/system/etc/init.d");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 0, 0755, "/system/etc/be_movie");
set_perm(0, 0, 0755, "/system/etc/be_photo");
set_perm(0, 0, 06755, "/system/bin/su");
set_perm(0, 2000, 0755, "/system/bin/sysinit");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 1000, 0755, "/system/xbin/busybox");
delete("/system/xbin/busybox-installer");
set_perm(0, 0, 04755, "/system/xbin/busybox");
set_perm(0, 0, 0644, "/system/etc/group");
set_perm(0, 0, 0644, "/system/etc/gshadow");
set_perm(0, 0, 0644, "/system/etc/passwd");
set_perm(0, 0, 0644, "/system/etc/shadow");
package_extract_file("busybox_update.sh", "/tmp/busybox_update.sh");
set_perm(0, 0, 0777, "/tmp/busybox_update.sh");
run_program("/tmp/busybox_update.sh");
run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");
symlink("/system/bin/su", "/system/xbin/su");
symlink("/system/fonts/Roboto-Regular.ttf","/system/fonts/DroidSans.ttf");
symlink("/system/fonts/Roboto-Bold.ttf","/system/fonts/DroidSans-Bold.ttf");
symlink("/factory/hdcp.keys","/system/vendor/firmware/hdcp.keys");
symlink("/data/etc/wifi/wl1271-nvs.bin","/system/etc/firmware/ti-connectivity/wl1271-nvs.bin");
unmount("/system");
unmount("/data");
show_progress(1, 0);
ui_print("¡Instalacion completada! ¡Disfruta de SlimMania!");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print("Agradece el trabajo a los desarrolladores, ¡anima a seguir trabajando!");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(" ");
Responder Con Cita
Los siguientes 19 usuarios han agradecido a JesusAlber1 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #3  
Viejo 14/11/12, 05:31:30
Avatar de 'Shiino
'Shiino 'Shiino no está en línea
Usuario muy activo
Mensajes: 2,683
 
Fecha de registro: ene 2012
Localización: Escondido En Italia
Mensajes: 2,683
Modelo de smartphone: Nexus 4 // Xperia Z2
Versión de ROM: »» Mandhi Final / Stock 5.1.1
Versión de Radio: No me gusta
Tu operador: TELCEL
Mencionado: 2 comentarios
Tagged: 0 hilos
Excelente tuto! Jesus! una duda, tu rom es ICS , si yo intentara usara tus codigos para usarla en una rom GB no funcionaria?
Responder Con Cita
  #4  
Viejo 15/11/12, 16:34:11
Avatar de Gus_Tineo
Gus_Tineo Gus_Tineo no está en línea
Colaborador asturiano
Mensajes: 2,179
 
Fecha de registro: may 2012
Localización: Asturies
Mensajes: 2,179
Modelo de smartphone: Pixel 6
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
Muy buen aporte para la gente que está/estamos empezando
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 17/11/12, 14:22:20
Avatar de JesusAlber1
JesusAlber1 JesusAlber1 no está en línea
Usuario veterano
Mensajes: 563
 
Fecha de registro: may 2012
Localización: Madrid
Mensajes: 563
Modelo de smartphone: Samsung Galaxy S4
Versión de ROM: iOS 8
Versión de Radio: No tiene :(
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por 'Shiino Ver Mensaje
Excelente tuto! Jesus! una duda, tu rom es ICS , si yo intentara usara tus codigos para usarla en una rom GB no funcionaria?
Hasta donde yo sé sí se puede usar en GB, de hecho hay ROMs basadas GB que tienen instalador AROMA.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 28/12/12, 09:29:18
Avatar de rilo
rilo rilo no está en línea
Desarrollador
Mensajes: 1,191
Compra y venta: (4)
 
Fecha de registro: jun 2009
Localización: Ávila
Mensajes: 1,191
Modelo de smartphone: Realme 5
Tu operador: Lowi
Mencionado: 1 comentarios
Tagged: 0 hilos
Hola JesusAlbert1

Y si lo que uqeremos es añadir AROMA a una ROM que no lo tiene?

Tienes alguna versión descargable del tutorial?

Muchas gracias.
Responder Con Cita
  #7  
Viejo 31/12/12, 10:32:07
Avatar de JesusAlber1
JesusAlber1 JesusAlber1 no está en línea
Usuario veterano
Mensajes: 563
 
Fecha de registro: may 2012
Localización: Madrid
Mensajes: 563
Modelo de smartphone: Samsung Galaxy S4
Versión de ROM: iOS 8
Versión de Radio: No tiene :(
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por rilo Ver Mensaje
Hola JesusAlbert1

Y si lo que uqeremos es añadir AROMA a una ROM que no lo tiene?

Tienes alguna versión descargable del tutorial?

Muchas gracias.
Justamente este tutorial es para meter el instalador AROMA en una ROM que no lo tiene, configurando tú cada apartado.

Lo único específico de tu dispositivo que debes saber es la calibración de pantalla (sino al ejecutarse el instalador saldrá todo mal ajustado). Se puede ver en el instalador AROMA de cualquier ROM de tu dispositivo, sino, yo te ayudo a encontrarla

No tengo versión descargable, de todas formas, podría hacerla en unos días

Cualquier duda, envíame un privado y lo vemos mejor!
Responder Con Cita
  #8  
Viejo 31/12/12, 12:52:14
Avatar de rilo
rilo rilo no está en línea
Desarrollador
Mensajes: 1,191
Compra y venta: (4)
 
Fecha de registro: jun 2009
Localización: Ávila
Mensajes: 1,191
Modelo de smartphone: Realme 5
Tu operador: Lowi
Mencionado: 1 comentarios
Tagged: 0 hilos
Lo había entendido mal.

No te preocupes que me lo copio en word y ya está.

Gracias por tu ofrecimiento.
Responder Con Cita
  #9  
Viejo 03/01/13, 01:30:30
Avatar de cova86
cova86 cova86 no está en línea
Miembro del foro
Mensajes: 150
 
Fecha de registro: dic 2011
Localización: Mexico
Mensajes: 150
Modelo de smartphone: Xperia X10
Versión de ROM: Angelinux v8
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
Hola amigo, bueno antes que nada debo agradecerte por tu post, es muy intuitivo y facil de usar, se agradece tu aporte, desde hace tiempo tenia pensado implementarle aroma a mi rom en su proxima version, queria preguntarte dentro de la carpeta /aroma las aplicaciones que se pongan alli, por ejemplo dentro de la carpeta 3D, la ruta default de la aplicacion es /data o hay que crear una carpeta /data y dentro de ella hay que poner la aplicacion, saludos y de nuevo gracias por tu aporte....
Responder Con Cita
  #10  
Viejo 04/01/13, 01:36:12
Avatar de cova86
cova86 cova86 no está en línea
Miembro del foro
Mensajes: 150
 
Fecha de registro: dic 2011
Localización: Mexico
Mensajes: 150
Modelo de smartphone: Xperia X10
Versión de ROM: Angelinux v8
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
Me corrigo ya lei todo el post, solo una duda mas, en la primera parte y en la 6 parte de updater-script ejecutas dos veces

package_extract_dir("sdcard", "/sdcard");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");

Se sobreescriben de nuevo los valores no??, esto es realmente necesario o se puede dejar solo una d las dos partes???? saludos y gracias por el post
Responder Con Cita
  #11  
Viejo 07/01/13, 11:17:27
Avatar de tarkin88
tarkin88 tarkin88 no está en línea
Cocinero veterano
Mensajes: 763
 
Fecha de registro: abr 2010
Localización: México
Mensajes: 763
Modelo de smartphone: Moto G 4.4 / OTF Firefox OS 1.4
Versión de ROM: Tweaky One ROM
Versión de Radio: -
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Yo tengo una duda, vengo del foro del Galaxy Ace, y me gustaria le dieran un vistazo a mis scripts, instala solo las primeras opciones es decir:
Código:
selected.1 , 2  y 3
pero del 4 al 6 me lo ignora completamente. Ademas en:
Código:
#-- selected.4 = 2
lo que va a extaer es una carpeta con varias carpetas dentro (es un mod) y no se si lo este poniendo como debe ser. Agradeceria su ayuda, adjunto mis archivos y de antemano gracias!
Responder Con Cita
  #12  
Viejo 25/01/13, 03:53:37
Avatar de raziel-77
raziel-77 raziel-77 no está en línea
Historiador Android
Mensajes: 12,599
 
Fecha de registro: sep 2009
Localización: Los "Madriles"
Mensajes: 12,599
Modelo de smartphone: LG G2 / SG SII / HTC Magic / Xperia J / Galaxy Ace
Versión de ROM: Todo lo que se pueda flashear
Versión de Radio: Rock FM
Tu operador: Vodafone
Mencionado: 47 comentarios
Tagged: 3 hilos
Tremendo tutorial de Aroma Instaler.

Llevaba unos dias dandole vueltas a este instalador y ya tenia alguna cosa mas o menos clara, pero otras aunque el concepto lo tenia no sabia como llevarlo a cabo.

Suerte que encontre este tutorial y creo que ahora lo tendre todo claro en breve segun avance.

Muchas gracias JesusAlber1.

Seguire trabajando sobre la base que ya tenia, pero con tu permiso utilizare alguna cosa muy similar del tuyo. Segun avance ire quitando esas partes similares de tu codigo y creando uno propio 100% (obviamente algunas cosas es imposible de cambiar por ser obligatorias para el funcionamiento y comun a todos los desarrolladores).
Responder Con Cita
Gracias de parte de:
  #13  
Viejo 19/03/13, 07:54:51
Avatar de jberten
jberten jberten no está en línea
Miembro del foro
Mensajes: 42
 
Fecha de registro: mar 2011
Mensajes: 42
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
buenas jesusalber1, yo solo estaba interesado en instalar unas apps nuevas pero me da error cuando lo instalo, me refiero que no me llega a abrir el AROMA, me sale error,
SYNTAXIX ERROR!!! aroma-config on line 271 col 9
(Status 1)

segui todos los pasos o eso creo porquer me da este error
gracias
Responder Con Cita
  #14  
Viejo 13/07/13, 21:48:58
Avatar de Merche300
Merche300 Merche300 no está en línea
Betatester oficial
Mensajes: 625
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Versión de ROM: Cata
Versión de Radio: Radio Macuto
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
Muy bueno, pero por mucho que lo intento no lo consigo, lo que me gustaria es tener mis apks organizadas, por ejemplo, una pantalla con una lista por ejemplo, una linea para aplicaciones invertidas y otra linea para iconos de bateria, osea dos renglones en una pantalla, al pulsar por ejeplo aplicaciones invertidas me lleve a otra pantalla para seleccionar las que quiero instalar, digamos que dos grupos, ¿como seria posible esto?
Responder Con Cita
  #15  
Viejo 02/08/13, 20:51:24
Avatar de JesusAlber1
JesusAlber1 JesusAlber1 no está en línea
Usuario veterano
Mensajes: 563
 
Fecha de registro: may 2012
Localización: Madrid
Mensajes: 563
Modelo de smartphone: Samsung Galaxy S4
Versión de ROM: iOS 8
Versión de Radio: No tiene :(
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Perdonad a todos por haber "abandonado" este post durante un tiempo, pero he estado muy liado y me ha sido completamente imposible conectarme...

Ya estoy de vuelta con más tiempo y os ayudaré en todo lo que sea posible.
Responder Con Cita
  #16  
Viejo 02/08/13, 21:01:47
Avatar de JesusAlber1
JesusAlber1 JesusAlber1 no está en línea
Usuario veterano
Mensajes: 563
 
Fecha de registro: may 2012
Localización: Madrid
Mensajes: 563
Modelo de smartphone: Samsung Galaxy S4
Versión de ROM: iOS 8
Versión de Radio: No tiene :(
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por tarkin88 Ver Mensaje
Yo tengo una duda, vengo del foro del Galaxy Ace, y me gustaria le dieran un vistazo a mis scripts, instala solo las primeras opciones es decir:
Código:
selected.1 , 2  y 3
pero del 4 al 6 me lo ignora completamente. Ademas en:
Código:
#-- selected.4 = 2
lo que va a extaer es una carpeta con varias carpetas dentro (es un mod) y no se si lo este poniendo como debe ser. Agradeceria su ayuda, adjunto mis archivos y de antemano gracias!
Por lo que veo te contesto bastante tarde, pero para cualquier compañero que lo necesite:

Si hay más selected que los que he dado yo en el ejemplo, tenemos que poner las condiciones para completar.

Ejemplo:
Código:
	# youtube
	if
	  file_getprop("/tmp/aroma/patch.prop","item.1.1") == "1" 
	then
	ui_print("- Instalando Youtube");
	  package_extract_dir("aroma/Youtube", "/data/app");
	endif;
Para cada opción, copiamos y pegamos cada bloque de código como este y donde el número remarcado copiamos para el número que sea en cada caso, luego cambiamos también los directorios de donde sacamos las aplicaciones.
Responder Con Cita
  #17  
Viejo 02/08/13, 21:10:08
Avatar de JesusAlber1
JesusAlber1 JesusAlber1 no está en línea
Usuario veterano
Mensajes: 563
 
Fecha de registro: may 2012
Localización: Madrid
Mensajes: 563
Modelo de smartphone: Samsung Galaxy S4
Versión de ROM: iOS 8
Versión de Radio: No tiene :(
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por jberten Ver Mensaje
buenas jesusalber1, yo solo estaba interesado en instalar unas apps nuevas pero me da error cuando lo instalo, me refiero que no me llega a abrir el AROMA, me sale error,
SYNTAXIX ERROR!!! aroma-config on line 271 col 9
(Status 1)

segui todos los pasos o eso creo porquer me da este error
gracias
SYNTAXIS ERROR es un error que se da cuando la máquina intenta leer el código y éste no cumple unas reglas requeridas.

En este código tenemos que ser muy rigurosos con la sintaxis porque como no pongamos un ; o un ), el código nos da error.

Para los SYNTAXIS ERROR!, ve con el notepad++ pulsa: Ctrl+G y escribe la línea de código donde te da el error, luego buscas ahí que es lo que no cumple las normas de sintaxis.

Se suelen dar bastantes problemas:
-No terminar las líneas que llevan ;
-Acabar siempre un checkbox(), viewbox(), selectbox() con ;
-Siempre que tengamos opciones como un selectbox(), poner una , (coma) siempre que acabemos de poner el valor inicial (1-marcado, 2-sin marcar), EXCEPTO en la última línea que no lleva la , (coma)
-...
Espero que te sirva de ayuda para un futuro.
Responder Con Cita
  #18  
Viejo 02/08/13, 21:16:23
Avatar de JesusAlber1
JesusAlber1 JesusAlber1 no está en línea
Usuario veterano
Mensajes: 563
 
Fecha de registro: may 2012
Localización: Madrid
Mensajes: 563
Modelo de smartphone: Samsung Galaxy S4
Versión de ROM: iOS 8
Versión de Radio: No tiene :(
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por Merche300 Ver Mensaje
Muy bueno, pero por mucho que lo intento no lo consigo, lo que me gustaria es tener mis apks organizadas, por ejemplo, una pantalla con una lista por ejemplo, una linea para aplicaciones invertidas y otra linea para iconos de bateria, osea dos renglones en una pantalla, al pulsar por ejeplo aplicaciones invertidas me lleve a otra pantalla para seleccionar las que quiero instalar, digamos que dos grupos, ¿como seria posible esto?
Por lo que dices, parece que quieres que según las opciones, vaya a una ventana u otra, no?
Yo no he visto eso hecho, pero imagino que escribiendo líneas de código podría conseguirse... Ahora mismo yo no tengo tiempo para hacértelo, pero pásate por xda a ver si alguna ROM nueva lo incorpora...

Sino, lo que puedes hacer sería crear un checkbox() o selectbox() con los títulos que dices y a continuación poner las aplicaciones, es decir, lo que está explicado en el tutorial.

Lo que dices es buena idea porque es bastante organizado, pero bueno, creo que AROMA nos proporciona algo similar y yo creo que es bastante, elegir una ROM personalizada la verdad es que es algo bastante interesante.

Siento no haber podido ayudarte más, cualquier cosa pregúntala que me paso por aquí.
Responder Con Cita
Gracias de parte de:
  #19  
Viejo 03/08/13, 06:56:36
Avatar de Mauritooo
Mauritooo Mauritooo no está en línea
Miembro del foro
Mensajes: 75
 
Fecha de registro: jul 2012
Localización: Argentina
Mensajes: 75
Modelo de smartphone: Xperia Tipo ST21a
Versión de ROM: COBRA vBETA | JB 4.1.2
Tu operador: Claro
Mencionado: 0 comentarios
Tagged: 0 hilos
Post

Cita:
Originalmente Escrito por Merche300 Ver Mensaje
Muy bueno, pero por mucho que lo intento no lo consigo, lo que me gustaria es tener mis apks organizadas, por ejemplo, una pantalla con una lista por ejemplo, una linea para aplicaciones invertidas y otra linea para iconos de bateria, osea dos renglones en una pantalla, al pulsar por ejeplo aplicaciones invertidas me lleve a otra pantalla para seleccionar las que quiero instalar, digamos que dos grupos, ¿como seria posible esto?
esto se hace usando keys guardadas en un archivo prop, y puedes emplear un selectbox o menubox, estas estructuras guardan la seleccion del usuario en un archivo que luego puedes controlar mediante un IF para decidir que camino toma la instalacion.

Código:
selectbox(
    "Que deseas hacer?",
    "Elige una opcion:",
    "@icono",
    "archivo_donde_se_guarda_la_opcion.prop",
  
  #-------------------------------------------------------#
  # TITLE            |  SUBTITLE          | Initial Value #
  #------------------+--------------------+---------------#

    "Aplicaciones",  "instala algo",           1,      #-- selected.0 = 1
    "MODS",           "mods disponibles",    0      #-- selected.0 = 2
);

if prop("archivo_donde_se_guarda_la_opcion.prop","selected.0")=="1" then

menubox();   <---menu para la primera opcion

endif;

if prop("archivo_donde_se_guarda_la_opcion.prop","selected.0")=="2" then

selectbox();  ó menubox();  <---menu para la segunda opcion

endif;
Responder Con Cita
Los siguientes 2 usuarios han agradecido a Mauritooo su comentario:


  #20  
Viejo 14/08/13, 02:13:26
Avatar de RuralGalaxy
RuralGalaxy RuralGalaxy no está en línea
Betatester oficial
Mensajes: 2,758
Compra y venta: (1)
 
Fecha de registro: mar 2011
Localización: Balearic Islands
Mensajes: 2,758
Modelo de smartphone: Note4
Versión de ROM: Lollipop 5.1.1
Versión de Radio: GhettoBlaster
Tu operador: Vodafone
Mencionado: 10 comentarios
Tagged: 0 hilos
Gracias por este tutorial! Muy útil y interesante! ;)
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   HTCMania > La Cocina de ROMs > Cocina para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 17:27:35 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007