From 93e437ec0229171b7e0d7c40820be1df6062fa88 Mon Sep 17 00:00:00 2001 From: Yawasau <229953100a@gmail.com> Date: Tue, 11 Jun 2024 12:56:19 +0800 Subject: [PATCH] bugfix --- tools/Device_List | 80 +++++++++++++++++++++--------------- tools/tools.sh | 101 +++++++++++++++++++++++++--------------------- 2 files changed, 101 insertions(+), 80 deletions(-) diff --git a/tools/Device_List b/tools/Device_List index f5be632..04929bc 100644 --- a/tools/Device_List +++ b/tools/Device_List @@ -129,6 +129,7 @@ "2311BPN23C" "Xiaomi 14 Pro 鈦金屬版 (衛星通訊)" "24031PN0DC" "Xiaomi 14 Ultra 國行版" "24030PN60G" "Xiaomi 14 Ultra 國際版" +"24053PY09I" "Xiaomi 14 Civi 印度版" "2406APNFAG" "Xiaomi 14T 國際版" "XIG06" "Xiaomi 14T 日本版 (KDDI)" "2407FPN8EG" "Xiaomi 14T Pro 國際版" @@ -358,8 +359,8 @@ "23100RN82L" "Redmi 13C 拉美版" "23108RN04Y" "Redmi 13C 國際版 (NFC)" "23124RN87C" "Redmi 13C 5G 國行版 / Redmi 13R 5G" -"23124RN87G" "Redmi 13C 5G 國際版" "23124RN87I" "Redmi 13C 5G 印度版" +"23124RN87G" "Redmi 13C 5G 國際版" "2014018" "紅米 Note 聯通 3G 標準版" "2013121" "紅米 Note 聯通 3G 增強版" "2014017" "紅米 Note 移動 3G 標準版" @@ -518,6 +519,7 @@ "23090RA98G" "Redmi Note 13 Pro+ 5G 國際版" "23090RA98I" "Redmi Note 13 Pro+ 5G 印度版" "24040RA98R" "Redmi Note 13 Pro+ 5G 日本版" +"2406ERN9CC" "Redmi Note 13R" "2311FRAFDC" "Redmi Note 13R Pro" "M2004J7AC" "Redmi 10X 5G" "M2004J7BC" "Redmi 10X Pro 5G" @@ -580,6 +582,9 @@ "23129RN51X" "Redmi A3 國際版" "23129RN51H" "Redmi A3 印度版" "2312CRNCCL" "Redmi A3 拉美版" +"24048RN6CG" "Redmi A3x 國際版" +"24048RN6CI" "Redmi A3x 印度版" +"24044RN32L" "Redmi A3x 拉美版" "22081283C" "Redmi Pad 國行版" "22081283G" "Redmi Pad 國際版" "23073RPBFC" "Redmi Pad SE 國行版" @@ -587,6 +592,7 @@ "23073RPBFL" "Redmi Pad SE 拉美版" "2405CRPFDC" "Redmi Pad Pro 國行版" "2405CRPFDG" "Redmi Pad Pro 國際版" +"2405CRPFDL" "Redmi Pad Pro 拉美版" "24074RPD2C" "Redmi Pad Pro 5G 國行版" "24074RPD2G" "Redmi Pad Pro 5G 國際版" "M1805E10A" "POCO F1" @@ -596,14 +602,12 @@ "22021211RG" "POCO F4 國際版" "22021211RI" "POCO F4 印度版" "21121210G" "POCO F4 GT 國際版" -"21121210I" "POCO F4 GT 印度版" "23049PCD8G" "POCO F5 國際版" "23049PCD8I" "POCO F5 印度版" "23013PC75G" "POCO F5 Pro 國際版" "24069PC21G" "POCO F6 國際版" "24069PC21I" "POCO F6 印度版" "23113RKC6G" "POCO F6 Pro 國際版" -"23113RKC6I" "POCO F6 Pro 印度版" "M1912G7BI" "POCO X2 印度版" "M2007J20CI" "POCO X3 印度版" "M2007J20CG" "POCO X3 NFC 國際版" @@ -643,6 +647,7 @@ "2404APC5FG" "POCO M6 國際版" "2404APC5FI" "POCO M6 印度版" "23128PC33I" "POCO M6 5G 印度版" +"24066PC95I" "POCO M6 Plus 5G 印度版" "2312FPCA6G" "POCO M6 Pro 國際版" "23076PC4BI" "POCO M6 Pro 5G 印度版" "M2006C3MI" "POCO C3 印度版" @@ -1048,6 +1053,10 @@ "G1MNW" "Pixel 8 Pro (mmWave)" "GC3VE" "Pixel 8 Pro (Global)" "GE9DP" "Pixel 8 Pro (Japan)" +"G8HNN" "Pixel 8a (mmWave)" +"GKV4X" "Pixel 8a (North America, Sub 6GHz)" +"G6GPR" "Pixel 8a (Global)" +"G576D" "Pixel 8a (Japan)" "G9FPL" "Pixel Fold (US, EU)" "G0B96" "Pixel Fold (Japan)" "C1502W" "Pixel C" @@ -1105,6 +1114,7 @@ "TB132FU" "聯想小新 Pad Pro 2022 迅鯤版" "TB371FC" "聯想小新 Pad Pro 12.7 驍龍版" "TB370FU" "聯想小新 Pad Pro 12.7 天璣版" +"TB351FU" "聯想小新 Pad Studio" "TB372FC" "聯想小新學習平板 12.7" "Lenovo YT3-850F" "聯想 YOGA Tab 3 8」 Wi-Fi 版" "Lenovo YT3-850L" "聯想 YOGA Tab 3 8」 LTE 版" @@ -1238,6 +1248,8 @@ "M461Q" "魅族 21 公開版" "M461H" "魅族 21 國際版" "M481Q" "魅族 21 PRO" +"M468Q" "魅族 21 Note 公開版" +"M468H" "魅族 21 Note 國際版" "M852Q" "魅族 X8 公開版" "M852H" "魅族 X8 國際版" "M813Q" "魅族 V8 高配版" @@ -1381,6 +1393,7 @@ "XT2321-2" "moto razr 40 Ultra" "XT2343-3" "moto g54" "XT2363-4" "moto g34" +"XT2401-2" "moto X50 Ultra" "TA-1000" "Nokia 6" "TA-1054" "Nokia 6 (第二代)" "TA-1041" "Nokia 7" @@ -1487,101 +1500,102 @@ "ONE E1000" "OnePlus X 全網通版" "ONE E1003" "OnePlus X 國際版" "ONE E1005" "OnePlus X 北美版" -"ONEPLUS A3000" "OnePlus 3 全網通版" +"ONEPLUS A3000" "OnePlus 3 國行版" "ONEPLUS A3003" "OnePlus 3 國際版" -"ONEPLUS A3010" "OnePlus 3T 全網通版" +"ONEPLUS A3010" "OnePlus 3T 國行版" "ONEPLUS A3013" "OnePlus 3T 國際版" -"ONEPLUS A5000" "OnePlus 5 全網通版" -"ONEPLUS A5010" "OnePlus 5T 全網通版" -"ONEPLUS A6000" "OnePlus 6 全網通版" +"ONEPLUS A5000" "OnePlus 5" +"ONEPLUS A5010" "OnePlus 5T" +"ONEPLUS A6000" "OnePlus 6 國行版" "ONEPLUS A6003" "OnePlus 6 國際版" -"ONEPLUS A6010" "OnePlus 6T 全網通版" +"ONEPLUS A6010" "OnePlus 6T 國行版" "ONEPLUS A6013" "OnePlus 6T 國際版" -"GM1900" "OnePlus 7 全網通版" +"GM1900" "OnePlus 7 國行版" "GM1901" "OnePlus 7 印度版" "GM1903" "OnePlus 7 歐洲版" "GM1905" "OnePlus 7 北美版/國際版" -"GM1910" "OnePlus 7 Pro 全網通版" +"GM1910" "OnePlus 7 Pro 國行版" "GM1911" "OnePlus 7 Pro 印度版" "GM1913" "OnePlus 7 Pro 歐洲版" "GM1915" "OnePlus 7 Pro 北美版/國際版" "GM1917" "OnePlus 7 Pro T-Mobile 版" "GM1920" "OnePlus 7 Pro 5G 歐洲版" "GM1925" "OnePlus 7 Pro 5G Sprint 版" -"HD1900" "OnePlus 7T 全網通版" +"HD1900" "OnePlus 7T 國行版" "HD1901" "OnePlus 7T 印度版" "HD1903" "OnePlus 7T 歐洲版" "HD1905" "OnePlus 7T 北美版/國際版" "HD1907" "OnePlus 7T T-Mobile 版" -"HD1910" "OnePlus 7T Pro 全網通版" +"HD1910" "OnePlus 7T Pro 國行版" "HD1911" "OnePlus 7T Pro 印度版" "HD1913" "OnePlus 7T Pro 歐洲版/國際版" "HD1925" "OnePlus 7T Pro 5G T-Mobile 版 / OnePlus Concept One" -"IN2010" "OnePlus 8 全網通版" +"IN2010" "OnePlus 8 國行版" "IN2011" "OnePlus 8 印度版" "IN2013" "OnePlus 8 歐洲版" "IN2015" "OnePlus 8 北美版/國際版" "IN2017" "OnePlus 8 T-Mobile 版" "IN2019" "OnePlus 8 Visible 版/Verizon 版" -"IN2020" "OnePlus 8 Pro 全網通版" +"IN2020" "OnePlus 8 Pro 國行版" "IN2021" "OnePlus 8 Pro 印度版" "IN2023" "OnePlus 8 Pro 歐洲版" "IN2025" "OnePlus 8 Pro 北美版/國際版" -"KB2000" "OnePlus 8T 全網通版" +"KB2000" "OnePlus 8T 國行版" "KB2001" "OnePlus 8T 印度版" "KB2003" "OnePlus 8T 歐洲版" "KB2005" "OnePlus 8T 北美版/國際版" "KB2007" "OnePlus 8T+ T-Mobile 版" -"LE2100" "OnePlus 9R 全網通版" +"LE2100" "OnePlus 9R 國行版" "LE2101" "OnePlus 9R 印度版" -"LE2110" "OnePlus 9 全網通版" +"LE2110" "OnePlus 9 國行版" "LE2111" "OnePlus 9 印度版" "LE2113" "OnePlus 9 歐洲版" "LE2115" "OnePlus 9 北美版/國際版" "LE2117" "OnePlus 9 T-Mobile 版" "LE2119" "OnePlus 9 Verzion 版" -"LE2120" "OnePlus 9 Pro 全網通版" +"LE2120" "OnePlus 9 Pro 國行版" "LE2121" "OnePlus 9 Pro 印度版" "LE2123" "OnePlus 9 Pro 歐洲版" "LE2125" "OnePlus 9 Pro 北美版/國際版" "LE2127" "OnePlus 9 Pro T-Mobile 版" -"MT2110" "OnePlus 9RT 全網通版" +"MT2110" "OnePlus 9RT 國行版" "MT2111" "OnePlus 9RT 印度版" -"NE2210" "OnePlus 10 Pro 全網通版" +"NE2210" "OnePlus 10 Pro 國行版" "NE2211" "OnePlus 10 Pro 印度版" "NE2213" "OnePlus 10 Pro 歐洲版/國際版" "NE2215" "OnePlus 10 Pro 北美版" "NE2217" "OnePlus 10 Pro T-Mobile 版" -"PGKM10" "OnePlus Ace 全網通版" +"PGKM10" "OnePlus Ace 國行版" "CPH2423" "OnePlus 10R 印度版" "CPH2411" "OnePlus 10R Endurance 印度版" -"PGZ110" "OnePlus Ace 競速版 全網通版" -"PGP110" "OnePlus Ace Pro 全網通版" +"PGZ110" "OnePlus Ace 競速版 國行版" +"PGP110" "OnePlus Ace Pro 國行版" "CPH2413" "OnePlus 10T 印度版" "CPH2415" "OnePlus 10T 歐洲版/國際版" "CPH2417" "OnePlus 10T 北美版" "CPH2419" "OnePlus 10T T-Mobile 版" -"PHB110" "OnePlus 11 全網通版" +"PHB110" "OnePlus 11 國行版" "CPH2447" "OnePlus 11 印度版" "CPH2449" "OnePlus 11 歐洲版/國際版" "CPH2451" "OnePlus 11 北美版" -"PHK110" "OnePlus Ace 2 全網通版" +"PHK110" "OnePlus Ace 2 國行版" "CPH2487" "OnePlus 11R 印度版" -"PHP110" "OnePlus Ace 2V 全網通版" +"PHP110" "OnePlus Ace 2V 國行版" "CPH2491" "OnePlus Nord 3 印度版" "CPH2493" "OnePlus Nord 3 歐洲版" -"PJA110" "OnePlus Ace 2 Pro 全網通版" -"PJD110" "OnePlus 12 全網通版" +"PJA110" "OnePlus Ace 2 Pro 國行版" +"PJD110" "OnePlus 12 國行版" "CPH2573" "OnePlus 12 印度版" "CPH2581" "OnePlus 12 歐洲版/國際版" "CPH2583" "OnePlus 12 北美版" -"PJE110" "OnePlus Ace 3 全網通版" +"PJE110" "OnePlus Ace 3 國行版" "CPH2585" "OnePlus 12R 印度版" "CPH2609" "OnePlus 12R 歐洲版/國際版" "CPH2611" "OnePlus 12R 北美版" -"PJF110" "OnePlus Ace 3V 全網通版" -"CPH2587" "OnePlus Nord 4 印度版" -"CPH2589" "OnePlus Nord 4 歐洲版/國際版" +"PJF110" "OnePlus Ace 3V 國行版" +"CPH2619" "OnePlus Nord 4 印度版" +"CPH2621" "OnePlus Nord 4 歐洲版/國際版" +"PJX110" "OnePlus Ace 3 Pro 國行版" "AC2001" "OnePlus Nord 印度版" "AC2003" "OnePlus Nord 歐洲版/國際版" "DN2101" "OnePlus Nord 2 印度版" diff --git a/tools/tools.sh b/tools/tools.sh index 71271ca..21faddd 100644 --- a/tools/tools.sh +++ b/tools/tools.sh @@ -446,12 +446,12 @@ fi Socname="$(getprop ro.soc.model)" if [[ $Socname != "" ]]; then if [[ -f $tools_path/soc.json ]]; then - jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' $tools_path/soc.json &>/dev/null + jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' "$tools_path/soc.json" &>/dev/null if [[ $? = 0 ]]; then - DEVICE_NAME="$(jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' $tools_path/soc.json 2>/dev/null)" - jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' $tools_path/soc.json &>/dev/null + DEVICE_NAME="$(jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' "$tools_path/soc.json" 2>/dev/null)" + jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' "$tools_path/soc.json" &>/dev/null if [[ $? = 0 ]]; then - RAMINFO="$(jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' $tools_path/soc.json 2>/dev/null)" + RAMINFO="$(jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' "$tools_path/soc.json" 2>/dev/null)" else RAMINFO="RAM:null" fi @@ -990,7 +990,6 @@ Backup_apk() { [[ ! -f $app_details ]] && echo "{\n}">"$app_details" 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)" - apk_version3="$(dumpsys package "$name2" 2>/dev/null | awk '/versionName=/{print $1}' | cut -f2 -d '=' | head -1)" if [[ $apk_version = $apk_version2 ]]; then [[ $(sed -e '/^$/d' "$txt2" | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2" unset xb @@ -1032,17 +1031,16 @@ Backup_apk() { [[ $(sed -e '/^$/d' "$txt2" 2>/dev/null | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2" [[ $apk_version != "" ]] && { echoRgb "覆蓋app_details" - jq -c --arg apk_version "$apk_version2" --arg version_name "$apk_version3" --arg software "$name1" '.[$software].apk_version = $apk_version | .[$software].versionName = $version_name' "$app_details" > temp.json && mv temp.json "$app_details" + jq --arg apk_version "$apk_version2" --arg software "$name1" '.[$software].apk_version = $apk_version' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json } || { echoRgb "新增app_details" extra_content="{ \"$name1\": { \"PackageName\": \"$name2\", - \"apk_version\": \"$apk_version2\", - \"versionName\": \"$apk_version3\" + \"apk_version\": \"$apk_version2\" } }" - jq -c --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && mv temp.json "$app_details" + jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json } else rm -rf "$Backup_folder" @@ -1068,6 +1066,32 @@ Backup_apk() { fi [[ $name2 = bin.mt.plus && ! -f $Backup/$name1.apk ]] && cp -r "$apk_path" "$Backup/$name1.apk" } +Backup_ssaid() { + Ssaid="$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")" + ssaid="$(get_ssaid "$name2")" + echoRgb "SSAID:$(get_ssaid "$name2")" + if [[ $ssaid != null && $ssaid != $Ssaid ]]; then + echoRgb "$Ssaid>$ssaid" + SSAID_apk="$(echo "$name1 \"$name2\"")" + SSAID_apk2="$(echo "$SSAID_apk\n$SSAID_apk2")" + jq --arg entry "$name1" --arg new_value "$ssaid" '.[$entry].Ssaid |= $new_value' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json + echo_log "備份ssaid" "備份" "$name1" + fi + [[ $ssaid = null ]] && ssaid= +} +Backup_Permissions() { + get_Permissions="$(jq -r '.[] | select(.permissions != null).permissions' "$app_details")" + Get_Permissions="$(get_Permissions "$name2" | jq -nR '[inputs | select(length>0) | split(" ") | {(.[0]): .[-1]}] | add')" + if [[ $Get_Permissions != "" ]]; then + if [[ $get_Permissions = "" ]]; then + jq --arg packageName "$name1" --argjson permissions "$Get_Permissions" '.[$packageName].permissions |= $permissions' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json + #jq --arg packageName "$name1" --argjson permissions "$Get_Permissions" '.[$packageName] |= . + {permissions: $permissions}' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json + echo_log "備份權限" "備份" "$name1" + else + [[ $get_Permissions != $Get_Permissions ]] && jq --arg packageName "$name1" --argjson permissions "$Get_Permissions" '.[$packageName] |= . + {permissions: $permissions}' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json && echo_log "備份權限" "備份" "$name1" + fi + fi +} #檢測數據位置進行備份 Backup_data() { data_path="$path/$1/$name2" @@ -1089,7 +1113,7 @@ Backup_data() { ;; esac if [[ -d $data_path ]]; then - unset Filesize m_size k_size get_size ssaid Get_Permissions result + unset Filesize m_size k_size get_size ssaid Get_Permissions result Permissions Filesize="$(du -s "$data_path" | awk '{print $1}')" if [[ $Size != $Filesize ]]; then k_size="$(awk 'BEGIN{printf "%.2f\n", "'$Filesize'"'*1024'/'1024'}')" @@ -1099,28 +1123,11 @@ Backup_data() { else [[ $(echo "$m_size" | cut -d '.' -f1) -lt 1000 ]] && get_size="${m_size}MB" || get_size="$(awk 'BEGIN{printf "%.2f\n", "'$m_size'"/'1024'}')GB" fi - if [[ $1 = user ]]; then - Ssaid="$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")" - ssaid="$(get_ssaid "$name2")" - echoRgb "SSAID:$(get_ssaid "$name2")" - if [[ $ssaid != null && $ssaid != $Ssaid ]]; then - echoRgb "$Ssaid>$ssaid" - SSAID_apk="$(echo "$name1 \"$name2\"")" - SSAID_apk2="$(echo "$SSAID_apk\n$SSAID_apk2")" - jq -c --arg entry "$name1" --arg new_value "$ssaid" '.[$entry].Ssaid |= $new_value' "$app_details" > temp.json && mv temp.json "$app_details" - echo_log "備份ssaid" "備份" "$name1" - fi - [[ $ssaid = null ]] && ssaid= - Get_Permissions="$(get_Permissions "$name2")" - if [[ $Get_Permissions != "" ]]; then - if [[ $Permissions = "" ]]; then - echo "Permissions=\"$Get_Permissions\"">"$app_Permissions" - echo_log "備份權限" "備份" "$name1" - else - [[ $Permissions != $Get_Permissions ]] && echo "Permissions=\"$Get_Permissions\"">"$app_Permissions" && echo_log "備份權限" "備份" "$name1" - fi - fi - fi + case $1 in + user) + Backup_ssaid + Backup_Permissions ;; + esac #停止應用 case $1 in user|data|obb) kill_app ;; @@ -1153,20 +1160,14 @@ Backup_data() { \"Size\": \"$Filesize\" } }" - jq -c --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && mv temp.json "$app_details" + jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json else extra_content="{ - \"$name1\": { - \"PackageName\": \"$name2\", - \"apk_version\": \"$apk_version2\", - \"versionName\": \"$apk_version3\", - \"Ssaid\": \"$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")\" - }, \"$1\": { \"Size\": \"$Filesize\" } }" - jq -c --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && mv temp.json "$app_details" + jq --argjson new_content "$extra_content" '. += $new_content' "$app_details" > temp.json && cp temp.json "$app_details" && rm -rf temp.json fi else rm -rf "$Backup_folder/$1".tar.* @@ -1365,10 +1366,15 @@ get_name(){ find "$MODDIR" -maxdepth 2 -name "apk.*" -type f 2>/dev/null | sort | while read; do Folder="${REPLY%/*}" [[ $rgb_a -ge 229 ]] && rgb_a=118 - unset PackageName NAME DUMPAPK ChineseName versionName apk_version Ssaid dataSize obbSize userSize + unset PackageName NAME DUMPAPK ChineseName apk_version Ssaid dataSize obbSize userSize if [[ -f $Folder/app_details.json ]]; then ChineseName="$(jq -r 'to_entries[] | select(.key != null).key' "$Folder/app_details.json" | head -n 1)" PackageName="$(jq -r '.[] | select(.PackageName != null).PackageName' "$Folder/app_details.json")" + if [[ -f $Folder/Permissions ]]; then + unset Permissions + . "$Folder/Permissions" + jq --arg packageName "$ChineseName" --argjson permissions "$(echo "$Permissions" | jq -nR '[inputs | select(length>0) | split(" ") | {(.[0]): .[-1]}] | add')" '.[$packageName] |= . + {permissions: $permissions}' "$Folder/app_details.json" > temp.json && cp temp.json "$Folder/app_details.json" && rm -rf "$Folder/Permissions" temp.json && echoRgb "更新$Folder/app_details.json" + fi else if [[ -f $Folder/app_details ]]; then . "$Folder/app_details" &>/dev/null @@ -1376,7 +1382,6 @@ get_name(){ \"$ChineseName\": { \"PackageName\": \"$PackageName\", \"apk_version\": \"$apk_version\", - \"versionName\": \"$versionName\", \"Ssaid\": \"$Ssaid\" }, \"data\": { @@ -1390,7 +1395,7 @@ get_name(){ } }" echo "{\n}">"$Folder/app_details.json" - jq -c --argjson new_content "$extra_content" '. += $new_content' "$Folder/app_details.json" > temp.json && rm -rf "$Folder/app_details" && mv temp.json "$Folder/app_details.json" + jq --argjson new_content "$extra_content" '. += $new_content' "$Folder/app_details.json" > temp.json && cp temp.json "$Folder/app_details.json" && rm -rf temp.json fi fi [[ ! -f $txt ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market" >"$txt" @@ -1534,8 +1539,10 @@ Set_screen_pause_seconds () { restore_permissions () { echoRgb "恢復權限" appops reset --user "$user" "$name2" &>/dev/null - [[ $(echo "$Permissions" | grep "true$") != "" ]] && Set_true_Permissions "$name2" "$(echo "$Permissions" | grep "true$" | sed 's/ true$//' | xargs)" &>/dev/null - [[ $(echo "$Permissions" | grep "false$") != "" ]] && Set_false_Permissions "$name2" "$(echo "$Permissions" | grep "false$" | sed 's/ false$//' | xargs)" &>/dev/null + true_permissions="$(jq -r '.[] | select(.permissions != null).permissions | with_entries(select(.value == "true")) | keys[]' "$app_details")" + false_permissions="$(jq -r '.[] | select(.permissions != null).permissions | with_entries(select(.value == "false")) | keys[]' "$app_details")" + [[ $true_permissions != "" ]] && Set_true_Permissions "$name2" "$(echo "$true_permissions" | xargs)" &>/dev/null + [[ $false_permissions != "" ]] && Set_false_Permissions "$name2" "$(echo "$false_permissions" | xargs)" &>/dev/null } case $operate in backup) @@ -1727,7 +1734,7 @@ backup) echoRgb "備份第$i/$r個應用 剩下$((r - i))個" "3" notification --tag="101" --title="App備份" --text="備份 $name1 \"$name2\"" echoRgb "備份 $name1 \"$name2\"" "2" - unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path Ssaid ssaid Permissions + unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version apk_version2 zsize zmediapath Size data_path Ssaid ssaid Permissions if [[ $Backup_Mode = true ]]; then if [[ $name1 = !* || $name1 = !* ]]; then name1="$(echo "$name1" | sed 's/!//g ; s/!//g')" @@ -1750,7 +1757,7 @@ backup) if [[ -f $app_details ]]; then PackageName="$(jq -r '.[] | select(.PackageName != null).PackageName' "$app_details")" if [[ $PackageName != $name2 ]]; then - unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version versionName apk_version2 apk_version3 zsize zmediapath Size data_path Ssaid ssaid Permissions + unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version apk_version2 zsize zmediapath Size data_path Ssaid ssaid Permissions Backup_folder="$Backup/${name1}[${name2}]" app_details="$Backup_folder/app_details.json" app_Permissions="$Backup_folder/Permissions"