NanoDroid-Overlay: System Mode support

merge-requests/23/head
Christopher Roy Bratusek 7 years ago
parent 6119a4df81
commit 0ebec72fd1

@ -1,7 +1,6 @@
#!/system/bin/sh
export NO_MAGISK=0
export NO_CONFIG=0
export MODPATH=@MODPATH@
if [[ -d /dev/tmp/magisk_img/$(basename ${MODPATH}) ]]; then
@ -32,135 +31,135 @@ get_config () {
done
}
show_app_name () {
aapt dump badging "${1}" 2>/dev/null | \
grep "application: label" | \
sed -e "s/.*label='//g;s/' icon.*//g"
}
add_override () {
echo " creating overlay: $(basename ${1})"
mkdir -p "${OVERLAY_PATH}/system/${1}"
touch "${OVERLAY_PATH}/system/${1}/.replace"
echo "$(basename ${1})" >> "${config}"
}
rm_override () {
xapp=$(basename ${1})
echo " removing overlay: ${xapp}"
rm -rf "${OVERLAY_PATH}/system/${1}"
sed -e "/^${xapp}$/d" -i "${config}"
}
overrides_add_intern () {
app=$(basename ${1})
if [[ ${NO_MAGISK} -eq 0 ]]; then
echo " creating overlay: ${app}"
mkdir -p "${OVERLAY_PATH}/system/${1}"
touch "${OVERLAY_PATH}/system/${1}/.replace"
else
echo " moving to /sdcard/nanodroid_backups: ${app}"
rm -rf "/sdcard/nanodroid_backups/${1}"
mv "/system/${1}" "/sdcard/nanodroid_backups/${1}"
fi
update_overrides () {
clear_overrides
gen_overrides
grep -q "^${app}" "${config}" || echo "${app}" >> "${config}"
}
gen_overrides () {
OVERLAY_APPS=$(cat "${config}")
echo " creating Overlays in ${OVERLAY_PATH}"
for app in ${OVERLAY_APPS}; do
if [ -d /system/app/${app} ]; then
add_override "app/${app}" ${OVERLAY_PATH}
elif [ -d /system/priv-app/${app} ]; then
add_override "priv-app/${app}" ${OVERLAY_PATH}
else echo " app \"${app}\" is not installed"
fi
overrides_add () {
for app in ${@}; do
[[ -d /system/app/${app} ]] && overrides_add_intern app/${app}
[[ -d /system/priv-app/${2} ]] && overrides_add_intern priv-app/${app}
done
}
list_overrides () {
LIST_APPS=($(find "${OVERLAY_PATH}/system/app" -name "*.replace"))
for app in "${LIST_APPS[@]}"; do
APPS=(${APPS[@]} "$(basename $(dirname "${app}"))")
done
LIST_PRIV_APPS=($(find "${OVERLAY_PATH}/system/priv-app" -name "*.replace"))
for app in "${LIST_PRIV_APPS[@]}"; do
PRIV_APPS=(${PRIV_APPS[@]} "$(basename $(dirname "${app}"))")
done
echo "Overlays exist for following applications in /system/app:
$(printf ' * %s\n' "${APPS[@]}")
Overlays exist for following applications in /system/priv-app:
$(printf ' * %s\n' "${PRIV_APPS[@]}")
"
}
show_nooverrides () {
echo " >> processing /system/app"
for app in /system/app/*/*.apk; do
sysname=$(basename "${app}" .apk)
if [[ ! -f ${OVERLAY_PATH}/system/app/${sysname}/.replace ]]; then
humname=$(show_app_name "${app}")
S_APPS="${S_APPS}
* ${sysname} |(${humname})"
overrides_remove_intern () {
app=$(basename ${1})
if [[ ${NO_MAGISK} -eq 0 ]]; then
echo " removing overlay: ${app}"
rm -rf "${OVERLAY_PATH}/system/${1}"
else
if [[ -d /system/${1} ]]; then
echo " removing old backup: ${app}"
rm -rf "/sdcard/nanodroid_backups/${1}"
else
echo " reinstalling: ${app}"
mv "/sdcard/nanodroid_backups/${1}" "/system/${1}"
fi
done
fi
echo " >> processing /system/priv-app"
sed -e "/^${app}$/d" -i "${config}"
}
for app in /system/priv-app/*/*.apk; do
sysname=$(basename "${app}" .apk)
if [[ ! -f ${OVERLAY_PATH}/system/priv-app/${sysname}/.replace ]]; then
humname=$(show_app_name "${app}")
S_PRIV_APPS="${S_PRIV_APPS}
* ${sysname} |(${humname})"
overrides_remove () {
for app in ${@}; do
if [[ ${NO_MAGISK} -eq 0 ]]; then
[[ -f ${OVERLAY_PATH}/system/app/${app}/.replace ]] && overrides_remove_intern app/${app}
[[ -f ${OVERLAY_PATH}/system/priv-app/${app}/.replace ]] && overrides_remove_intern priv-app/${app}
else
[[ -d /sdcard/nanodroid_backups/app/${app} ]] && overrides_remove_intern app/${app}
[[ -d /sdcard/nanodroid_backups/priv-app/${app} ]] && overrides_remove_intern priv-app/${app}
fi
done
}
echo "Non-Overlayed applications in /system/app:
$(printf '* %s\n' "${S_APPS[@]}" | column -t -s \|)
overrides_list () {
if [[ ${NO_MAGISK} -eq 0 ]]; then
echo "Overrides for /system/app:"
for app in "$(find "${OVERLAY_PATH}/system/app" -name "*.replace")"; do
echo " * $(basename $(dirname "${app}"))"
done
Non-Overlayed applications in /system/priv-app:
echo "Overrides for /system/priv-app:"
for app in "$(find "${OVERLAY_PATH}/system/priv-app" -name "*.replace")"; do
echo " * $(basename $(dirname "${app}"))"
done
else
echo "Moved-Out apps from /system/app:"
for app in "$(find "/sdcard/nanodroid_backups/app" -name "*.replace")"; do
echo " * $(basename $(dirname "${app}"))"
done
$(printf '* %s\n' "${S_PRIV_APPS[@]}" | column -t -s \|)
"
echo "Moved-Out apps from /system/priv-app:"
for app in "$(find "/sdcard/nanodroid_backups/priv-app" -name "*.replace")"; do
echo " * $(basename $(dirname "${app}"))"
done
fi
}
clear_overrides () {
echo " removing Overlays from ${OVERLAY_PATH}"
RM_APPS=($(find "${OVERLAY_PATH}/system/app" -name "*.replace"))
for app in "${RM_APPS[@]}"; do
echo " removing override: $(basename $(dirname ${app}))"
rm -rf "$(dirname "${app}")"
done
overrides_list_non () {
if [[ ${NO_MAGISK} -eq 0 ]]; then
echo "non-overriden apps from /system/app:"
for app in "$(find "/system/app" -mindepth 1 -type d)"; do
[[ ! -f ${OVERLAY_PATH}/${app}/.replace ]] && echo " * $(basename ${app})"
done
RM_PRIV_APPS=($(find "${OVERLAY_PATH}/system/priv-app" -name "*.replace"))
for app in "${RM_PRIV_APPS[@]}"; do
echo " removing override: $(basename $(dirname ${app}))"
rm -rf "$(dirname "${app}")"
done
}
echo "non-overriden apps from /system/priv-app:"
for app in "$(find "/system/priv-app" -mindepth 1 -type d)"; do
[[ ! -f ${OVERLAY_PATH}/${app}/.replace ]] && echo " * $(basename ${app})"
done
else
echo "non-moved-out apps from /system/app:"
for app in "$(find "/system/app" -mindepth 1 -type d)"; do
echo " * $(basename ${app})"
done
genconfig () {
[[ ! -f "${config}" ]] && config="/data/.nanodroid-overlay"
echo "non-moved-out apps from /system/priv-app:"
for app in "$(find "/system/priv-app" -mindepth 1 -type d)"; do
echo " * $(basename ${app})"
done
fi
APPS=($(find "${OVERLAY_PATH}/system/app" -name "*.replace"))
PRIV_APPS=($(find "${OVERLAY_PATH}/system/priv-app" -name "*.replace"))
}
if [[ ${APPS[*]} != "" ]]; then
for app in "${APPS[@]}"; do
xapp=$(basename $(dirname ${app}))
echo " adding ${xapp} to configuration"
echo "${xapp}" >> "${config}"
overrides_clear () {
if [[ ${NO_MAGISK} -eq 0 ]]; then
echo " removing Overlays from ${OVERLAY_PATH}"
for app in "$(find "${OVERLAY_PATH}/system/app" -name "*.replace")" \
"$(find "${OVERLAY_PATH}/system/priv-app" -name "*.replace")"; do
echo " removing override: $(basename $(dirname ${app}))"
rm -rf "$(dirname "${app}")"
done
else
echo " overrides_clear() does nothing in System Mode!"
fi
}
overrides_genconfig () {
if [[ ${NO_MAGISK} -eq 0 ]]; then
rm -f ${config}
export config="/data/.nanodroid-overlay"
if [[ ${PRIV_APPS[*]} != "" ]]; then
for app in "${PRIV_APPS[@]}"; do
for app in "$(find "${OVERLAY_PATH}/system/app" -name "*.replace")" \
"$(find "${OVERLAY_PATH}/system/priv-app" -name "*.replace")"; do
xapp=$(basename $(dirname ${app}))
echo " adding ${xapp} to configuration"
echo "${xapp}" >> "${config}"
grep -q "^${xapp}$" "${config}" || echo "${xapp}" >> "${config}"
done
else
echo " overrides_genconfig() does nothing in System Mode!"
fi
}
@ -168,69 +167,34 @@ genconfig () {
config_locations="/sdcard /external_sd @ZIPDIR@ /data /dev/tmp/install"
get_config .nanodroid-overlay
if [[ ${NO_MAGISK} -eq 0 ]]; then
if [[ -f ${config} ]]; then
export config
else
genconfig
export config="/data/.nanodroid-overlay"
else overrides_genconfig
fi
case ${1} in
-l | --list )
list_overrides
;;
opt=${1}
shift
-a | --add )
if [ ! -z ${2} ]; then
if [[ -d /system/app/${2} ]]; then
add_override "app/${2}"
fi
if [[ -d /system/priv-app/${2} ]]; then
add_override "priv-app/${2}"
fi
fi
;;
-r | --remove )
if [ ! -z ${2} ]; then
if [[ -f ${OVERLAY_PATH}/system/app/${2}/.replace ]]; then
rm_override "app/${2}"
fi
if [[ -f ${OVERLAY_PATH}/system/priv-app/${2}/.replace ]]; then
rm_override "priv-app/${2}"
fi
fi
;;
case ${opt} in
-l | --list ) overrides_list ;;
-a | --add ) overrides_add "${@}" ;;
-r | --remove ) remove_overrides "${@}" ;;
-s | --show ) overrides_list_non ;;
-c | --clear ) overrides_clear ;;
-x | --create ) overrides_add "$(cat "${config}")" ;;
-g | --genconfig ) overrides_genconfig ;;
-u | --update )
update_overrides
;;
-s | --show )
show_nooverrides
;;
-c | --clear )
clear_overrides
;;
-g | --genconfig )
rm -f ${config}
genconfig
overrides_clear
overrides_add "$(cat "${config}")"
;;
-x | --create )
gen_overrides
;;
* )
echo "nanodroid-overlay
Manages Overlay (Pseudo Debloat feature)
Magisk Mode: Manages Overlays (Pseudo Debloat feature)
System Mode: Manages Moved-Outs (Force Debloat feature)
Options:
-a | --add [appname] add override for app [appname]
@ -244,7 +208,3 @@ Options:
"
;;
esac
else
error "*** Overlay feature is not available in System Mode! ***"
fi

Loading…
Cancel
Save