diff --git a/backup_settings.conf b/backup_settings.conf index 00eb0e7..84439eb 100644 --- a/backup_settings.conf +++ b/backup_settings.conf @@ -10,7 +10,7 @@ background_execution=0 #腳本語言設置 留空則自動識別系統語言環境並翻譯 #1簡體中文 0繁體中文 -Shell_LANG= +Shell_LANG=0 #備份開始後偽裝亮屏 #1開啟 0關閉 @@ -37,7 +37,7 @@ cdn=1 mount_point="rannki|0000-1" #使用者(如0 999等用戶,如存在多個用戶留空強制選擇,無多個用戶則默認用戶0不詢問) -user=0 +user= #備份模式 #1包含數據+安裝包,0僅包安裝包 @@ -45,10 +45,6 @@ user=0 #此外設置0時將同時忽略appList.txt的!與任何黑名單設置(包括黑名單列表) Backup_Mode=1 -#執行start.sh時輸出用於recovery救援的卡刷包? -#1輸出 0不輸出 -recovery_flash=0 - #是否備份使用者數據 (1備份 0不備份 留空強制選擇) Backup_user_data=1 @@ -64,11 +60,11 @@ Background_apps_ignore=0 #添加自定義備份路徑 例:Download DCIM等文件夾 請使用絕對路徑,請勿刪除"" Custom_path=" -#/storage/emulated/0/Pictures/ -#/storage/emulated/0/Download/ -#/storage/emulated/0/Music -#/storage/emulated/0/DCIM/ -/data/adb +/storage/emulated/0/Pictures/ +/storage/emulated/0/Download/ +/storage/emulated/0/Music +/storage/emulated/0/DCIM/ +#/data/adb " #黑名單模式(1完全忽略,不備份 0僅備份安裝包,注意!此選項Backup_Mode=1時黑名單模式才能使用) @@ -76,7 +72,10 @@ blacklist_mode=0 #備份黑名單(備份策略由「黑名單模式」控制,此處只作為黑名單應用列表) blacklist=" -#com.esunbank +com.esunbank +com.instagram.barcelona +com.instagram.android +com.facebook.katana #com.chailease.tw.app.android.ccfappcust" #位於data的預裝應用白名單 例:相冊 錄音機 天氣 計算器等(默認屏蔽備份預裝應用,如需備份請添加預裝應用白名單) diff --git a/tools/Device_List b/tools/Device_List index e8d81e1..de554a2 100644 --- a/tools/Device_List +++ b/tools/Device_List @@ -393,6 +393,9 @@ "2411DRN47R" "Redmi 14C 5G 日本版" "2411DRN47C" "Redmi 14R 5G 國行版" "2411DRN47I" "Redmi 14C 5G 印度版" +"25057RN09G" "Redmi 15 5G 國際版" +"25057RN09E" "Redmi 15 5G 歐洲版" +"25057RN09I" "Redmi 15 5G 印度版" "2014018" "紅米 Note 聯通 3G 標準版" "2013121" "紅米 Note 聯通 3G 增強版" "2014017" "紅米 Note 移動 3G 標準版" @@ -559,7 +562,7 @@ "24117RN76L" "Redmi Note 14 拉美版" "24117RN76O" "Redmi Note 14 國際版 (NFC)" "24094RAD4C" "Redmi Note 14 5G 國行版" -"24094RAD4I" "Redmi Note 14 5G 印度版" +"24094RAD4I" "Redmi Note 14 5G 印度版 / Redmi Note 14 SE 5G 印度版" "24094RAD4G" "Redmi Note 14 5G 國際版" "2502FRA65G" "Redmi Note 14S 國際版" "24116RACCG" "Redmi Note 14 Pro 國際版" @@ -734,6 +737,7 @@ "2312FPCA6G" "POCO M6 Pro 國際版" "23076PC4BI" "POCO M6 Pro 5G 印度版" "24108PCE2I" "POCO M7 5G 印度版" +"25057PC09I" "POCO M7 Plus 5G 印度版" "2409FPCC4G" "POCO M7 Pro 5G 國際版" "M2006C3MI" "POCO C3 印度版" "211033MI" "POCO C31 印度版" @@ -1984,6 +1988,7 @@ "TB128FU" "小新 Pad 2022" "TB331FC" "小新 Pad 2024" "TB335FC" "小新平板 11" +"TB335ZC" "小新平板 11 5G" "TB365FC" "小新平板 12.1" "Lenovo TB-J607F" "小新 Pad Plus" "Lenovo TB-J607Z" "小新 Pad Plus 5G" @@ -2056,19 +2061,21 @@ "TB230XC" "聯想啟天 K11 Gen2 11.5 英寸 LTE 版" "TB240FC" "聯想啟天 K12 12.7 英寸 Wi-Fi 版" "SP523FC" "聯想啟天 SmartPaper 10.3 英寸 Wi-Fi 版" -"TB305FU" "聯想昭陽 K9 8.7 英寸 Wi-Fi 版" -"TB305XC" "聯想昭陽 K9 8.7 英寸 LTE 版" +"TB305FU" "聯想昭陽 K9 (二代) 8.7 英寸 Wi-Fi 版" +"TB305XC" "聯想昭陽 K9 (二代) 8.7 英寸 LTE 版" "TB330FU" "聯想昭陽 K10 10.95 英寸 Wi-Fi 版" "TB330XC" "聯想昭陽 K10 10.95 英寸 LTE 版" "TB311FU" "聯想昭陽 K10c 10.1 英寸 Wi-Fi 版" "TB311XC" "聯想昭陽 K10c 10.1 英寸 LTE 版" "TB352FC" "聯想昭陽 K11 11.5 英寸 Wi-Fi 版" "TB352XC" "聯想昭陽 K11 11.5 英寸 LTE 版" -"TB336FU" "聯想昭陽 K11 11 英寸 Wi-Fi 版" -"TB336ZC" "聯想昭陽 K11 11 英寸 5G 版" +"TB336FU" "聯想昭陽 K11 (二代) 11 英寸 Wi-Fi 版" +"TB336ZC" "聯想昭陽 K11 (二代) 11 英寸 5G 版" "TB337FU" "聯想昭陽 K11c 10.95 英寸 Wi-Fi 版" "TB373FU" "聯想昭陽 K12 (二代) 12.7 英寸 Wi-Fi 版" "TB373ZC" "聯想昭陽 K12 (二代) 12.7 英寸 5G 版" +"TB361FU" "聯想昭陽 K12c 12.1 英寸 Wi-Fi 版" +"TB361ZU" "聯想昭陽 K12c 12.1 英寸 5G 版" "TB-X802F" "聯想昭陽 G11 10.95 英寸 Wi-Fi 版" "TB-X903F" "聯想昭陽 G12 11.5 英寸 Wi-Fi 版" "TBY11" "聯想昭陽 Y11 10.95 英寸 Wi-Fi 版" @@ -2898,6 +2905,8 @@ "RMX3944" "realme P3x 5G" "RMX5032" "realme P3 Pro 5G" "RMX5031" "realme P3 Ultra 5G" +"RMX5110" "realme P4 5G" +"RMX5116" "realme P4 Pro 5G" "RMX2020" "realme Narzo 10A India" "RMX2191" "realme Narzo 20 Global" "RMX2161" "realme Narzo 20 Pro India" @@ -3189,6 +3198,7 @@ "V2353A" "iQOO Z9x" "V2452A" "iQOO Z10 Turbo" "V2453A" "iQOO Z10 Turbo Pro" +"V2507A" "iQOO Z10 Turbo+" "V2445A" "iQOO Z10x" "V2023A" "iQOO U1" "V2065A" "iQOO U1x" @@ -3416,6 +3426,7 @@ "V2416" "vivo Y300 5G" "V2422" "vivo Y300+ 5G" "V2402" "vivo Y300 Pro 5G" +"V2455" "vivo Y400" "V2506" "vivo Y400 5G" "V2439" "vivo Y400 Pro 5G" "I1927" "iQOO 3 4G" @@ -3433,7 +3444,7 @@ "I2214" "iQOO Neo7" "I2217" "iQOO Neo7 Pro" "I2304" "iQOO Neo9 Pro" -"I2405" "iQOO Neo 10" +"I2408" "iQOO Neo 10" "I2221" "iQOO Neo 10R" "I2011" "iQOO Z3 5G" "I2018" "iQOO Z5" @@ -3454,6 +3465,7 @@ "I2407" "iQOO Z10 5G" "I2404" "iQOO Z10x 5G" "I2409" "iQOO Z10 Lite 5G" +"I2502" "iQOO Z10 Lite" "I2410" "iQOO Z10R 5G" "PAFM00" "OPPO Find X 標準版 全網通版" "PAFT00" "OPPO Find X 標準版 移動版" diff --git a/tools/classes.dex b/tools/classes.dex index 796be8b..788cce8 100644 Binary files a/tools/classes.dex and b/tools/classes.dex differ diff --git a/tools/tools.sh b/tools/tools.sh index b489b44..713f564 100644 --- a/tools/tools.sh +++ b/tools/tools.sh @@ -332,7 +332,7 @@ while read -r file expected_hash; do done <<< "$(cat <"$1/wifi.json" echo_log "wifi備份" fi } recover_wifi() { if [[ -d $1 ]]; then - echoRgb "恢復wifi密碼" - app_process /system/bin com.xayah.dex.NetworkUtil restoreNetworks "$1" - echo_log "wifi恢復" + if [[ -f $1/wifi.json ]]; then + echoRgb "恢復wifi密碼" + app_process /system/bin com.xayah.dex.NetworkUtil restoreNetworks "$1/wifi.json" + echo_log "wifi恢復" + else + echoRgb "wifi.json遺失" + fi else echoRgb "$1不存在 wifi無法恢復" "0" fi @@ -1041,7 +1045,7 @@ Backup_apk() { apk_version="$(jq -r '.[] | select(.apk_version != null).apk_version' "$app_details")" apk_version2="$(pm list packages --show-versioncode --user "$user" "$name2" 2>/dev/null | cut -f3 -d ':' | head -n 1)" if [[ $apk_version = $apk_version2 ]]; then - [[ $(sed -e '/^$/d' "$txt2" | cut -d' ' -f2 | awk -v pkg="$name2" '$1 == pkg {print $1}') = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2" + [[ $(echo "$txt2" | sed -e '/^$/d' | cut -d' ' -f2 | awk -v pkg="$name2" '$1 == pkg {print $1}') = "" ]] && txt2="$txt2\n${Backup_folder##*/} $name2" unset xb let osj++ result=0 @@ -1080,7 +1084,7 @@ Backup_apk() { if [[ $result = 0 ]]; then Validation_file "$Backup_folder/apk.tar"* if [[ $result = 0 ]]; then - [[ $(sed -e '/^$/d' "$txt2" 2>/dev/null | cut -d' ' -f2 | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2" + [[ $(echo "$txt2" | sed -e '/^$/d' | cut -d' ' -f2 | awk -v pkg="$name2" '$1 == pkg {print $1}') = "" ]] && txt2="$txt2\n${Backup_folder##*/} $name2" [[ $apk_version != "" ]] && { echoRgb "覆蓋app_details" jq --arg apk_version "$apk_version2" --arg software "$name1" '.[$software].apk_version = $apk_version' "$app_details" > "$TMPDIR/temp.json" && cat "$TMPDIR/temp.json" > "$app_details" && rm "$TMPDIR/temp.json" @@ -1738,8 +1742,8 @@ Background_application_list() { Background_application_list debug pkgs="$(pm list packages --user "$user" | cut -f2 -d ':' | awk -v pkg="$(echo "$Backstage" | head -1)" '$1 == pkg {print $1}')" if [[ $pkgs != "" ]]; then - echoRgb "後台應用獲取成功" "1" - [[ $(Process_Information "$pkgs") = "" ]] && echoRgb "應用pid獲取失敗" "0" || echoRgb "應用pid獲取成功" "1" + echoRgb "後台應用獲取成功($pkgs)" "1" + [[ $(Process_Information "$pkgs") = "" ]] && echoRgb "應用pid獲取失敗" "0" || echoRgb "應用pid獲取成功$(Process_Information "$pkgs")" "1" else echoRgb "後台應用獲取失敗" "0" activity=false fi @@ -1910,7 +1914,7 @@ backup() { if [[ $(echo "$REPLY" | sed -E 's/^[ \t]*//; /^[ \t]*[##!]/d') != "" ]]; then app=($REPLY $REPLY) if [[ ${app[1]} != "" && ${app[2]} != "" ]]; then - if [[ $(echo "$Apk_info" | egrep -o "${app[1]}") != "" ]]; then + if [[ $(echo "$Apk_info" | awk -v pkg="${app[1]}" '$1 == pkg {print $1}') != "" ]]; then [[ $Tmplist = "" ]] && Tmplist='#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market(忽略安裝包和數據)\n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market(僅忽略數據)' Tmplist="$Tmplist\n$REPLY" else @@ -1957,9 +1961,9 @@ backup() { [[ $backup_media = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -backup_media=0將不備份自定義資料夾" "0" txt2="$Backup/appList.txt" txt2="${txt2/'/storage/emulated/'/'/data/media/'}" + txt_path2="$txt2" [[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market">"$txt2" - cat "$txt2">"$TMPDIR/txt2" - txt2="$TMPDIR/txt2" + txt2="$(cat "$txt2")" [[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup" [[ ! -f $Backup/start.sh ]] && touch_shell "2" "$Backup/start.sh" [[ ! -f $Backup/restore_settings.conf ]] && update_Restore_settings_conf>"$Backup/restore_settings.conf" @@ -2110,9 +2114,8 @@ backup() { add_app2="${add_app2:="暫無更新"}" echoRgb "\n -已更新的apk=\"$osn\"\n -已新增的備份=\"$osk\"\n -apk版本號無變化=\"$osj\"\n -下列為版本號已變更的應用\n$update_apk2\n -新增的備份....\n$add_app2\n -包含SSAID的應用\n$SSAID_apk2" "3" notification "101" "app備份完成 $(endtime 1 "應用備份" "3")" - [[ -e $txt2 ]] && { - sort "$txt2" | sed '/^$/d' >"${txt2}.tmp" && mv "${txt2}.tmp" "$txt2" - cat "$txt2">"$Backup/appList.txt" && rm -rf "$txt2" + [[ $txt2 != "" ]] && { + echo "$txt2" | sort | sed '/^$/d'>"$txt_path2" } if [[ $backup_media = true && ! -f ${0%/*}/app_details.json ]]; then A=1 @@ -2170,7 +2173,7 @@ backup() { endtime 1 "批量備份開始到結束" notification "105" "備份完成 $(endtime 1 "批量備份開始到結束")" [[ -f $txt_path ]] && chown "$(stat -c '%u:%g' '/data/media/0/Download')" "$txt_path" - chown "$(stat -c '%u:%g' '/data/media/0/Download')" "$Backup/appList.txt" + [[ -f $txt_path2 ]] && chown "$(stat -c '%u:%g' '/data/media/0/Download')" "$txt_path2" exit } backup_update_apk() { @@ -2285,7 +2288,7 @@ Restore() { if [[ $(echo "$REPLY" | sed 's/^[ \t]*//') != \#* ]]; then app=($REPLY $REPLY) if [[ ${app[1]} != "" && ${app[2]} != "" ]]; then - [[ $(echo "$Apk_info" | grep -Fx "${app[1]}") = "" ]] && Tmplist="$Tmplist\n$REPLY" + [[ $(echo "$Apk_info" | awk -v pkg="${app[1]}" '$1 == pkg {print $1}') = "" ]] && Tmplist="$Tmplist\n$REPLY" fi fi done < "$txt" @@ -2652,7 +2655,7 @@ Getlist() { if [[ $(echo "$REPLY" | sed -E 's/^[ \t]*//; /^[ \t]*[##!]/d') != "" ]]; then app=($REPLY $REPLY) if [[ ${app[1]} != "" && ${app[2]} != "" ]]; then - if [[ $(echo "$Apk_info2" | egrep -o "${app[1]}") != "" ]]; then + if [[ $(echo "$Apk_info2" | awk -v pkg="${app[1]}" '$1 == pkg {print $1}') != "" ]]; then [[ $Tmplist = "" ]] && Tmplist='#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market(忽略安裝包和數據\n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market(僅忽略數據)' Tmplist="$Tmplist\n$REPLY" else