#!/sbin/sh # # ADDOND_VERSION=2 # ########################################################################################## # # NanoDroid System Mode OTA survival Script # by Nanolx # # Inspired by 99-flashafterupdate.sh of osm0sis @ xda-developers # Forked from 99-magisk.sh of topjohnwu @ xda-developers # ########################################################################################## source /tmp/backuptool.functions MODID=@MODID@ OUTFD= VERSION=21.0.90.20190703 print_google_apps() { cat </dev/null else cat /proc/mounts | grep $1 >/dev/null fi return $? } if (is_mounted /data); then mount -orw,remount /data >/dev/null else mount -orw /data >/dev/null fi if [ ! -d /system/xbin ]; then NANODROID_BINDIR=/system/bin else NANODROID_BINDIR=/system/xbin fi if [ -r /data/adb/.nanodroid-list ]; then NANODROID_LIST=/data/adb/.nanodroid-list elif [ -r /data/adb/NanoDroid_FileList ]; then NANODROID_LIST=/data/adb/NanoDroid_FileList else echo "No installer information found!" exit 1 fi ui_print () { echo -n -e "ui_print ${1}\n" >> /proc/self/fd/${OUTFD} echo -n -e "ui_print\n" >> /proc/self/fd/${OUTFD} } grep_prop() { REGEX="${1}" shift FILES="${@}" [ -z "${@}" ] && FILES='/system/build.prop' sed -n "s/^${REGEX}=//p" ${FILES} | \ head -n 1 } set_ldlibrarypath () { SDK_VERSION=$(grep_prop ro.build.version.sdk) ABI=$(grep_prop ro.product.cpu.abi | cut -c-3) ABI2=$(grep_prop ro.product.cpu.abi2 | cut -c-3) ABILONG=$(grep_prop ro.product.cpu.abi) OLD_LD=${LD_LIBRARY_PATH} OLD_PATH=${PATH} ARCH=arm [ "$ABI" = "x86" ] && ARCH=x86 [ "$ABI2" = "x86" ] && ARCH=x86 [ "$ABILONG" = "arm64-v8a" ] && ARCH=arm64 [ "$ABILONG" = "x86_64" ] && ARCH=x86_64 case ${ARCH} in arm | x86 ) export LD_LIBRARY_PATH=/system/lib:/system/vendor/lib:/vendor/lib ;; arm64 | x86_64 ) export LD_LIBRARY_PATH=/system/lib64:/system/vendor/lib64:/vendor/lib64 ;; esac export PATH=/system/bin:/system/xbin:${PATH} } detect_outfd () { if [ -z $OUTFD ] || readlink /proc/$$/fd/$OUTFD | grep -q /tmp; then # We will have to manually find out OUTFD for FD in `ls /proc/$$/fd`; do if readlink /proc/$$/fd/$FD | grep -q pipe; then if ps | grep -v grep | grep -q " 3 $FD "; then OUTFD=$FD break fi fi done fi } detect_outfd backup_action () { sleep 5 mount /data ui_print " ++ ${MODID} ${VERSION} addon.d: backup" cat ${NANODROID_LIST} | while read FILE; do echo " + backup: ${FILE}" backup_file "${FILE}" done if test -h /system/fonts/Roboto-Regular.ttf; then CUSTOM_FONT="$(basename $(readlink /system/fonts/Roboto-Regular.ttf) .ttf)" ui_print " ++ ${MODID} addon.d: detected NanoDroid-Font (${CUSTOM_FONT})" echo CUSTOM_FONT=${CUSTOM_FONT} > /tmp/nanodroid_font fi ui_print " ++ ${MODID} ${VERSION} addon.d: backup done" } restore_action () { sleep 5 ui_print " ++ ${MODID} ${VERSION} addon.d: restore" cat ${NANODROID_LIST} | while read FILE; do echo " + restore: ${FILE}" restore_file "${FILE}" done ui_print " ++ ${MODID} ${VERSION} addon.d: restore done" } postrestore_action () { sleep 5 set_ldlibrarypath if [ -f /tmp/nanodroid_font ]; then source /tmp/nanodroid_font ui_print " ++ ${MODID} ${VERSION} addon.d: restoring NanoDroid-Font (${CUSTOM_FONT})" ${NANODROID_BINDIR}/nanodroid-font -s "${CUSTOM_FONT}" rm /tmp/nanodroid_font fi ui_print " ++ ${MODID} ${VERSION} addon.d: GApps removal" print_google_apps | while read app; do ${NANODROID_BINDIR}/nanodroid-overlay --add ${app} done print_google_data | while read app; do rm -rf /data/data/${app} rm -rf /data/user/*/${app} rm -rf /data/user_de/*/${app} rm -rf /data/app/${app}-* done ui_print " ++ ${MODID} ${VERSION} addon.d: GApps removal done" get_config setup if [ "${config_exists}" -eq 1 ]; then source "${config}" if [ "${nanodroid_overlay}" -eq 1 ]; then ui_print " ++ ${MODID} ${VERSION} addon.d: creating Overlays" ${NANODROID_BINDIR}/nanodroid-overlay --create ui_print " ++ ${MODID} ${VERSION} addon.d: creating Overlays done" fi fi export PATH=${OLD_PATH} export LD_LIBRARY_PATH=${OLD_LD} } case "${1}" in backup) backup_action ;; restore) restore_action ;; pre-backup) # Stub ;; post-backup) # Stub ;; pre-restore) # Stub ;; post-restore) postrestore_action ;; esac