Skip to content

Commit b5255fe

Browse files
committed
bugfix
1 parent c65706e commit b5255fe

File tree

1 file changed

+56
-66
lines changed

1 file changed

+56
-66
lines changed

tools/bin/tools.sh

Lines changed: 56 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ else
6666
echo "Magisk busybox Path does not exist"
6767
fi
6868
export PATH="$PATH"
69-
backup_version="V15.7.3"
69+
backup_version="V15.7.4"
7070
#bin_path="${bin_path/'/storage/emulated/'/'/data/media/'}"
7171
filepath="/data/backup_tools"
7272
busybox="$filepath/busybox"
@@ -386,6 +386,7 @@ update_script() {
386386
unset NAME
387387
}
388388
update_script
389+
zipFile="$(ls -t /storage/emulated/0/Download/*.zip 2>/dev/null | head -1)"
389390
[[ $(unzip -l "$zipFile" 2>/dev/null | awk '{print $4}' | egrep -wo "^backup_settings.conf$") != "" ]] && update_script
390391
case $operate in
391392
backup|Restore|Restore2|Getlist)
@@ -407,6 +408,8 @@ backup|Restore|Restore2|Getlist)
407408
read option
408409
fi
409410
done
411+
else
412+
user="0"
410413
fi
411414
fi
412415
echoRgb "當前操作為用戶$user"
@@ -417,10 +420,10 @@ backup|Restore|Restore2|Getlist)
417420
esac
418421
if [[ $(getprop ro.build.version.sdk) -lt 30 ]]; then
419422
alias INSTALL="pm install --user $user -r -t &>/dev/null"
420-
alias create="pm install-create --user $user -t 2>/dev/null"
423+
alias create="pm install-create --user $user -t &>/dev/null"
421424
else
422-
alias INSTALL="pm install -i com.android.vending --user $user -r -t &>/dev/null"
423-
alias create="pm install-create -i com.android.vending --user $user -t 2>/dev/null"
425+
alias INSTALL="pm install --user $user -r -t &>/dev/null"
426+
alias create="pm install-create --user $user -t &>/dev/null"
424427
fi
425428
case $operate in
426429
Getlist|Restore2|Restore3|dumpname|check_file) ;;
@@ -634,19 +637,12 @@ partition_info() {
634637
}
635638
kill_app() {
636639
if [[ $name2 != $Open_apps2 ]]; then
637-
if [[ $name2 = com.tencent.mobileqq || $name2 = com.tencent.mm ]]; then
638-
if [[ $(getprop ro.miui.ui.version.code) != "" ]]; then
639-
Serve="$(appops get --user "$user" "$name2" 10008 | egrep -o 'ignore|allow')"
640-
appops set --user "$user" "$name2" 10008 ignore
641-
fi
642-
am force-stop --user "$user" "$name2"
643-
fi
640+
pm suspend --user "$user" "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: true/暫停狀態:凍結/g"
641+
am force-stop --user "$user" "$name2"
644642
fi
645643
}
646644
Set_service() {
647-
if [[ $name2 = com.tencent.mobileqq || $name2 = com.tencent.mm ]]; then
648-
[[ $(getprop ro.miui.ui.version.code) != "" ]] && appops set --user "$user" "$name2" 10008 "$Serve"
649-
fi
645+
pm unsuspend "$name2" 2>/dev/null | sed "s/Package $name2/ -應用:$name1/g ; s/new suspended state: false/暫停狀態:解凍/g"
650646
}
651647
Backup_apk() {
652648
#檢測apk狀態進行備份
@@ -661,8 +657,6 @@ Backup_apk() {
661657
result=0
662658
echoRgb "Apk版本無更新 跳過備份" "2"
663659
else
664-
#停止應用
665-
kill_app
666660
case $name2 in
667661
com.google.android.youtube)
668662
[[ -d /data/adb/Vanced ]] && nobackup="true"
@@ -740,7 +734,6 @@ Backup_apk() {
740734
let osj++
741735
echoRgb "$name1不支持備份 需要使用vanced安裝" "0" && rm -rf "$Backup_folder"
742736
fi
743-
Set_service
744737
fi
745738
[[ $name2 = bin.mt.plus && ! -f $Backup/$name1.apk ]] && cp -r "$apk_path" "$Backup/$name1.apk"
746739
}
@@ -1154,7 +1147,7 @@ backup)
11541147
i=1
11551148
#數據目錄
11561149
txt="$MODDIR/appList.txt"
1157-
txt="${txt/'/storage/emulated/'/'/data/media/'}"
1150+
#txt="${txt/'/storage/emulated/'/'/data/media/'}"
11581151
[[ ! -f $txt ]] && echoRgb "請執行\"生成應用列表.sh\"獲取應用列表再來備份" "0" && exit 1
11591152
sort -u "$txt" -o "$txt" 2>/dev/null
11601153
data="$MODDIR"
@@ -1164,55 +1157,55 @@ backup)
11641157
echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -Toast:$toast_info\n -更新:$update\n -已卸載應用檢查:$delete_folder\n -卸載應用默認操作(true刪除false移動):$default_behavior\n -默認使用usb:$USBdefault\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media"
11651158
D="1"
11661159
C="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n '$=')"
1167-
if [[ $delete_folder = true ]]; then
1168-
if [[ -d $Backup ]]; then
1169-
if [[ $1 = "" ]]; then
1170-
find "$Backup" -maxdepth 1 -type d 2>/dev/null | sort | while read; do
1171-
if [[ -f $REPLY/app_details ]]; then
1172-
unset PackageName
1173-
. "$REPLY/app_details" &>/dev/null
1174-
if [[ $PackageName != "" && $(pm path --user "$user" "$PackageName" 2>/dev/null | cut -f2 -d ':') = "" ]]; then
1175-
if [[ $default_behavior = true ]]; then
1176-
rm -rf "$REPLY"
1177-
echoRgb "${REPLY##*/}不存在系統 刪除資料夾" "0"
1160+
[[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -o pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" || Apk_info="$(appinfo -sort-i -o pn -pn $system $(pm list packages -3 --user "$user" | cut -f2 -d ':') | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
1161+
[[ $Apk_info = "" ]] && echoRgb "appinfo輸出失敗" "0" && exit 2
1162+
Tmplist="$MODDIR/o"
1163+
rm -rf "$Tmplist"
1164+
if [[ -d $Backup ]]; then
1165+
if [[ $delete_folder = true ]]; then
1166+
find "$Backup" -maxdepth 1 -type d 2>/dev/null | sort | while read; do
1167+
if [[ -f $REPLY/app_details ]]; then
1168+
unset PackageName
1169+
. "$REPLY/app_details" &>/dev/null
1170+
if [[ $PackageName != "" && $(echo "$Apk_info" | egrep -w "^$PackageName$") = "" ]]; then
1171+
if [[ $default_behavior = true ]]; then
1172+
rm -rf "$REPLY"
1173+
echoRgb "${REPLY##*/}不存在系統 刪除資料夾" "0"
1174+
else
1175+
if [[ ! -d $Backup/被卸載的應用 ]]; then
1176+
mkdir -p "$Backup/被卸載的應用" && mv "$REPLY" "$Backup/被卸載的應用/"
11781177
else
1179-
if [[ ! -d $Backup/被卸載的應用 ]]; then
1180-
mkdir -p "$Backup/被卸載的應用" && mv "$REPLY" "$Backup/被卸載的應用/"
1181-
else
1182-
mv "$REPLY" "$Backup/被卸載的應用/"
1183-
fi
1184-
[[ ! -d $Backup/被卸載的應用/tools ]] && cp -r "$tools_path" "$Backup/被卸載的應用" && rm -rf "$Backup/被卸載的應用/tools/bin/zip" "$Backup/被卸載的應用/tools/script"
1185-
[[ ! -f $Backup/被卸載的應用/恢復備份.sh ]] && cp -r "$script_path/restore" "$Backup/被卸載的應用/恢復備份.sh"
1186-
[[ ! -f $Backup/被卸載的應用/重新生成應用列表.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/被卸載的應用/重新生成應用列表.sh"
1187-
[[ ! -f $Backup/被卸載的應用/轉換資料夾名稱.sh ]] && cp -r "$script_path/convert" "$Backup/被卸載的應用/轉換資料夾名稱.sh"
1188-
[[ ! -f $Backup/被卸載的應用/壓縮檔完整性檢查.sh ]] && cp -r "$script_path/check_file" "$Backup/被卸載的應用/壓縮檔完整性檢查.sh"
1189-
[[ ! -f $Backup/被卸載的應用/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/被卸載的應用/終止腳本.sh"
1190-
[[ ! -f $Backup/被卸載的應用/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info\n\n#腳本檢測更新後進行更新?\nupdate=$update\n\n#主色\nrgb_a=$rgb_a\n#輔色\nrgb_b=$rgb_b\nrgb_c=$rgb_c">"$Backup/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf"
1191-
txt2="$Backup/被卸載的應用/appList.txt"
1192-
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2"
1193-
echo "${REPLY##*/} $PackageName">>"$txt2"
1194-
echo "$(sed -e "s/${REPLY##*/} $PackageName//g ; /^$/d" "$Backup/appList.txt")" >"$Backup/appList.txt"
1195-
echoRgb "${REPLY##*/}不存在系統 已移動到$Backup/被卸載的應用" "0"
1178+
mv "$REPLY" "$Backup/被卸載的應用/"
11961179
fi
1180+
[[ ! -d $Backup/被卸載的應用/tools ]] && cp -r "$tools_path" "$Backup/被卸載的應用" && rm -rf "$Backup/被卸載的應用/tools/bin/zip" "$Backup/被卸載的應用/tools/script"
1181+
[[ ! -f $Backup/被卸載的應用/恢復備份.sh ]] && cp -r "$script_path/restore" "$Backup/被卸載的應用/恢復備份.sh"
1182+
[[ ! -f $Backup/被卸載的應用/重新生成應用列表.sh ]] && cp -r "$script_path/Get_DirName" "$Backup/被卸載的應用/重新生成應用列表.sh"
1183+
[[ ! -f $Backup/被卸載的應用/轉換資料夾名稱.sh ]] && cp -r "$script_path/convert" "$Backup/被卸載的應用/轉換資料夾名稱.sh"
1184+
[[ ! -f $Backup/被卸載的應用/壓縮檔完整性檢查.sh ]] && cp -r "$script_path/check_file" "$Backup/被卸載的應用/壓縮檔完整性檢查.sh"
1185+
[[ ! -f $Backup/被卸載的應用/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/被卸載的應用/終止腳本.sh"
1186+
[[ ! -f $Backup/被卸載的應用/backup_settings.conf ]] && echo "#1開啟0關閉\n\n#是否在每次執行恢復腳本時使用音量鍵詢問如下需求\n#如果是那下面兩項項設置就被忽略,改為音量鍵選擇\nLo=$Lo\n\n#備份與恢復遭遇異常或是結束後發送通知(toast與狀態欄提示)\ntoast_info=$toast_info\n\n#腳本檢測更新後進行更新?\nupdate=$update\n\n#主色\nrgb_a=$rgb_a\n#輔色\nrgb_b=$rgb_b\nrgb_c=$rgb_c">"$Backup/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf" && echo "$(sed 's/true/1/g ; s/false/0/g' "$Backup/backup_settings.conf")">"$Backup/被卸載的應用/backup_settings.conf"
1187+
txt2="$Backup/被卸載的應用/appList.txt"
1188+
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭注釋# 比如#xxxxxxxx 酷安">"$txt2"
1189+
echo "${REPLY##*/} $PackageName">>"$txt2"
1190+
echo "$(sed -e "s/${REPLY##*/} $PackageName//g ; /^$/d" "$Backup/appList.txt")" >"$Backup/appList.txt"
1191+
echoRgb "${REPLY##*/}不存在系統 已移動到$Backup/被卸載的應用" "0"
11971192
fi
11981193
fi
1199-
done
1200-
fi
1194+
fi
1195+
done
12011196
fi
12021197
fi
1203-
if [[ $1 = "" ]]; then
1204-
echoRgb "檢查備份列表中是否存在已經卸載應用" "3"
1205-
while [[ $D -le $C ]]; do
1206-
name1="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $1}')"
1207-
name2="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $2}')"
1208-
if [[ $name2 != "" && $(pm path --user "$user" "$name2" 2>/dev/null | cut -f2 -d ':') = "" ]]; then
1209-
echoRgb "$name1不存在系統,從列表中刪除" "0"
1210-
echo "$(sed -e "s/$name1 $name2//g ; /^$/d" "$txt")" >"$txt"
1211-
fi
1212-
let D++
1213-
done
1214-
echo "$(sed -e '/^$/d' "$txt")" >"$txt"
1215-
fi
1198+
echoRgb "檢查備份列表中是否存在已經卸載應用" "3"
1199+
while [[ $D -le $C ]]; do
1200+
name1="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $1}')"
1201+
name2="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $2}')"
1202+
if [[ $(echo "$Apk_info" | egrep -w "^$name2$") = "" ]]; then
1203+
echoRgb "$name1不存在系統,從列表中刪除" "0"
1204+
echo "$(sed -e "s/$name1 $name2//g ; /^$/d" "$txt")" >"$Tmplist"
1205+
fi
1206+
let D++
1207+
done
1208+
[[ -f $Tmplist ]] && mv "$Tmplist" "$txt"
12161209
r="$(grep -v "#" "$txt" | sed -e '/^$/d' | sed -n '$=')"
12171210
[[ $1 != "" ]] && r=1
12181211
[[ $r = "" ]] && echoRgb "$MODDIR_NAME/appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME/生成應用列表.sh" "0" && exit 1
@@ -1670,8 +1663,8 @@ Getlist)
16701663
starttime1="$(date -u "+%s")"
16711664
echoRgb "提示!因為系統自帶app(位於data分區或是可卸載預裝應用)備份恢復可能存在問題\n -所以不會輸出..但是檢測為Xposed類型包名將輸出\n -如果提示不是Xposed但他就是Xposed可能為此應用元數據不符合規範導致" "0"
16721665
xposed_name="$(appinfo -o pn -xm)"
1673-
[[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -d " " -o addXpTag:'Xposed ',ands,pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" || Apk_info="$(appinfo -sort-i -d " " -o addXpTag:'Xposed 'ands,pn -pn $system $(pm list packages -3 --user "$user" | cut -f2 -d ':') | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
1674-
[[ $Apk_info = "" ]] && echoRgb "appinfo輸出失敗" "0" && exit 2 || Apk_info="$(echo "$Apk_info" | sed 's/Xposed //g')" && Apk_info2="$(echo "$Apk_info" | awk '{print $2}')"
1666+
[[ $user = 0 ]] && Apk_info="$(appinfo -sort-i -d " " -o addXpTag:'Xposed: ',ands,pn -pn $system -3 | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)" || Apk_info="$(appinfo -sort-i -d " " -o addXpTag:'Xposed 'ands,pn -pn $system $(pm list packages -3 --user "$user" | cut -f2 -d ':') | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
1667+
[[ $Apk_info = "" ]] && echoRgb "appinfo輸出失敗" "0" && exit 2 || Apk_info="$(echo "$Apk_info" | sed 's/Xposed: //g')" && Apk_info2="$(echo "$Apk_info" | awk '{print $2}')"
16751668
Apk_Quantity="$(echo "$Apk_info" | wc -l)"
16761669
LR="1"
16771670
echoRgb "列出第三方應用......." "2"
@@ -1731,16 +1724,13 @@ Getlist)
17311724
while [[ $D -le $C ]]; do
17321725
name1="$(grep -v "#" "$nametxt" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $1}')"
17331726
name2="$(grep -v "#" "$nametxt" | sed -e '/^$/d' | sed -n "${D}p" | awk '{print $2}')"
1734-
{
17351727
if [[ $(echo "$Apk_info2" | egrep -w "^$name2$") = "" ]]; then
17361728
echoRgb "$name1 $name2不存在系統,從列表中刪除" "0"
17371729
echo "$(sed -e "s/$name1 $name2//g" "$nametxt")" >"$Tmplist"
17381730
fi
1739-
} &
17401731
let D++
17411732
done
17421733
[[ -f $Tmplist ]] && sed -e '/^$/d' "$Tmplist" | sort>"$nametxt" && rm -rf "$Tmplist"
1743-
echo "$(sed -e '/^$/d' "$nametxt" | sort)" >"$nametxt"
17441734
fi
17451735
wait
17461736
endtime 1

0 commit comments

Comments
 (0)