This commit is contained in:
Yawasau
2024-06-11 12:56:19 +08:00
parent 71c40d5826
commit 93e437ec02
2 changed files with 101 additions and 80 deletions

View File

@@ -129,6 +129,7 @@
"2311BPN23C" "Xiaomi 14 Pro 鈦金屬版 (衛星通訊)" "2311BPN23C" "Xiaomi 14 Pro 鈦金屬版 (衛星通訊)"
"24031PN0DC" "Xiaomi 14 Ultra 國行版" "24031PN0DC" "Xiaomi 14 Ultra 國行版"
"24030PN60G" "Xiaomi 14 Ultra 國際版" "24030PN60G" "Xiaomi 14 Ultra 國際版"
"24053PY09I" "Xiaomi 14 Civi 印度版"
"2406APNFAG" "Xiaomi 14T 國際版" "2406APNFAG" "Xiaomi 14T 國際版"
"XIG06" "Xiaomi 14T 日本版 (KDDI)" "XIG06" "Xiaomi 14T 日本版 (KDDI)"
"2407FPN8EG" "Xiaomi 14T Pro 國際版" "2407FPN8EG" "Xiaomi 14T Pro 國際版"
@@ -358,8 +359,8 @@
"23100RN82L" "Redmi 13C 拉美版" "23100RN82L" "Redmi 13C 拉美版"
"23108RN04Y" "Redmi 13C 國際版 (NFC)" "23108RN04Y" "Redmi 13C 國際版 (NFC)"
"23124RN87C" "Redmi 13C 5G 國行版 / Redmi 13R 5G" "23124RN87C" "Redmi 13C 5G 國行版 / Redmi 13R 5G"
"23124RN87G" "Redmi 13C 5G 國際版"
"23124RN87I" "Redmi 13C 5G 印度版" "23124RN87I" "Redmi 13C 5G 印度版"
"23124RN87G" "Redmi 13C 5G 國際版"
"2014018" "紅米 Note 聯通 3G 標準版" "2014018" "紅米 Note 聯通 3G 標準版"
"2013121" "紅米 Note 聯通 3G 增強版" "2013121" "紅米 Note 聯通 3G 增強版"
"2014017" "紅米 Note 移動 3G 標準版" "2014017" "紅米 Note 移動 3G 標準版"
@@ -518,6 +519,7 @@
"23090RA98G" "Redmi Note 13 Pro+ 5G 國際版" "23090RA98G" "Redmi Note 13 Pro+ 5G 國際版"
"23090RA98I" "Redmi Note 13 Pro+ 5G 印度版" "23090RA98I" "Redmi Note 13 Pro+ 5G 印度版"
"24040RA98R" "Redmi Note 13 Pro+ 5G 日本版" "24040RA98R" "Redmi Note 13 Pro+ 5G 日本版"
"2406ERN9CC" "Redmi Note 13R"
"2311FRAFDC" "Redmi Note 13R Pro" "2311FRAFDC" "Redmi Note 13R Pro"
"M2004J7AC" "Redmi 10X 5G" "M2004J7AC" "Redmi 10X 5G"
"M2004J7BC" "Redmi 10X Pro 5G" "M2004J7BC" "Redmi 10X Pro 5G"
@@ -580,6 +582,9 @@
"23129RN51X" "Redmi A3 國際版" "23129RN51X" "Redmi A3 國際版"
"23129RN51H" "Redmi A3 印度版" "23129RN51H" "Redmi A3 印度版"
"2312CRNCCL" "Redmi A3 拉美版" "2312CRNCCL" "Redmi A3 拉美版"
"24048RN6CG" "Redmi A3x 國際版"
"24048RN6CI" "Redmi A3x 印度版"
"24044RN32L" "Redmi A3x 拉美版"
"22081283C" "Redmi Pad 國行版" "22081283C" "Redmi Pad 國行版"
"22081283G" "Redmi Pad 國際版" "22081283G" "Redmi Pad 國際版"
"23073RPBFC" "Redmi Pad SE 國行版" "23073RPBFC" "Redmi Pad SE 國行版"
@@ -587,6 +592,7 @@
"23073RPBFL" "Redmi Pad SE 拉美版" "23073RPBFL" "Redmi Pad SE 拉美版"
"2405CRPFDC" "Redmi Pad Pro 國行版" "2405CRPFDC" "Redmi Pad Pro 國行版"
"2405CRPFDG" "Redmi Pad Pro 國際版" "2405CRPFDG" "Redmi Pad Pro 國際版"
"2405CRPFDL" "Redmi Pad Pro 拉美版"
"24074RPD2C" "Redmi Pad Pro 5G 國行版" "24074RPD2C" "Redmi Pad Pro 5G 國行版"
"24074RPD2G" "Redmi Pad Pro 5G 國際版" "24074RPD2G" "Redmi Pad Pro 5G 國際版"
"M1805E10A" "POCO F1" "M1805E10A" "POCO F1"
@@ -596,14 +602,12 @@
"22021211RG" "POCO F4 國際版" "22021211RG" "POCO F4 國際版"
"22021211RI" "POCO F4 印度版" "22021211RI" "POCO F4 印度版"
"21121210G" "POCO F4 GT 國際版" "21121210G" "POCO F4 GT 國際版"
"21121210I" "POCO F4 GT 印度版"
"23049PCD8G" "POCO F5 國際版" "23049PCD8G" "POCO F5 國際版"
"23049PCD8I" "POCO F5 印度版" "23049PCD8I" "POCO F5 印度版"
"23013PC75G" "POCO F5 Pro 國際版" "23013PC75G" "POCO F5 Pro 國際版"
"24069PC21G" "POCO F6 國際版" "24069PC21G" "POCO F6 國際版"
"24069PC21I" "POCO F6 印度版" "24069PC21I" "POCO F6 印度版"
"23113RKC6G" "POCO F6 Pro 國際版" "23113RKC6G" "POCO F6 Pro 國際版"
"23113RKC6I" "POCO F6 Pro 印度版"
"M1912G7BI" "POCO X2 印度版" "M1912G7BI" "POCO X2 印度版"
"M2007J20CI" "POCO X3 印度版" "M2007J20CI" "POCO X3 印度版"
"M2007J20CG" "POCO X3 NFC 國際版" "M2007J20CG" "POCO X3 NFC 國際版"
@@ -643,6 +647,7 @@
"2404APC5FG" "POCO M6 國際版" "2404APC5FG" "POCO M6 國際版"
"2404APC5FI" "POCO M6 印度版" "2404APC5FI" "POCO M6 印度版"
"23128PC33I" "POCO M6 5G 印度版" "23128PC33I" "POCO M6 5G 印度版"
"24066PC95I" "POCO M6 Plus 5G 印度版"
"2312FPCA6G" "POCO M6 Pro 國際版" "2312FPCA6G" "POCO M6 Pro 國際版"
"23076PC4BI" "POCO M6 Pro 5G 印度版" "23076PC4BI" "POCO M6 Pro 5G 印度版"
"M2006C3MI" "POCO C3 印度版" "M2006C3MI" "POCO C3 印度版"
@@ -1048,6 +1053,10 @@
"G1MNW" "Pixel 8 Pro (mmWave)" "G1MNW" "Pixel 8 Pro (mmWave)"
"GC3VE" "Pixel 8 Pro (Global)" "GC3VE" "Pixel 8 Pro (Global)"
"GE9DP" "Pixel 8 Pro (Japan)" "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)" "G9FPL" "Pixel Fold (US, EU)"
"G0B96" "Pixel Fold (Japan)" "G0B96" "Pixel Fold (Japan)"
"C1502W" "Pixel C" "C1502W" "Pixel C"
@@ -1105,6 +1114,7 @@
"TB132FU" "聯想小新 Pad Pro 2022 迅鯤版" "TB132FU" "聯想小新 Pad Pro 2022 迅鯤版"
"TB371FC" "聯想小新 Pad Pro 12.7 驍龍版" "TB371FC" "聯想小新 Pad Pro 12.7 驍龍版"
"TB370FU" "聯想小新 Pad Pro 12.7 天璣版" "TB370FU" "聯想小新 Pad Pro 12.7 天璣版"
"TB351FU" "聯想小新 Pad Studio"
"TB372FC" "聯想小新學習平板 12.7" "TB372FC" "聯想小新學習平板 12.7"
"Lenovo YT3-850F" "聯想 YOGA Tab 3 8」 Wi-Fi 版" "Lenovo YT3-850F" "聯想 YOGA Tab 3 8」 Wi-Fi 版"
"Lenovo YT3-850L" "聯想 YOGA Tab 3 8」 LTE 版" "Lenovo YT3-850L" "聯想 YOGA Tab 3 8」 LTE 版"
@@ -1238,6 +1248,8 @@
"M461Q" "魅族 21 公開版" "M461Q" "魅族 21 公開版"
"M461H" "魅族 21 國際版" "M461H" "魅族 21 國際版"
"M481Q" "魅族 21 PRO" "M481Q" "魅族 21 PRO"
"M468Q" "魅族 21 Note 公開版"
"M468H" "魅族 21 Note 國際版"
"M852Q" "魅族 X8 公開版" "M852Q" "魅族 X8 公開版"
"M852H" "魅族 X8 國際版" "M852H" "魅族 X8 國際版"
"M813Q" "魅族 V8 高配版" "M813Q" "魅族 V8 高配版"
@@ -1381,6 +1393,7 @@
"XT2321-2" "moto razr 40 Ultra" "XT2321-2" "moto razr 40 Ultra"
"XT2343-3" "moto g54" "XT2343-3" "moto g54"
"XT2363-4" "moto g34" "XT2363-4" "moto g34"
"XT2401-2" "moto X50 Ultra"
"TA-1000" "Nokia 6" "TA-1000" "Nokia 6"
"TA-1054" "Nokia 6 (第二代)" "TA-1054" "Nokia 6 (第二代)"
"TA-1041" "Nokia 7" "TA-1041" "Nokia 7"
@@ -1487,101 +1500,102 @@
"ONE E1000" "OnePlus X 全網通版" "ONE E1000" "OnePlus X 全網通版"
"ONE E1003" "OnePlus X 國際版" "ONE E1003" "OnePlus X 國際版"
"ONE E1005" "OnePlus X 北美版" "ONE E1005" "OnePlus X 北美版"
"ONEPLUS A3000" "OnePlus 3 全網通版" "ONEPLUS A3000" "OnePlus 3 國行版"
"ONEPLUS A3003" "OnePlus 3 國際版" "ONEPLUS A3003" "OnePlus 3 國際版"
"ONEPLUS A3010" "OnePlus 3T 全網通版" "ONEPLUS A3010" "OnePlus 3T 國行版"
"ONEPLUS A3013" "OnePlus 3T 國際版" "ONEPLUS A3013" "OnePlus 3T 國際版"
"ONEPLUS A5000" "OnePlus 5 全網通版" "ONEPLUS A5000" "OnePlus 5"
"ONEPLUS A5010" "OnePlus 5T 全網通版" "ONEPLUS A5010" "OnePlus 5T"
"ONEPLUS A6000" "OnePlus 6 全網通版" "ONEPLUS A6000" "OnePlus 6 國行版"
"ONEPLUS A6003" "OnePlus 6 國際版" "ONEPLUS A6003" "OnePlus 6 國際版"
"ONEPLUS A6010" "OnePlus 6T 全網通版" "ONEPLUS A6010" "OnePlus 6T 國行版"
"ONEPLUS A6013" "OnePlus 6T 國際版" "ONEPLUS A6013" "OnePlus 6T 國際版"
"GM1900" "OnePlus 7 全網通版" "GM1900" "OnePlus 7 國行版"
"GM1901" "OnePlus 7 印度版" "GM1901" "OnePlus 7 印度版"
"GM1903" "OnePlus 7 歐洲版" "GM1903" "OnePlus 7 歐洲版"
"GM1905" "OnePlus 7 北美版/國際版" "GM1905" "OnePlus 7 北美版/國際版"
"GM1910" "OnePlus 7 Pro 全網通版" "GM1910" "OnePlus 7 Pro 國行版"
"GM1911" "OnePlus 7 Pro 印度版" "GM1911" "OnePlus 7 Pro 印度版"
"GM1913" "OnePlus 7 Pro 歐洲版" "GM1913" "OnePlus 7 Pro 歐洲版"
"GM1915" "OnePlus 7 Pro 北美版/國際版" "GM1915" "OnePlus 7 Pro 北美版/國際版"
"GM1917" "OnePlus 7 Pro T-Mobile 版" "GM1917" "OnePlus 7 Pro T-Mobile 版"
"GM1920" "OnePlus 7 Pro 5G 歐洲版" "GM1920" "OnePlus 7 Pro 5G 歐洲版"
"GM1925" "OnePlus 7 Pro 5G Sprint 版" "GM1925" "OnePlus 7 Pro 5G Sprint 版"
"HD1900" "OnePlus 7T 全網通版" "HD1900" "OnePlus 7T 國行版"
"HD1901" "OnePlus 7T 印度版" "HD1901" "OnePlus 7T 印度版"
"HD1903" "OnePlus 7T 歐洲版" "HD1903" "OnePlus 7T 歐洲版"
"HD1905" "OnePlus 7T 北美版/國際版" "HD1905" "OnePlus 7T 北美版/國際版"
"HD1907" "OnePlus 7T T-Mobile 版" "HD1907" "OnePlus 7T T-Mobile 版"
"HD1910" "OnePlus 7T Pro 全網通版" "HD1910" "OnePlus 7T Pro 國行版"
"HD1911" "OnePlus 7T Pro 印度版" "HD1911" "OnePlus 7T Pro 印度版"
"HD1913" "OnePlus 7T Pro 歐洲版/國際版" "HD1913" "OnePlus 7T Pro 歐洲版/國際版"
"HD1925" "OnePlus 7T Pro 5G T-Mobile 版 / OnePlus Concept One" "HD1925" "OnePlus 7T Pro 5G T-Mobile 版 / OnePlus Concept One"
"IN2010" "OnePlus 8 全網通版" "IN2010" "OnePlus 8 國行版"
"IN2011" "OnePlus 8 印度版" "IN2011" "OnePlus 8 印度版"
"IN2013" "OnePlus 8 歐洲版" "IN2013" "OnePlus 8 歐洲版"
"IN2015" "OnePlus 8 北美版/國際版" "IN2015" "OnePlus 8 北美版/國際版"
"IN2017" "OnePlus 8 T-Mobile 版" "IN2017" "OnePlus 8 T-Mobile 版"
"IN2019" "OnePlus 8 Visible 版/Verizon 版" "IN2019" "OnePlus 8 Visible 版/Verizon 版"
"IN2020" "OnePlus 8 Pro 全網通版" "IN2020" "OnePlus 8 Pro 國行版"
"IN2021" "OnePlus 8 Pro 印度版" "IN2021" "OnePlus 8 Pro 印度版"
"IN2023" "OnePlus 8 Pro 歐洲版" "IN2023" "OnePlus 8 Pro 歐洲版"
"IN2025" "OnePlus 8 Pro 北美版/國際版" "IN2025" "OnePlus 8 Pro 北美版/國際版"
"KB2000" "OnePlus 8T 全網通版" "KB2000" "OnePlus 8T 國行版"
"KB2001" "OnePlus 8T 印度版" "KB2001" "OnePlus 8T 印度版"
"KB2003" "OnePlus 8T 歐洲版" "KB2003" "OnePlus 8T 歐洲版"
"KB2005" "OnePlus 8T 北美版/國際版" "KB2005" "OnePlus 8T 北美版/國際版"
"KB2007" "OnePlus 8T+ T-Mobile 版" "KB2007" "OnePlus 8T+ T-Mobile 版"
"LE2100" "OnePlus 9R 全網通版" "LE2100" "OnePlus 9R 國行版"
"LE2101" "OnePlus 9R 印度版" "LE2101" "OnePlus 9R 印度版"
"LE2110" "OnePlus 9 全網通版" "LE2110" "OnePlus 9 國行版"
"LE2111" "OnePlus 9 印度版" "LE2111" "OnePlus 9 印度版"
"LE2113" "OnePlus 9 歐洲版" "LE2113" "OnePlus 9 歐洲版"
"LE2115" "OnePlus 9 北美版/國際版" "LE2115" "OnePlus 9 北美版/國際版"
"LE2117" "OnePlus 9 T-Mobile 版" "LE2117" "OnePlus 9 T-Mobile 版"
"LE2119" "OnePlus 9 Verzion 版" "LE2119" "OnePlus 9 Verzion 版"
"LE2120" "OnePlus 9 Pro 全網通版" "LE2120" "OnePlus 9 Pro 國行版"
"LE2121" "OnePlus 9 Pro 印度版" "LE2121" "OnePlus 9 Pro 印度版"
"LE2123" "OnePlus 9 Pro 歐洲版" "LE2123" "OnePlus 9 Pro 歐洲版"
"LE2125" "OnePlus 9 Pro 北美版/國際版" "LE2125" "OnePlus 9 Pro 北美版/國際版"
"LE2127" "OnePlus 9 Pro T-Mobile 版" "LE2127" "OnePlus 9 Pro T-Mobile 版"
"MT2110" "OnePlus 9RT 全網通版" "MT2110" "OnePlus 9RT 國行版"
"MT2111" "OnePlus 9RT 印度版" "MT2111" "OnePlus 9RT 印度版"
"NE2210" "OnePlus 10 Pro 全網通版" "NE2210" "OnePlus 10 Pro 國行版"
"NE2211" "OnePlus 10 Pro 印度版" "NE2211" "OnePlus 10 Pro 印度版"
"NE2213" "OnePlus 10 Pro 歐洲版/國際版" "NE2213" "OnePlus 10 Pro 歐洲版/國際版"
"NE2215" "OnePlus 10 Pro 北美版" "NE2215" "OnePlus 10 Pro 北美版"
"NE2217" "OnePlus 10 Pro T-Mobile 版" "NE2217" "OnePlus 10 Pro T-Mobile 版"
"PGKM10" "OnePlus Ace 全網通版" "PGKM10" "OnePlus Ace 國行版"
"CPH2423" "OnePlus 10R 印度版" "CPH2423" "OnePlus 10R 印度版"
"CPH2411" "OnePlus 10R Endurance 印度版" "CPH2411" "OnePlus 10R Endurance 印度版"
"PGZ110" "OnePlus Ace 競速版 全網通版" "PGZ110" "OnePlus Ace 競速版 國行版"
"PGP110" "OnePlus Ace Pro 全網通版" "PGP110" "OnePlus Ace Pro 國行版"
"CPH2413" "OnePlus 10T 印度版" "CPH2413" "OnePlus 10T 印度版"
"CPH2415" "OnePlus 10T 歐洲版/國際版" "CPH2415" "OnePlus 10T 歐洲版/國際版"
"CPH2417" "OnePlus 10T 北美版" "CPH2417" "OnePlus 10T 北美版"
"CPH2419" "OnePlus 10T T-Mobile 版" "CPH2419" "OnePlus 10T T-Mobile 版"
"PHB110" "OnePlus 11 全網通版" "PHB110" "OnePlus 11 國行版"
"CPH2447" "OnePlus 11 印度版" "CPH2447" "OnePlus 11 印度版"
"CPH2449" "OnePlus 11 歐洲版/國際版" "CPH2449" "OnePlus 11 歐洲版/國際版"
"CPH2451" "OnePlus 11 北美版" "CPH2451" "OnePlus 11 北美版"
"PHK110" "OnePlus Ace 2 全網通版" "PHK110" "OnePlus Ace 2 國行版"
"CPH2487" "OnePlus 11R 印度版" "CPH2487" "OnePlus 11R 印度版"
"PHP110" "OnePlus Ace 2V 全網通版" "PHP110" "OnePlus Ace 2V 國行版"
"CPH2491" "OnePlus Nord 3 印度版" "CPH2491" "OnePlus Nord 3 印度版"
"CPH2493" "OnePlus Nord 3 歐洲版" "CPH2493" "OnePlus Nord 3 歐洲版"
"PJA110" "OnePlus Ace 2 Pro 全網通版" "PJA110" "OnePlus Ace 2 Pro 國行版"
"PJD110" "OnePlus 12 全網通版" "PJD110" "OnePlus 12 國行版"
"CPH2573" "OnePlus 12 印度版" "CPH2573" "OnePlus 12 印度版"
"CPH2581" "OnePlus 12 歐洲版/國際版" "CPH2581" "OnePlus 12 歐洲版/國際版"
"CPH2583" "OnePlus 12 北美版" "CPH2583" "OnePlus 12 北美版"
"PJE110" "OnePlus Ace 3 全網通版" "PJE110" "OnePlus Ace 3 國行版"
"CPH2585" "OnePlus 12R 印度版" "CPH2585" "OnePlus 12R 印度版"
"CPH2609" "OnePlus 12R 歐洲版/國際版" "CPH2609" "OnePlus 12R 歐洲版/國際版"
"CPH2611" "OnePlus 12R 北美版" "CPH2611" "OnePlus 12R 北美版"
"PJF110" "OnePlus Ace 3V 全網通版" "PJF110" "OnePlus Ace 3V 國行版"
"CPH2587" "OnePlus Nord 4 印度版" "CPH2619" "OnePlus Nord 4 印度版"
"CPH2589" "OnePlus Nord 4 歐洲版/國際版" "CPH2621" "OnePlus Nord 4 歐洲版/國際版"
"PJX110" "OnePlus Ace 3 Pro 國行版"
"AC2001" "OnePlus Nord 印度版" "AC2001" "OnePlus Nord 印度版"
"AC2003" "OnePlus Nord 歐洲版/國際版" "AC2003" "OnePlus Nord 歐洲版/國際版"
"DN2101" "OnePlus Nord 2 印度版" "DN2101" "OnePlus Nord 2 印度版"

View File

@@ -446,12 +446,12 @@ fi
Socname="$(getprop ro.soc.model)" Socname="$(getprop ro.soc.model)"
if [[ $Socname != "" ]]; then if [[ $Socname != "" ]]; then
if [[ -f $tools_path/soc.json ]]; 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 if [[ $? = 0 ]]; then
DEVICE_NAME="$(jq -r --arg device "$Socname" '.[$device] | "處理器:\(.VENDOR) \(.NAME)"' $tools_path/soc.json 2>/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 jq -r --arg device "$Socname" '.[$device] | "RAM:\(.MEMORY) \(.CHANNELS)"' "$tools_path/soc.json" &>/dev/null
if [[ $? = 0 ]]; then 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 else
RAMINFO="RAM:null" RAMINFO="RAM:null"
fi fi
@@ -990,7 +990,6 @@ Backup_apk() {
[[ ! -f $app_details ]] && echo "{\n}">"$app_details" [[ ! -f $app_details ]] && echo "{\n}">"$app_details"
apk_version="$(jq -r '.[] | select(.apk_version != null).apk_version' "$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_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 if [[ $apk_version = $apk_version2 ]]; then
[[ $(sed -e '/^$/d' "$txt2" | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2" [[ $(sed -e '/^$/d' "$txt2" | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2"
unset xb 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" [[ $(sed -e '/^$/d' "$txt2" 2>/dev/null | awk '{print $2}' | grep -w "^${name2}$" | head -1) = "" ]] && echo "${Backup_folder##*/} $name2" >>"$txt2"
[[ $apk_version != "" ]] && { [[ $apk_version != "" ]] && {
echoRgb "覆蓋app_details" 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" echoRgb "新增app_details"
extra_content="{ extra_content="{
\"$name1\": { \"$name1\": {
\"PackageName\": \"$name2\", \"PackageName\": \"$name2\",
\"apk_version\": \"$apk_version2\", \"apk_version\": \"$apk_version2\"
\"versionName\": \"$apk_version3\"
} }
}" }"
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 else
rm -rf "$Backup_folder" rm -rf "$Backup_folder"
@@ -1068,6 +1066,32 @@ Backup_apk() {
fi fi
[[ $name2 = bin.mt.plus && ! -f $Backup/$name1.apk ]] && cp -r "$apk_path" "$Backup/$name1.apk" [[ $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() { Backup_data() {
data_path="$path/$1/$name2" data_path="$path/$1/$name2"
@@ -1089,7 +1113,7 @@ Backup_data() {
;; ;;
esac esac
if [[ -d $data_path ]]; then 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}')" Filesize="$(du -s "$data_path" | awk '{print $1}')"
if [[ $Size != $Filesize ]]; then if [[ $Size != $Filesize ]]; then
k_size="$(awk 'BEGIN{printf "%.2f\n", "'$Filesize'"'*1024'/'1024'}')" k_size="$(awk 'BEGIN{printf "%.2f\n", "'$Filesize'"'*1024'/'1024'}')"
@@ -1099,28 +1123,11 @@ Backup_data() {
else 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" [[ $(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 fi
if [[ $1 = user ]]; then case $1 in
Ssaid="$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")" user)
ssaid="$(get_ssaid "$name2")" Backup_ssaid
echoRgb "SSAID:$(get_ssaid "$name2")" Backup_Permissions ;;
if [[ $ssaid != null && $ssaid != $Ssaid ]]; then esac
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 case $1 in
user|data|obb) kill_app ;; user|data|obb) kill_app ;;
@@ -1153,20 +1160,14 @@ Backup_data() {
\"Size\": \"$Filesize\" \"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 else
extra_content="{ extra_content="{
\"$name1\": {
\"PackageName\": \"$name2\",
\"apk_version\": \"$apk_version2\",
\"versionName\": \"$apk_version3\",
\"Ssaid\": \"$(jq -r '.[] | select(.Ssaid != null).Ssaid' "$app_details")\"
},
\"$1\": { \"$1\": {
\"Size\": \"$Filesize\" \"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 fi
else else
rm -rf "$Backup_folder/$1".tar.* 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 find "$MODDIR" -maxdepth 2 -name "apk.*" -type f 2>/dev/null | sort | while read; do
Folder="${REPLY%/*}" Folder="${REPLY%/*}"
[[ $rgb_a -ge 229 ]] && rgb_a=118 [[ $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 if [[ -f $Folder/app_details.json ]]; then
ChineseName="$(jq -r 'to_entries[] | select(.key != null).key' "$Folder/app_details.json" | head -n 1)" 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")" 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 else
if [[ -f $Folder/app_details ]]; then if [[ -f $Folder/app_details ]]; then
. "$Folder/app_details" &>/dev/null . "$Folder/app_details" &>/dev/null
@@ -1376,7 +1382,6 @@ get_name(){
\"$ChineseName\": { \"$ChineseName\": {
\"PackageName\": \"$PackageName\", \"PackageName\": \"$PackageName\",
\"apk_version\": \"$apk_version\", \"apk_version\": \"$apk_version\",
\"versionName\": \"$versionName\",
\"Ssaid\": \"$Ssaid\" \"Ssaid\": \"$Ssaid\"
}, },
\"data\": { \"data\": {
@@ -1390,7 +1395,7 @@ get_name(){
} }
}" }"
echo "{\n}">"$Folder/app_details.json" 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
fi fi
[[ ! -f $txt ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market" >"$txt" [[ ! -f $txt ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market" >"$txt"
@@ -1534,8 +1539,10 @@ Set_screen_pause_seconds () {
restore_permissions () { restore_permissions () {
echoRgb "恢復權限" echoRgb "恢復權限"
appops reset --user "$user" "$name2" &>/dev/null 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 true_permissions="$(jq -r '.[] | select(.permissions != null).permissions | with_entries(select(.value == "true")) | keys[]' "$app_details")"
[[ $(echo "$Permissions" | grep "false$") != "" ]] && Set_false_Permissions "$name2" "$(echo "$Permissions" | grep "false$" | sed 's/ false$//' | xargs)" &>/dev/null 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 case $operate in
backup) backup)
@@ -1727,7 +1734,7 @@ backup)
echoRgb "備份第$i/$r個應用 剩下$((r - i))" "3" echoRgb "備份第$i/$r個應用 剩下$((r - i))" "3"
notification --tag="101" --title="App備份" --text="備份 $name1 \"$name2\"" notification --tag="101" --title="App備份" --text="備份 $name1 \"$name2\""
echoRgb "備份 $name1 \"$name2\"" "2" 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 [[ $Backup_Mode = true ]]; then
if [[ $name1 = !* || $name1 = * ]]; then if [[ $name1 = !* || $name1 = * ]]; then
name1="$(echo "$name1" | sed 's/!//g ; s///g')" name1="$(echo "$name1" | sed 's/!//g ; s///g')"
@@ -1750,7 +1757,7 @@ backup)
if [[ -f $app_details ]]; then if [[ -f $app_details ]]; then
PackageName="$(jq -r '.[] | select(.PackageName != null).PackageName' "$app_details")" PackageName="$(jq -r '.[] | select(.PackageName != null).PackageName' "$app_details")"
if [[ $PackageName != $name2 ]]; then 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}]" Backup_folder="$Backup/${name1}[${name2}]"
app_details="$Backup_folder/app_details.json" app_details="$Backup_folder/app_details.json"
app_Permissions="$Backup_folder/Permissions" app_Permissions="$Backup_folder/Permissions"