2 votos

¿cómo mostrar el texto en la pantalla de recuperación TWRP utilizando un archivo sh?

Estoy tratando de mostrar el mensaje en la pantalla de recuperación TWRP 3.2.3-0 utilizando un archivo .sh. Yo estaba pensando en usar el comando echo para hacer eso.

mi script de actualización es así

ifelse(is_mounted("/system"), unmount("/system"));
ifelse(is_mounted("/data"), unmount("/data"));
ui_print("-- Mount partitions...");
run_program("/sbin/busybox", "mount", "/system");
run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("test", "/tmp");
set_perm(0, 0, 0755, "/tmp/test.sh");
ui_print("run test.sh");
run_program("/tmp/test.sh");
ui_print("END OF PROCESS");
unmount("/data");
unmount("/system");

y mi archivo sh es

#!/sbin/sh

if [ ! -e "/efs/imei/mps_code.dat" ]; then
    mount /efs
fi  
csc_id=`cat /efs/imei/mps_code.dat`
echo "$csc_id" > /tmp/csc_id.prop   
echo "Your active csc is $csc_id"

el eco funciona porque lo veo en el registro de recuperación pero no muestra nada en la pantalla de recuperación

¿Existe una forma de activar echo o algún otro comando para mostrar el mensaje en la pantalla de recuperación utilizando el archivo sh?

1voto

Guillermo Gomez Puntos 423

Este fragmento de código está extraído del paquete ZIP de SuperSU. Funciona correctamente en todos los dispositivos que he tenido (mostrando el texto al terminal TWRP)

OUTFD=1
readlink /proc/$$/fd/$OUTFD 2>/dev/null | grep /tmp >/dev/null
if [ "$?" -eq "0" ]; then
  # rerouted to log file, we don't want our ui_print commands going there
  OUTFD=0

  # we are probably running in embedded mode, see if we can find the right fd
  # we know the fd is a pipe and that the parent updater may have been started as
  # 'update-binary 3 fd zipfile'
  for FD in `ls /proc/$$/fd`; do
    readlink /proc/$$/fd/$FD 2>/dev/null | grep pipe >/dev/null
    if [ "$?" -eq "0" ]; then
      ps | grep " 3 $FD " | grep -v grep >/dev/null
      if [ "$?" -eq "0" ]; then
        OUTFD=$FD
        break
      fi
    fi
  done
fi

ui_print_always() {
  echo -n -e "ui_print $1\n" >> /proc/self/fd/$OUTFD
  echo -n -e "ui_print\n" >> /proc/self/fd/$OUTFD
}

Para mostrar el mensaje, utilice ui_print_always "some message" en lugar de echo .

0 votos

Gracias por tu respuesta pero no me funciona. el registro de recuperación es /tmp/test.sh: línea 32: no se puede crear /proc/self/fd/: es un directorio. ¿usa este código en el archivo sh y sheban es #!/sbin/sh ?

0 votos

@kramer Tienes que poner OUTFD=1 de antemano.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X