¿Cómo crear una recuperación de Android y modificarla?
Introducción a la sintaxis de Edify (scripts de actualización) Traducción: Kawvin
Esta es una introducción básica al lenguaje Edify para ejecutar scripts de actualización para Android.
La mayoría de los términos de Edify son funciones que devuelven datos al script cuando finaliza su llamada. Por supuesto, también puede utilizar los valores de retorno de estas funciones para confirmar el éxito, por ejemplo:
ifelse(mount("yaffs2", "MTD", "system", "/system") == "system", ui_print("¡Montado con éxito!"), ui_ print("¡Error de montaje!");
Este comando intentará montar la partición "MTD" denominada "system" en "/ sistema". Si se carga correctamente, el script mostrará "¡Montado con éxito!"; de lo contrario, mostrará "¡Error de montaje!"
Este es un ejemplo de una función utilizada en el script de actualización de Edify:
Nombre de la función: montaje
Sintaxis de la función: montaje (tipo_fs, tipo_partición, ubicación, punto_montaje)
Detalles del parámetro tipo_fs----------- ------ "yaffs2" o "ext4"
tipo_partición----------"MTD" o "EMMC"
ubicación---. ------- ------- Partición o dispositivo
mount_poin------------ La carpeta de destino para montar FS
Descripción de la función: montar el sistema de archivos Montar en el punto de montaje especificado
Valor de retorno: si el montaje se realiza correctamente, se devuelve el punto de montaje; si falla, se devuelve nulo
Devolver; valor: si el montaje se realiza correctamente, devuelve el punto de montaje; si el montaje falla, devuelve un valor nulo
Valor de retorno: si el montaje se realiza correctamente, devuelve el punto de montaje nulo
Ejemplo función: mount(" MTD", "system", "/system"); monta la partición del sistema y establece el puntero de retorno en "/system"
mount("vfat", "/dev/block) /mmcblk1p2", " /system"); montar /dev/block/mmcblk1p2, devolver puntero "/system"
Nombre de la función: is_mounted
Sintaxis de la función: is_mounted(mount_point)
Detalles de los parámetros.
mount_point---------- cadena, verifique si el punto de montaje se ha montado
Descripción de la función: verifique si el sistema de archivos se ha montado
Valor de retorno: si el montaje es exitoso, se devuelve el punto de montaje; si falla, se devuelve un valor nulo
Ejemplo de función:
Nombre de función: desmontar
Sintaxis de función : desmontar(mount_point)
Parámetro: mount_point---------- cadena, el punto de montaje que se va a desmontar
Descripción de la función: desmontar el sistema de archivos
Valor de retorno: el punto de montaje se devuelve si la desinstalación se realiza correctamente y se devuelve nulo si falla
Ejemplo de función: unmount("/system"); >
Nombre de la función: formato
Sintaxis de la función: formato(fs_type, partición_tipo, ubicación)
Detalles del parámetro: fs_type------- ------ ---- cadena," yaffs2 "o "ext4"
tipo_partición---------- cadena, "MTD" o "EMMC"
ubicación-- ------ --------- Cadena, partición o dispositivo
Explicación de la función: Formatear al sistema de archivos especificado
Ejemplo de función: format("MTD ", "sistema "); Formatear partición del sistema
Nombre de la función: eliminar
Sintaxis de la función: eliminar(archivo1, archivo2, ... ..., archivoN)
Argumentos: cadena, archivo a eliminar
Explicación de la función: eliminar un archivo. Especifique al menos un archivo; se pueden especificar varios archivos como múltiples parámetros
Ejemplo: eliminar("/data/zipalign.log"); eliminar el archivo /data/zipalign.log
Nombre de la función: eliminar_recursiva
Sintaxis de la función: eliminar_recursiva(dir1, dir2, ..., dirN)
Argumentos: Cadena de directorio que se eliminará de forma recursiva
Descripción : elimina la carpeta y todo su contenido.
Especifique al menos 1 directorio; se pueden especificar varios directorios como múltiples parámetros
Ejemplo: delete_recursive("/data/dalvik-cache"); eliminar la carpeta /data/dalvik-cache
Nombre de la función: show_progress
Sintaxis de la función: show_progress(frac, sec)
Detalles del parámetro: frac----------------- - ----Valor de ProgressCompletion
Sec----------------------TotalSeconds
Explicación de la función: mostrar el progreso de recuperación en el progreso del sistema
Ejemplo de función: show_progress(0.1, 10); show_progress Las siguientes operaciones se pueden realizar durante 10 segundos. Una vez completadas, la barra de progreso avanza 0,1 (es decir, 10)
Nombre de la función: set_progress
Sintaxis de la función: set_prograss(fracPrograss(ftp)) prograss(frac)
Detalles del parámetro: frac--- ---- -------------- Valor de progreso
Ejemplo de función:
Nombre de función: package_extract_dir
Sintaxis de función : package_extract_dir( ruta_paquete, ruta_destino)
Detalles del parámetro: ruta_paquete---------- cadena, el directorio en el paquete de actualización que se extraerá
ruta_destino--- ---- - Cadena, directorio de destino para extraer archivos
Descripción: paquete_extract_file
Sintaxis de la función: paquete_extract_file(paquete_ruta) o paquete_extract_file(paquete_ruta, destino_ruta)
Detalles de los parámetros. package_path---------- cadena, el archivo que se extraerá del paquete de actualización
destination_path------- cadena, el directorio de destino para extraer el archivo
Explicación de la función: extraiga un único archivo del paquete de actualización al directorio de destino especificado
Ejemplo: package_extract_file("my. extract_file("my.zip", "/system"); extraiga la ROM empaquete el archivo my.zip en /system
Nombre de la función: file_getprop
Sintaxis de la función: file_getprop(archivo, clave)
Detalles del parámetro.
file---------------------- Cadena, el nombre del archivo a verificar
Clave--------- - ------------ Cadena, devuelve el nombre de la clave del archivo en los datos
Descripción de la función: Obtiene el valor del atributo del archivo en el archivo, el formato es "key"="value"
Ejemplo de función:
Nombre de función: enlace simbólico
Sintaxis de función: enlace simbólico(destino, src1, src2, ... , srcN)., srcN)
Parámetros: target------------------ cadena, el destino del enlace simbólico que se creará
srcX ----- ---------------- Cadena, el destino del enlace simbólico que se creará
Explicación de la función: desconectar el enlace simbólico existente antes de crearlo un nuevo enlace simbólico. Función de ejemplo: symlink("toolbox", "/system/bin/ps"); Crea un enlace simbólico que apunte a toolbox/system/bin/ps
Nombre de la función: set_perm
Sintaxis: set_perm(); Crea un enlace simbólico que apunta a la caja de herramientas/system/bin/ps
Nombre de la función: set_perm
Sintaxis de la función: set_perm(); apuntando a la caja de herramientas/sistema Enlace simbólico a /bin/ps
Nombre de la función: set_perm
Sintaxis de la función: set_perm(uid, gid, mode, file1, file2, ..., fileN)
Detalles del parámetro: uid---------------------- ID de usuario (ID de usuario)
Gid- ------ ---------------ID de grupo de usuarios (ID de grupo)
Modo-------------- --- --- Modo de permiso (modo de permiso)
fileX--------------------- El archivo para el que se establecerán los permisos (el archivo para el cual se establecerán los permisos)
Descripción de la función: establezca los permisos de un solo archivo o una serie de archivos, especifique al menos 1 archivo, los primeros cuatro parámetros son obligatorios
Función de ejemplo: set_perm(0, 2000, 0550, "system/etc/init.goldfish.sh"); establece el usuario de etc/init.goldfish.sh en el sistema móvil como root y el grupo de usuarios como shell. y los propietarios y miembros del grupo de usuarios al que pertenece shell. (Puede leer y ejecutar operaciones, otros usuarios no tienen permiso para operar)
Aquí 0 significa que el usuario es root
2000 significa que el grupo de usuarios es shell
Hagamos esto Descripción de este conjunto de datos 0550. Los últimos tres dígitos de este conjunto de datos son 550, que representan respectivamente los permisos de "propietario\grupo de usuarios\otro usuario", que es lo que administramos en RE Las tres líneas "usuario\grupo\otro" en él. Usamos /p>
Primero debemos entender el significado de las propiedades representadas por números: 0 significa sin permiso, 1 significa permiso ejecutable, 2 significa permiso de escritura, 4 significa permiso de lectura y luego sumarlos.
Por lo tanto, el formato de un atributo numérico debe ser de 3 dígitos octales del 0 al 7.
Por ejemplo, si desea que el propietario del archivo tenga permisos de "lectura/escritura", deberá ingresar 4 (legible) 2 (escribible) = 6 (lectura/escritura). Si desea la propiedad rwx, entonces 4 2 1=7 si desea la propiedad rw-, entonces 4 2=6 si desea la propiedad r-x, entonces 4 1=5;
Comandos comunes para modificar permisos:
Set_perm 0 0 0 0600 × × × × (solo el propietario tiene permisos de lectura y escritura)
Set_perm 0 0 0 0644 × × × Solo el propietario tiene permisos de lectura, escritura y ejecución)
Set_perm 0 0666 ××× (Todos tienen permisos de lectura y escritura)
Set_perm 0 0777 ××× ( Todos tienen permisos de lectura, escritura y ejecución)
Nombre de la función: set_perm_recursive
Sintaxis de la función: set_perm_recursive(uid, gid, dirmode, filemode, dir1, dir2, ..dirN) p>
Detalles del parámetro: uid---------------------- ID de usuario
Gid--------- ------------ ---------- ID de grupo
Dirmode--------------- Especifique los permisos del directorio en el directorio
Filemode- -------------- Especifique los permisos de los archivos en el directorio
dirX----- ---------------- Configuración Destino de permiso
Explicación de la función: establece los permisos de todos los archivos en un solo directorio o una serie de directorios. Especifique al menos 1 directorio y requiera 5 parámetros
Función de ejemplo: set_perm_recursive 0 0 0755 0644 SISTEMA: aplicación; configura el usuario en la carpeta del sistema/aplicación móvil y sus archivos como raíz, grupo de usuarios como raíz, aplicación Los permisos de carpeta son que el propietario puede realizar operaciones de lectura, escritura y ejecución, y otros usuarios pueden realizar operaciones de lectura y ejecución. Los permisos de archivo son que el propietario puede realizar operaciones de lectura, escritura y otros usuarios pueden realizar operaciones de lectura.
Nombre de la función: getprop
Sintaxis de la función: getprop(key)
Detalles del parámetro: key----------------- - -- cadena de caracteres, el atributo que desea que devuelva el sistema
Descripción: esta función se utiliza para devolver el valor del atributo especificado. Se utiliza para buscar información sobre el teléfono en el archivo build.props.
Función de ejemplo:
Nombre de la función: write_raw_image
Sintaxis de la función: write_raw_image(archivo, partición)
Detalles del parámetro: archivo-- -------------------- Cadena, el valor que se leerá del archivo fuente Img
Partición---------- ------- Cadena, partición de destino en la que escribir el archivo Img
Explicación de la función: esta función se utiliza para escribir el archivo Img en la partición
Ejemplo de función: write_raw_image ("/ tmp/boot.img", "boot") escribe directamente el paquete de inicio en formato yaffs2 en la partición de inicio
Nombre de la función: apply_patch
Sintaxis de la función: apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1_1, patch_1, ..., sha1_x, patch1_x)
Detalles de los parámetros: srcfile------------------ cadena, el archivo fuente a parchear (el archivo a leer)
Tgtfile------------------ cadena, el archivo de parche a escribir en el archivo de destino
tgtsha1----------------- Cadena, cadena, valor hash sha1 del archivo de destino que se escribirá en el archivo de parche
sha1_x--- --------------- Cadena, el valor hash sha1 de los datos del parche que se escribirán en el archivo de destino patch1_x---------- ----- Cadena, el parche realmente aplicado al archivo de destino
Descripción de la función: esta función se utiliza para parchear el archivo.
Ejemplo de función:
Nombre de función: apply_patch_check
Sintaxis de función: apply_patch_check(archivo, sha1_1, ..., sha1_x)
Parámetros: archivo---------------------- cadena, archivo a verificar
sha1_x---------- - -------, el valor hash a verificar
Explicación de la función: verifique si el archivo ha sido parcheado o puede parchearse. Es necesario verificar el código fuente de la llamada a la función "applypatch_check".
Función de ejemplo:
Nombre de la función: apply_patch_space
Sintaxis de la función: apply_patch_space(bytes)
Detalles del parámetro: bytes---- --------------- Número de bytes a verificar
Descripción de la función: verifica el caché para determinar si hay suficiente espacio para escribir el archivo de parche y devolver algunos datos .
Función de ejemplo:
Nombre de función: read_file
Sintaxis de función: read_file(nombre de archivo)
Detalles del parámetro: nombre de archivo---- ------------ Cadena, es decir, el nombre del archivo cuyo contenido se va a leer
Descripción de la función: Esta función devuelve el contenido del archivo
Ejemplo:
Nombre de la función: sha1_check
Sintaxis de la función: sha1_check(data) o sha1_check(data, sha1_hex,..., sha1_hex).
..., sha1_hex, ...)., sha1_hexN)
Detalles de los parámetros: datos--------------------- Para calcular sha1 ha Contenido del archivo del valor hash: debe estar en formato de archivo de solo lectura
sha1_hexN-------------- Sha1_hex hexadecimal específico para que coincida con los datos del archivo Cadena Haha Valor hash
Descripción de la función: si solo se especifica el parámetro de datos, esta función devolverá la cadena de valor hash hexadecimal sha1_hex del parámetro de datos. Los otros parámetros se utilizan para confirmar que el archivo que se va a verificar es uno de los hashes de la lista. Devolverá el valor hash coincidente, o nulo si no hay ningún valor hash coincidente.
Función de ejemplo:
Nombre de la función: ui_print
Sintaxis de la función: ui_print(msg1, ..., msgN)
Argumentos: msg---------------------- cadena, el mensaje que se enviará al usuario durante el procesamiento
Explicación: el script debe ejecutarse en se muestra la información de la consola. Especifique al menos 1 parámetro, puede especificar otros parámetros de mensaje, se conectarán
Ejemplo de función: ui_print("¡Está listo!"); :run_program
Sintaxis de la función: run_program (prog, arg1, ...., argN)
Parámetros: prog--------------- -----Cadena, el programa a ejecutar
argN-------------------- Cadena, los parámetros de ejecución del programa a ejecutar ejecutado
Explicación de la función: ejecuta el programa utilizando los parámetros especificados
Ejemplo de función: run_program("/system/xbin/installbusybox.sh"); ejecuta el archivo de script installbusybox.sh<); /p>
Nombre de la función: ifelse
Sintaxis de la función: ifelse(condición, condición verdadera, condición falsa)
Detalles del parámetro: condición----------- --------------- -- Expresión a evaluar
Condición verdadera----------- Bloque de script de edición que se ejecutará cuando el valor sea Verdadero
Falsecodnition------ ----- Bloque de script Edify ejecutado cuando el valor es False
Descripción de la función: Este es el lenguaje de script Edify para estructuras If-then. Una declaración Si-entonces puede ser un único comando de Edify o un bloque de script. Los bloques de script se pueden definir usando paréntesis y separados por punto y coma.
Ejemplo de función:
Nombre de función: abortar
Sintaxis de función: abortar()
Parámetros: sin parámetros
Explicación de la función: Ejemplo de función:
Nombre de la función: afirmar
Sintaxis de la función: afirmar(condición).(condición)
Detalles del parámetro: condición-- -------------booleano
Descripción: Si el resultado del parámetro condicional es Falso, detiene la ejecución del script, de lo contrario continúa ejecutando el script
Función ejemplo: afirmar( package_extract_file("boot.img", "/tmp/boot.img"), write_raw_image("/tmp/boot.img", "boot"), eliminar("/tmp/boot.img")) p>
Ejecute package_extract_file, si no se devuelve ningún error, ejecute write_raw_image, si no se devuelve ningún error, elimínelo
.