2 votes

comment afficher du texte sur l'écran de récupération de TWRP en utilisant un fichier sh ?

J'essaie d'afficher un message sur l'écran de récupération de TWRP 3.2.3-0 en utilisant un fichier .sh. Je pensais utiliser la commande echo pour le faire.

mon script de mise à jour est le suivant

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

et mon fichier sh est

#!/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"

L'écho fonctionne car je le vois dans le journal de récupération mais n'affiche rien sur l'écran de récupération.

Existe-t-il un moyen d'activer echo ou une autre commande pour afficher un message sur l'écran de récupération en utilisant le fichier sh ?

1voto

Guillermo Gomez Points 423

Ce morceau de code est extrait du paquet ZIP de SuperSU. Il fonctionne correctement sur tous les appareils que j'ai eus (affichage du texte dans le 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
}

Pour afficher le message, utilisez ui_print_always "some message" au lieu de echo .

0 votes

Je n'ai pas eu le temps d'utiliser ce code, mais je n'ai pas eu le temps de l'utiliser, et je n'ai pas eu le temps de l'utiliser : Est-ce que vous utilisez ce code dans un fichier sh et que le sheban est #!/sbin/sh ?

0 votes

@kramer Vous devez définir OUTFD=1 au préalable.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X