Red de conocimiento informático - Material del sitio web - ¿Cómo crear una recuperación de Android y modificarla?

¿Cómo crear una recuperación de Android y modificarla?

Referencia específica Sintaxis de script de Edify

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)

, 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)

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"))

Ejecute package_extract_file, si no se devuelve ningún error, ejecute write_raw_image, si no se devuelve ningún error, elimínelo

.