bugfix
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#0關閉音量鍵選擇 (如選項未設置,則強制使用音量鍵選擇)
|
||||
#1開啟音量鍵選擇 (如選項已設置,則跳過該選項提示)
|
||||
#2使用鍵盤輸入,適用於無音量鍵可用設備選擇 (如選項未設置,則強制使用鍵盤輸入)
|
||||
Lo=1
|
||||
Lo=0
|
||||
|
||||
#後台執行腳本
|
||||
0不能關閉當前終端,有壓縮速率
|
||||
@@ -30,7 +30,7 @@ update=1
|
||||
#0 直鏈下載
|
||||
#1 https://ghfast.top
|
||||
#2 https://shrill-pond-3e81.hunsh.workers.dev
|
||||
cdn=
|
||||
cdn=1
|
||||
|
||||
#自定義屏蔽外部掛載點 例:OTG 虛擬SD等 多個掛載點請使用 | 區隔
|
||||
#屏蔽後不會提示音量鍵選擇,不影響Output_path指定外置存儲位置
|
||||
@@ -45,7 +45,7 @@ user=0
|
||||
#此外設置0時將同時忽略appList.txt的!與任何黑名單設置(包括黑名單列表)
|
||||
Backup_Mode=1
|
||||
|
||||
#執行生成應用列表.sh時輸出用於recovery救援的卡刷包?
|
||||
#執行start.sh時輸出用於recovery救援的卡刷包?
|
||||
#1輸出 0不輸出
|
||||
recovery_flash=0
|
||||
|
||||
@@ -57,14 +57,11 @@ Backup_obb_data=1
|
||||
|
||||
#是否在應用數據備份完成後備份自定義目錄
|
||||
#1開啟 0關閉
|
||||
backup_media=1
|
||||
backup_media=0
|
||||
|
||||
#存在進程忽略備份(1忽略0備份)
|
||||
Background_apps_ignore=0
|
||||
|
||||
#假設你遇到列表輸出異常問題請將此設為1
|
||||
debug_list=0
|
||||
|
||||
#添加自定義備份路徑 例:Download DCIM等文件夾 請使用絕對路徑,請勿刪除""
|
||||
Custom_path="
|
||||
#/storage/emulated/0/Pictures/
|
||||
|
||||
9
start.sh
Normal file
9
start.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
#!/system/bin/sh
|
||||
if [ -f "${0%/*}/tools/tools.sh" ]; then
|
||||
MODDIR="${0%/*}"
|
||||
conf_path="${0%/*}/backup_settings.conf"
|
||||
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
|
||||
else
|
||||
echo "${0%/*}/tools/tools.sh遺失"
|
||||
fi
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||
@@ -145,6 +145,9 @@
|
||||
"25010PN30G" "Xiaomi 15 Ultra 國際版"
|
||||
"25010PN30I" "Xiaomi 15 Ultra 印度版"
|
||||
"25042PN24C" "Xiaomi 15S Pro"
|
||||
"25069PTEBG" "Xiaomi 15T 國際版"
|
||||
"2506BPN68G" "Xiaomi 15T Pro 國際版"
|
||||
"2506BPN68R" "Xiaomi 15T Pro 日本版 (無鎖)"
|
||||
"2014616" "小米 Note 雙網通版"
|
||||
"2014619" "小米 Note 全網通版"
|
||||
"2014618" "小米 Note 移動合約版"
|
||||
@@ -179,6 +182,8 @@
|
||||
"24072PX77C" "Xiaomi MIX Fold 4"
|
||||
"2405CPX3DC" "Xiaomi MIX Flip 國行版"
|
||||
"2405CPX3DG" "Xiaomi MIX Flip 國際版"
|
||||
"2505APX7BC" "Xiaomi MIX Flip 2 國行版"
|
||||
"2505APX7BG" "Xiaomi MIX Flip 2 國際版"
|
||||
"2016001" "小米 Max 標準版 全網通版"
|
||||
"2016002" "小米 Max 標準版 國際版"
|
||||
"2016007" "小米 Max 高配版"
|
||||
@@ -197,6 +202,7 @@
|
||||
"2209129SC" "Xiaomi Civi 2"
|
||||
"23046PNC9C" "Xiaomi Civi 3"
|
||||
"24053PY09C" "Xiaomi Civi 4 Pro"
|
||||
"25067PYE3C" "Xiaomi Civi 5 Pro"
|
||||
"M1901F9E" "小米 Play 全網通版"
|
||||
"M1901F9T" "小米 Play 移動 4G+ 版"
|
||||
"MDG2" "小米 A1 國際版"
|
||||
@@ -228,6 +234,8 @@
|
||||
"2410CRP4CG" "Xiaomi Pad 7 國際版"
|
||||
"24091RPADC" "Xiaomi Pad 7 Pro 國行版"
|
||||
"24091RPADG" "Xiaomi Pad 7 Pro 國際版"
|
||||
"25032RP42C" "Xiaomi Pad 7 Ultra"
|
||||
"25053RP5CC" "Xiaomi Pad 7S Pro 12.5"
|
||||
"2013022" "紅米手機 移動版"
|
||||
"2013023" "紅米手機 聯通版"
|
||||
"2013029" "紅米 1S 聯通版"
|
||||
@@ -366,7 +374,7 @@
|
||||
"22126RN91Y" "Redmi 12C 國際版 (NFC)"
|
||||
"2404ARN45A" "Redmi 13 國際版 / REDMI 13x 國際版"
|
||||
"2404ARN45I" "Redmi 13 印度版"
|
||||
"24049RN28L" "Redmi 13 拉美版"
|
||||
"24049RN28L" "Redmi 13 拉美版 / REDMI 13x 拉美版"
|
||||
"24040RN64Y" "Redmi 13 國際版 (NFC)"
|
||||
"2406ERN9CI" "Redmi 13 5G 印度版"
|
||||
"23106RN0DA" "Redmi 13C 國際版"
|
||||
@@ -566,6 +574,7 @@
|
||||
"M2003J15SC" "Redmi 10X 4G"
|
||||
"24069RA21C" "Redmi Turbo 3"
|
||||
"24129RT7CC" "REDMI Turbo 4"
|
||||
"25053RT47C" "REDMI Turbo 4 Pro"
|
||||
"M1903F10A" "Redmi K20 全網通版"
|
||||
"M1903F10C" "Redmi K20 運營商全網通版"
|
||||
"M1903F10I" "Redmi K20 印度版"
|
||||
@@ -603,6 +612,7 @@
|
||||
"24117RK2CC" "REDMI K80"
|
||||
"24122RKC7C" "REDMI K80 Pro"
|
||||
"24127RK2CC" "REDMI K80 Pro 冠軍版"
|
||||
"25060RK16C" "REDMI K80 至尊版"
|
||||
"2016020" "紅米 Pro 標準版"
|
||||
"2016021" "紅米 Pro 高配版 / 尊享版"
|
||||
"M1803E6E" "紅米 S2 全網通版"
|
||||
@@ -651,6 +661,16 @@
|
||||
"24075RP89G" "Redmi Pad SE 8.7 Wi-Fi 國際版"
|
||||
"24076RP19G" "Redmi Pad SE 8.7 4G 國際版"
|
||||
"24076RP19I" "Redmi Pad SE 4G 印度版"
|
||||
"25040RP0AC" "REDMI Pad 2 國行版"
|
||||
"25040RP0AG" "REDMI Pad 2 國際版"
|
||||
"25040RP0AI" "REDMI Pad 2 印度版"
|
||||
"25040RP0AE" "REDMI Pad 2 歐洲版"
|
||||
"25040RP0AL" "REDMI Pad 2 拉美版"
|
||||
"2505DRP06C" "REDMI Pad 2 4G 國行版"
|
||||
"2505DRP06G" "REDMI Pad 2 4G 國際版"
|
||||
"2505DRP06I" "REDMI Pad 2 4G 印度版"
|
||||
"2505DRP06E" "REDMI Pad 2 4G 歐洲版"
|
||||
"25079RPDCC" "REDMI K Pad"
|
||||
"M1805E10A" "POCO F1"
|
||||
"M2004J11G" "POCO F2 Pro 國際版"
|
||||
"M2012K11AG" "POCO F3 國際版"
|
||||
@@ -1216,6 +1236,7 @@
|
||||
"SM-S721U1" "Galaxy S24 FE US Unlocked"
|
||||
"SM-S721W" "Galaxy S24 FE Canada"
|
||||
"SM-S7210" "Galaxy S24 FE HK & TW"
|
||||
"SM-S721Q" "Galaxy S24 FE Japan (SIM Free)"
|
||||
"SCG30" "Galaxy S24 FE Japan (au)"
|
||||
"SM-S721N" "Galaxy S24 FE South Korea"
|
||||
"SM-S931B" "Galaxy S25 Global"
|
||||
@@ -1241,6 +1262,11 @@
|
||||
"SM-S938Z" "Galaxy S25 Ultra Japan (SoftBank)"
|
||||
"SCG32" "Galaxy S25 Ultra Japan (au)"
|
||||
"SC-52F" "Galaxy S25 Ultra Japan (NTT Docomo)"
|
||||
"SM-S937B" "Galaxy S25 Edge Global"
|
||||
"SM-S937U" "Galaxy S25 Edge US Carrier"
|
||||
"SM-S937U1" "Galaxy S25 Edge US Unlocked"
|
||||
"SM-S937W" "Galaxy S25 Edge Canada"
|
||||
"SM-S937N" "Galaxy S25 Edge South Korea"
|
||||
"SM-N960F" "Galaxy Note9 Global"
|
||||
"SM-N960U" "Galaxy Note9 US Carrier"
|
||||
"SM-N960U1" "Galaxy Note9 US Unlocked"
|
||||
@@ -1673,6 +1699,7 @@
|
||||
"SC-53E" "Galaxy A55 5G Japan (NTT Docomo)"
|
||||
"SM-A566E" "Galaxy A56 5G Global"
|
||||
"SM-A566B" "Galaxy A56 5G EU"
|
||||
"SM-A566S" "Galaxy A56 5G South Korea"
|
||||
"SM-A606F" "Galaxy A60 Global"
|
||||
"SM-A606Y" "Galaxy A60 TW"
|
||||
"SM-A705FN" "Galaxy A70 Global"
|
||||
@@ -1748,6 +1775,7 @@
|
||||
"SM-M346B1" "Galaxy M34 5G Southeast Asia"
|
||||
"SM-M346B2" "Galaxy M34 5G Global"
|
||||
"SM-M356B" "Galaxy M35 5G"
|
||||
"SM-M366B" "Galaxy M36 5G"
|
||||
"SM-M405F" "Galaxy M40"
|
||||
"SM-M426B" "Galaxy M42 5G"
|
||||
"SM-M515F" "Galaxy M51"
|
||||
@@ -1772,6 +1800,7 @@
|
||||
"SM-E225F" "Galaxy F22"
|
||||
"SM-E236B" "Galaxy F23 5G"
|
||||
"SM-E346B" "Galaxy F34 5G"
|
||||
"SM-E366B" "Galaxy F36 5G"
|
||||
"SM-F415F" "Galaxy F41"
|
||||
"SM-E426B" "Galaxy F42 5G"
|
||||
"SM-E546B" "Galaxy F54 5G"
|
||||
@@ -1928,6 +1957,7 @@
|
||||
"Lenovo TB-J606F" "小新 Pad"
|
||||
"TB128FU" "小新 Pad 2022"
|
||||
"TB331FC" "小新 Pad 2024"
|
||||
"TB335FC" "小新平板 11"
|
||||
"Lenovo TB-J607F" "小新 Pad Plus"
|
||||
"Lenovo TB-J607Z" "小新 Pad Plus 5G"
|
||||
"TB350XC" "小新 Pad Plus 2023"
|
||||
@@ -1950,11 +1980,13 @@
|
||||
"Lenovo YT3-X90F" "YOGA Tab 3 PRO 10” Wi-Fi 版"
|
||||
"Lenovo YT3-X90L" "YOGA Tab 3 PRO 10” LTE 版"
|
||||
"Lenovo YT-K606F" "YOGA Pad Pro"
|
||||
"TB520FU" "YOGA Pad Pro AI 元啟版"
|
||||
"TB520FU" "YOGA Pad Pro 12.7 / YOGA Pad Pro AI 元啟版"
|
||||
"TB571FU" "YOGA Pad Pro 14.5 AI 元啟版"
|
||||
"SP101FU" "YOGA Paper 墨水平板"
|
||||
"Lenovo TB-9707F" "拯救者平板 Y700 (2022)"
|
||||
"TB320FC" "拯救者平板 Y700 2023"
|
||||
"TB321FU" "拯救者平板 Y700 2025"
|
||||
"TB322FC" "拯救者平板 Y700 四代"
|
||||
"TB570ZU" "拯救者平板 Y900"
|
||||
"Lenovo TB-J616N" "聯想天驕平板電腦"
|
||||
"Lenovo TB-8504F" "聯想 TAB4 8 英寸 Wi-Fi 版"
|
||||
@@ -1996,15 +2028,25 @@
|
||||
"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 版"
|
||||
"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 版"
|
||||
"TB337FU" "聯想昭陽 K11c 10.95 英寸 Wi-Fi 版"
|
||||
"TB373FU" "聯想昭陽 K12 (二代) 12.7 英寸 Wi-Fi 版"
|
||||
"TB373ZC" "聯想昭陽 K12 (二代) 12.7 英寸 5G 版"
|
||||
"Lenovo TB-J606N" "Lenovo Tab K11 11 英寸 LTE 版"
|
||||
"TB-X802F" "聯想昭陽 G11 10.95 英寸 Wi-Fi 版"
|
||||
"TB-X903F" "聯想昭陽 G12 11.5 英寸 Wi-Fi 版"
|
||||
"TBY11" "聯想昭陽 Y11 10.95 英寸 Wi-Fi 版"
|
||||
"Lenovo TB-J606N" "聯想平板電腦 K11 11 英寸 LTE 版"
|
||||
"QBH10" "聯想平板電腦 S11 10.95 英寸 Wi-Fi 版"
|
||||
"QBH11" "聯想平板電腦 S11 Pro 11.5 英寸 Wi-Fi 版"
|
||||
"TB610FU" "ThinkBook Plus Hybrid 2024 (平板)"
|
||||
"M8" "魅族 M8"
|
||||
"M8SE" "魅族 M8 SE"
|
||||
@@ -2086,6 +2128,7 @@
|
||||
"M461Q" "魅族 21 公開版"
|
||||
"M461H" "魅族 21 國際版"
|
||||
"M481Q" "魅族 21 PRO"
|
||||
"M481S" "魅族 21 PRO Flyme 鈦好用版"
|
||||
"M468Q" "魅族 21 Note 公開版"
|
||||
"M468H" "魅族 21 Note 國際版"
|
||||
"M431Q" "魅族 Lucky 08 公開版"
|
||||
@@ -2099,6 +2142,8 @@
|
||||
"M822H" "魅族 Note8 國際版"
|
||||
"M923Q" "魅族 Note9 公開版"
|
||||
"M923H" "魅族 Note9 國際版"
|
||||
"M521Q" "魅族 Note 16"
|
||||
"M531Q" "魅族 Note 16 Pro"
|
||||
"M411L" "魅族 Note 21 國際版"
|
||||
"M412H" "魅族 Note 21 Pro 國際版"
|
||||
"M810H" "魅族 M8c 國際版"
|
||||
@@ -2173,7 +2218,7 @@
|
||||
"M811H" "魅族 M6T 國際版"
|
||||
"M2112" "魅藍 10"
|
||||
"M2111" "魅藍 10s"
|
||||
"M421Q" "魅藍 20 / 魅族 M20"
|
||||
"M421Q" "魅藍 200 / 魅藍 20C / 魅族 M20"
|
||||
"M416L" "魅族 MBLU 21"
|
||||
"S685Q" "魅藍 Max 公開版"
|
||||
"S685M" "魅藍 Max 移動版"
|
||||
@@ -2193,7 +2238,6 @@
|
||||
"M57AC" "魅藍 metal 電信版"
|
||||
"M710M" "魅藍 A5 移動定制版"
|
||||
"M710H" "魅族 M5c 國際版"
|
||||
"M481S" "Lync & Co Phone Pro"
|
||||
"M481R" "HongQi Wonder"
|
||||
"M8" "MEIZU M8"
|
||||
"M570Q" "MEIZU PRO 6 China"
|
||||
@@ -2248,6 +2292,12 @@
|
||||
"XT2451-4" "moto razr 50 Ultra"
|
||||
"XT2435-3" "moto g55"
|
||||
"XT2437-4" "moto g75"
|
||||
"XT2505-4" "moto edge 60"
|
||||
"XT2503-3" "moto edge 60s"
|
||||
"XT2507-5" "moto edge 60 Pro"
|
||||
"XT2553-2" "moto razr 60"
|
||||
"XT2557-1" "moto razr 60 Pro"
|
||||
"XT2551-3" "moto razr 60 Ultra"
|
||||
"TA-1000" "Nokia 6"
|
||||
"TA-1054" "Nokia 6 (第二代)"
|
||||
"TA-1041" "Nokia 7"
|
||||
@@ -2273,6 +2323,7 @@
|
||||
"A059" "Nothing Phone (3a)"
|
||||
"A059P" "Nothing Phone (3a) Plus"
|
||||
"A015" "CMF Phone 1"
|
||||
"A001" "CMF Phone 2 Pro"
|
||||
"NX501" "nubia Z5"
|
||||
"NX402" "nubia Z5 mini"
|
||||
"NX503J" "nubia Z5S"
|
||||
@@ -2336,6 +2387,7 @@
|
||||
"nubia 8150N" "nubia Neo 5G"
|
||||
"Z2352N" "nubia Neo 2 5G"
|
||||
"Z2461" "nubia Neo 3"
|
||||
"Z2464N" "nubia Neo 3 5G"
|
||||
"Z2465N" "nubia Neo 3 GT 5G"
|
||||
"Z2353" "nubia Music"
|
||||
"Z2460" "nubia Music 2"
|
||||
@@ -2353,6 +2405,7 @@
|
||||
"LPD-20W" "nubia Pad 3D"
|
||||
"NP02J" "nubia Pad 3D II"
|
||||
"K99J" "nubia Pad SE"
|
||||
"NT01" "nubia Pad Pro"
|
||||
"NX609J" "紅魔電競遊戲手機"
|
||||
"NX619J" "紅魔 Mars 電競手機"
|
||||
"NX629J" "紅魔 3"
|
||||
@@ -2372,173 +2425,182 @@
|
||||
"NX779J" "紅魔 10 Air"
|
||||
"NP01J" "紅魔電競平板 5G"
|
||||
"NP03J" "紅魔電競平板 Pro"
|
||||
"ONE A0001" "OnePlus One 全網通版 / 移動版 / 國際版"
|
||||
"ONE A1001" "OnePlus One 聯通版"
|
||||
"ONE A2001" "OnePlus 2"
|
||||
"ONE A2003" "OnePlus 2 國際版"
|
||||
"ONE A2005" "OnePlus 2 北美版"
|
||||
"ONE E1000" "OnePlus X 全網通版"
|
||||
"ONE E1001" "OnePlus X 移動版 / 聯通版"
|
||||
"ONE E1003" "OnePlus X 國際版"
|
||||
"ONE E1005" "OnePlus X 北美版"
|
||||
"ONEPLUS A3000" "OnePlus 3 國行版"
|
||||
"ONEPLUS A3003" "OnePlus 3 國際版"
|
||||
"ONEPLUS A3010" "OnePlus 3T 國行版"
|
||||
"ONEPLUS A3013" "OnePlus 3T 國際版"
|
||||
"ONEPLUS A5000" "OnePlus 5"
|
||||
"ONEPLUS A5010" "OnePlus 5T"
|
||||
"ONEPLUS A6000" "OnePlus 6 國行版"
|
||||
"ONEPLUS A6003" "OnePlus 6 國際版"
|
||||
"ONEPLUS A6010" "OnePlus 6T 國行版"
|
||||
"ONEPLUS A6013" "OnePlus 6T 國際版"
|
||||
"GM1900" "OnePlus 7 國行版"
|
||||
"GM1901" "OnePlus 7 印度版"
|
||||
"GM1903" "OnePlus 7 歐洲版"
|
||||
"GM1905" "OnePlus 7 北美版 / 國際版"
|
||||
"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 國行版"
|
||||
"HD1901" "OnePlus 7T 印度版"
|
||||
"HD1903" "OnePlus 7T 歐洲版"
|
||||
"HD1905" "OnePlus 7T 北美版 / 國際版"
|
||||
"HD1907" "OnePlus 7T T-Mobile 版"
|
||||
"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 國行版"
|
||||
"IN2011" "OnePlus 8 印度版"
|
||||
"IN2013" "OnePlus 8 歐洲版"
|
||||
"IN2015" "OnePlus 8 北美版 / 國際版"
|
||||
"IN2017" "OnePlus 8 T-Mobile 版"
|
||||
"IN2019" "OnePlus 8 Visible 版 / Verizon 版"
|
||||
"IN2020" "OnePlus 8 Pro 國行版"
|
||||
"IN2021" "OnePlus 8 Pro 印度版"
|
||||
"IN2023" "OnePlus 8 Pro 歐洲版"
|
||||
"IN2025" "OnePlus 8 Pro 北美版 / 國際版"
|
||||
"KB2000" "OnePlus 8T 國行版"
|
||||
"KB2001" "OnePlus 8T 印度版"
|
||||
"KB2003" "OnePlus 8T 歐洲版"
|
||||
"KB2005" "OnePlus 8T 北美版 / 國際版 / OnePlus 8T Concept"
|
||||
"KB2007" "OnePlus 8T+ T-Mobile 版"
|
||||
"LE2100" "OnePlus 9R 國行版"
|
||||
"LE2101" "OnePlus 9R 印度版"
|
||||
"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 國行版"
|
||||
"LE2121" "OnePlus 9 Pro 印度版"
|
||||
"LE2123" "OnePlus 9 Pro 歐洲版"
|
||||
"LE2125" "OnePlus 9 Pro 北美版 / 國際版"
|
||||
"LE2127" "OnePlus 9 Pro T-Mobile 版"
|
||||
"MT2110" "OnePlus 9RT 國行版"
|
||||
"MT2111" "OnePlus 9RT 印度版"
|
||||
"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 國行版"
|
||||
"CPH2423" "OnePlus 10R 印度版"
|
||||
"CPH2411" "OnePlus 10R 長壽版 印度版"
|
||||
"PGZ110" "OnePlus Ace 競速版 國行版"
|
||||
"PGP110" "OnePlus Ace Pro 國行版 / 原神限定版"
|
||||
"CPH2413" "OnePlus 10T 印度版"
|
||||
"CPH2415" "OnePlus 10T 歐洲版 / 國際版"
|
||||
"CPH2417" "OnePlus 10T 北美版"
|
||||
"CPH2419" "OnePlus 10T T-Mobile 版"
|
||||
"PHB110" "OnePlus 11 國行版"
|
||||
"CPH2447" "OnePlus 11 印度版"
|
||||
"CPH2449" "OnePlus 11 歐洲版 / 國際版 / OnePlus 11 Concept"
|
||||
"CPH2451" "OnePlus 11 北美版"
|
||||
"PHK110" "OnePlus Ace 2 國行版 / 原神定制禮盒"
|
||||
"CPH2487" "OnePlus 11R 印度版"
|
||||
"PHP110" "OnePlus Ace 2V 國行版"
|
||||
"CPH2491" "OnePlus Nord 3 印度版"
|
||||
"CPH2493" "OnePlus Nord 3 歐洲版"
|
||||
"PJA110" "OnePlus Ace 2 Pro 國行版 / 原神派蒙主題禮盒"
|
||||
"PJD110" "OnePlus 12 國行版"
|
||||
"CPH2573" "OnePlus 12 印度版"
|
||||
"CPH2581" "OnePlus 12 歐洲版 / 國際版"
|
||||
"CPH2583" "OnePlus 12 北美版"
|
||||
"PJE110" "OnePlus Ace 3 國行版 / 原神刻晴定制機"
|
||||
"CPH2585" "OnePlus 12R 印度版 / 原神刻晴定制機"
|
||||
"CPH2609" "OnePlus 12R 歐洲版 / 國際版 / 原神刻晴定制機"
|
||||
"CPH2611" "OnePlus 12R 北美版 / 原神刻晴定制機"
|
||||
"PJF110" "OnePlus Ace 3V 國行版"
|
||||
"PJX110" "OnePlus Ace 3 Pro 國行版"
|
||||
"PJZ110" "OnePlus 13 國行版"
|
||||
"CPH2649" "OnePlus 13 印度版"
|
||||
"CPH2653" "OnePlus 13 歐洲版 / 國際版"
|
||||
"CPH2655" "OnePlus 13 北美版"
|
||||
"PKG110" "OnePlus Ace 5 國行版"
|
||||
"CPH2645" "OnePlus 13R 歐洲版 / 國際版"
|
||||
"CPH2647" "OnePlus 13R 北美版"
|
||||
"CPH2691" "OnePlus 13R 印度版"
|
||||
"PKR110" "OnePlus Ace 5 Pro 國行版"
|
||||
"PKX110" "OnePlus 13T 國行版"
|
||||
"CPH2723" "OnePlus 13T 國際版"
|
||||
"AC2001" "OnePlus Nord 印度版"
|
||||
"AC2003" "OnePlus Nord 歐洲版 / 國際版"
|
||||
"DN2101" "OnePlus Nord 2 印度版"
|
||||
"DN2103" "OnePlus Nord 2 歐洲版"
|
||||
"CPH2399" "OnePlus Nord 2T 國際版"
|
||||
"CPH2401" "OnePlus Nord 2T 印度版"
|
||||
"CPH2661" "OnePlus Nord 4 印度版"
|
||||
"CPH2663" "OnePlus Nord 4 歐洲版 / 國際版"
|
||||
"EB2101" "OnePlus Nord CE 印度版"
|
||||
"EB2103" "OnePlus Nord CE 歐洲版 / 國際版"
|
||||
"IV2201" "OnePlus Nord CE 2 印度版"
|
||||
"CPH2381" "OnePlus Nord CE 2 Lite 印度版"
|
||||
"CPH2409" "OnePlus Nord CE 2 Lite 歐洲版 / 國際版"
|
||||
"CPH2569" "OnePlus Nord CE 3 印度版"
|
||||
"CPH2465" "OnePlus Nord CE 3 Lite 國際版"
|
||||
"CPH2467" "OnePlus Nord CE 3 Lite 印度版"
|
||||
"CPH2513" "OnePlus Nord N30 北美版"
|
||||
"CPH2515" "OnePlus Nord N30 T-Mobile 版"
|
||||
"CPH2613" "OnePlus Nord CE 4 印度版"
|
||||
"CPH2619" "OnePlus Nord CE 4 Lite 印度版"
|
||||
"CPH2621" "OnePlus Nord CE 4 Lite 歐洲版 / 國際版"
|
||||
"BE2025" "OnePlus Nord N10 Metro 版"
|
||||
"BE2026" "OnePlus Nord N10 北美版"
|
||||
"BE2029" "OnePlus Nord N10 歐洲版 / 國際版"
|
||||
"BE2028" "OnePlus Nord N10 T-Mobile 版"
|
||||
"BE2011" "OnePlus Nord N100 北美版"
|
||||
"BE2012" "OnePlus Nord N100 T-Mobile 版"
|
||||
"BE2013" "OnePlus Nord N100 國際版"
|
||||
"BE2015" "OnePlus Nord N100 Metro 版"
|
||||
"GN2200" "OnePlus Nord N20"
|
||||
"CPH2459" "OnePlus Nord N20"
|
||||
"CPH2469" "OnePlus Nord N20 SE"
|
||||
"CPH2605" "OnePlus Nord N30 SE 歐洲版"
|
||||
"DE2117" "OnePlus Nord N200 北美版"
|
||||
"DE2118" "OnePlus Nord N200 T-Mobile 版"
|
||||
"CPH2389" "OnePlus Nord N300"
|
||||
"CPH2551" "OnePlus Open"
|
||||
"OPD2203" "OnePlus Pad (2023)"
|
||||
"OPD2304" "OnePlus Pad Go LTE"
|
||||
"OPD2305" "OnePlus Pad Go Wi-Fi"
|
||||
"OPD2407" "OnePlus Pad (2024)"
|
||||
"OPD2404" "OnePlus Pad Pro"
|
||||
"OPD2403" "OnePlus Pad 2"
|
||||
"W101IN" "OnePlus Band 印度版"
|
||||
"OPBBE221" "OnePlus Nord Watch "
|
||||
"W301CN" "OnePlus Watch 國行版 / Cyberpunk 2077 限定版"
|
||||
"W501CN" "OnePlus Watch 鈷合金限定版 (國行)"
|
||||
"W301GB" "OnePlus Watch 國際版 / 鈷合金限定版 (國際) / 哈利波特限定版"
|
||||
"OPWW234" "OnePlus Watch 2 (國行)"
|
||||
"OPWWE234" "OnePlus Watch 2R"
|
||||
"OPWWE231" "OnePlus Watch 2 (國際)"
|
||||
"OPWW251" "OnePlus Watch 3 (國行)~"
|
||||
"OPWWE251" "OnePlus Watch 3 (國際)"
|
||||
"NP05J" "紅魔電競平板 3 Pro"
|
||||
"ONE A0001" "一加手機 全網通版 / 移動版 / 國際版"
|
||||
"ONE A1001" "一加手機 聯通版"
|
||||
"ONE A2001" "一加手機 2"
|
||||
"ONE A2003" "一加手機 2 國際版"
|
||||
"ONE A2005" "一加手機 2 北美版"
|
||||
"ONE E1000" "一加手機 X 全網通版"
|
||||
"ONE E1001" "一加手機 X 移動版 / 聯通版"
|
||||
"ONE E1003" "一加手機 X 國際版"
|
||||
"ONE E1005" "一加手機 X 北美版"
|
||||
"ONEPLUS A3000" "一加手機 3 國行版"
|
||||
"ONEPLUS A3003" "一加手機 3 國際版"
|
||||
"ONEPLUS A3010" "一加手機 3T 國行版"
|
||||
"ONEPLUS A3013" "一加手機 3T 國際版"
|
||||
"ONEPLUS A5000" "一加 5"
|
||||
"ONEPLUS A5010" "一加 5T"
|
||||
"ONEPLUS A6000" "一加 6 國行版"
|
||||
"ONEPLUS A6003" "一加 6 國際版"
|
||||
"ONEPLUS A6010" "一加 6T 國行版"
|
||||
"ONEPLUS A6013" "一加 6T 國際版"
|
||||
"GM1900" "一加 7 國行版"
|
||||
"GM1901" "一加 7 印度版"
|
||||
"GM1903" "一加 7 歐洲版"
|
||||
"GM1905" "一加 7 北美版 / 國際版"
|
||||
"GM1910" "一加 7 Pro 國行版"
|
||||
"GM1911" "一加 7 Pro 印度版"
|
||||
"GM1913" "一加 7 Pro 歐洲版"
|
||||
"GM1915" "一加 7 Pro 北美版 / 國際版"
|
||||
"GM1917" "一加 7 Pro T-Mobile 版"
|
||||
"GM1920" "一加 7 Pro 5G 歐洲版"
|
||||
"GM1925" "一加 7 Pro 5G Sprint 版"
|
||||
"HD1900" "一加 7T 國行版"
|
||||
"HD1901" "一加 7T 印度版"
|
||||
"HD1903" "一加 7T 歐洲版"
|
||||
"HD1905" "一加 7T 北美版 / 國際版"
|
||||
"HD1907" "一加 7T T-Mobile 版"
|
||||
"HD1910" "一加 7T Pro 國行版"
|
||||
"HD1911" "一加 7T Pro 印度版"
|
||||
"HD1913" "一加 7T Pro 歐洲版 / 國際版"
|
||||
"HD1925" "一加 7T Pro 5G T-Mobile 版 / 一加 Concept One"
|
||||
"IN2010" "一加 8 國行版"
|
||||
"IN2011" "一加 8 印度版"
|
||||
"IN2013" "一加 8 歐洲版"
|
||||
"IN2015" "一加 8 北美版 / 國際版"
|
||||
"IN2017" "一加 8 T-Mobile 版"
|
||||
"IN2019" "一加 8 Visible 版 / Verizon 版"
|
||||
"IN2020" "一加 8 Pro 國行版"
|
||||
"IN2021" "一加 8 Pro 印度版"
|
||||
"IN2023" "一加 8 Pro 歐洲版"
|
||||
"IN2025" "一加 8 Pro 北美版 / 國際版"
|
||||
"KB2000" "一加 8T 國行版"
|
||||
"KB2001" "一加 8T 印度版"
|
||||
"KB2003" "一加 8T 歐洲版"
|
||||
"KB2005" "一加 8T 北美版 / 國際版 / 一加 8T Concept"
|
||||
"KB2007" "一加 8T+ T-Mobile 版"
|
||||
"LE2100" "一加 9R 國行版"
|
||||
"LE2101" "一加 9R 印度版"
|
||||
"LE2110" "一加 9 國行版"
|
||||
"LE2111" "一加 9 印度版"
|
||||
"LE2113" "一加 9 歐洲版"
|
||||
"LE2115" "一加 9 北美版 / 國際版"
|
||||
"LE2117" "一加 9 T-Mobile 版"
|
||||
"LE2119" "一加 9 Verzion 版"
|
||||
"LE2120" "一加 9 Pro 國行版"
|
||||
"LE2121" "一加 9 Pro 印度版"
|
||||
"LE2123" "一加 9 Pro 歐洲版"
|
||||
"LE2125" "一加 9 Pro 北美版 / 國際版"
|
||||
"LE2127" "一加 9 Pro T-Mobile 版"
|
||||
"MT2110" "一加 9RT 國行版"
|
||||
"MT2111" "一加 9RT 印度版"
|
||||
"NE2210" "一加 10 Pro 國行版"
|
||||
"NE2211" "一加 10 Pro 印度版"
|
||||
"NE2213" "一加 10 Pro 歐洲版 / 國際版"
|
||||
"NE2215" "一加 10 Pro 北美版"
|
||||
"NE2217" "一加 10 Pro T-Mobile 版"
|
||||
"PGKM10" "一加 Ace 國行版"
|
||||
"CPH2423" "一加 10R 印度版"
|
||||
"CPH2411" "一加 10R 長壽版 印度版"
|
||||
"PGZ110" "一加 Ace 競速版 國行版"
|
||||
"PGP110" "一加 Ace Pro 國行版 / 原神限定版"
|
||||
"CPH2413" "一加 10T 印度版"
|
||||
"CPH2415" "一加 10T 歐洲版 / 國際版"
|
||||
"CPH2417" "一加 10T 北美版"
|
||||
"CPH2419" "一加 10T T-Mobile 版"
|
||||
"PHB110" "一加 11 國行版"
|
||||
"CPH2447" "一加 11 印度版"
|
||||
"CPH2449" "一加 11 歐洲版 / 國際版 / 一加 11 Concept"
|
||||
"CPH2451" "一加 11 北美版"
|
||||
"PHK110" "一加 Ace 2 國行版 / 原神定制禮盒"
|
||||
"CPH2487" "一加 11R 印度版"
|
||||
"PHP110" "一加 Ace 2V 國行版"
|
||||
"CPH2491" "一加 Nord 3 印度版"
|
||||
"CPH2493" "一加 Nord 3 歐洲版"
|
||||
"PJA110" "一加 Ace 2 Pro 國行版 / 原神派蒙主題禮盒"
|
||||
"PJD110" "一加 12 國行版"
|
||||
"CPH2573" "一加 12 印度版"
|
||||
"CPH2581" "一加 12 歐洲版 / 國際版"
|
||||
"CPH2583" "一加 12 北美版"
|
||||
"PJE110" "一加 Ace 3 國行版 / 原神刻晴定制機"
|
||||
"CPH2585" "一加 12R 印度版 / 原神刻晴定制機"
|
||||
"CPH2609" "一加 12R 歐洲版 / 國際版 / 原神刻晴定制機"
|
||||
"CPH2611" "一加 12R 北美版 / 原神刻晴定制機"
|
||||
"PJF110" "一加 Ace 3V 國行版"
|
||||
"PJX110" "一加 Ace 3 Pro 國行版"
|
||||
"PJZ110" "一加 13 國行版"
|
||||
"CPH2649" "一加 13 印度版"
|
||||
"CPH2653" "一加 13 歐洲版 / 國際版"
|
||||
"CPH2655" "一加 13 北美版"
|
||||
"PKG110" "一加 Ace 5 國行版"
|
||||
"CPH2645" "一加 13R 歐洲版 / 國際版"
|
||||
"CPH2647" "一加 13R 北美版"
|
||||
"CPH2691" "一加 13R 印度版"
|
||||
"PKR110" "一加 Ace 5 Pro 國行版"
|
||||
"PKX110" "一加 13T 國行版"
|
||||
"CPH2723" "一加 13s 印度版"
|
||||
"PLC110" "一加 Ace 5 至尊版 國行版"
|
||||
"PLF110" "一加 Ace 5 競速版 國行版"
|
||||
"AC2001" "一加 Nord 印度版"
|
||||
"AC2003" "一加 Nord 歐洲版 / 國際版"
|
||||
"DN2101" "一加 Nord 2 印度版"
|
||||
"DN2103" "一加 Nord 2 歐洲版"
|
||||
"CPH2399" "一加 Nord 2T 國際版"
|
||||
"CPH2401" "一加 Nord 2T 印度版"
|
||||
"CPH2661" "一加 Nord 4 印度版"
|
||||
"CPH2663" "一加 Nord 4 歐洲版 / 國際版"
|
||||
"CPH2707" "一加 Nord 5 印度版"
|
||||
"CPH2709" "一加 Nord 5 國際版"
|
||||
"EB2101" "一加 Nord CE 印度版"
|
||||
"EB2103" "一加 Nord CE 歐洲版 / 國際版"
|
||||
"IV2201" "一加 Nord CE 2 印度版"
|
||||
"CPH2381" "一加 Nord CE 2 Lite 印度版"
|
||||
"CPH2409" "一加 Nord CE 2 Lite 歐洲版 / 國際版"
|
||||
"CPH2569" "一加 Nord CE 3 印度版"
|
||||
"CPH2465" "一加 Nord CE 3 Lite 國際版"
|
||||
"CPH2467" "一加 Nord CE 3 Lite 印度版"
|
||||
"CPH2513" "一加 Nord N30 北美版"
|
||||
"CPH2515" "一加 Nord N30 T-Mobile 版"
|
||||
"CPH2613" "一加 Nord CE 4 印度版"
|
||||
"CPH2619" "一加 Nord CE 4 Lite 印度版"
|
||||
"CPH2621" "一加 Nord CE 4 Lite 歐洲版 / 國際版"
|
||||
"CPH2717" "一加 Nord CE 5 印度版"
|
||||
"CPH2719" "一加 Nord CE 5 國際版"
|
||||
"BE2025" "一加 Nord N10 Metro 版"
|
||||
"BE2026" "一加 Nord N10 北美版"
|
||||
"BE2029" "一加 Nord N10 歐洲版 / 國際版"
|
||||
"BE2028" "一加 Nord N10 T-Mobile 版"
|
||||
"BE2011" "一加 Nord N100 北美版"
|
||||
"BE2012" "一加 Nord N100 T-Mobile 版"
|
||||
"BE2013" "一加 Nord N100 國際版"
|
||||
"BE2015" "一加 Nord N100 Metro 版"
|
||||
"GN2200" "一加 Nord N20"
|
||||
"CPH2459" "一加 Nord N20"
|
||||
"CPH2469" "一加 Nord N20 SE"
|
||||
"CPH2605" "一加 Nord N30 SE 歐洲版"
|
||||
"DE2117" "一加 Nord N200 北美版"
|
||||
"DE2118" "一加 Nord N200 T-Mobile 版"
|
||||
"CPH2389" "一加 Nord N300"
|
||||
"CPH2551" "一加 Open"
|
||||
"OPD2203" "一加平板 (2023) 國際版"
|
||||
"OPD2304" "一加平板 Go LTE"
|
||||
"OPD2305" "一加平板 Go Wi-Fi"
|
||||
"OPD2407" "一加平板 (2024) 國行版"
|
||||
"OPD2404" "一加平板 Pro 國行版"
|
||||
"OPD2403" "一加平板 2 國際版"
|
||||
"OPD2413" "一加平板 2 Pro 國行版"
|
||||
"OPD2415" "一加平板 3 國際版"
|
||||
"W101IN" "一加 Band 印度版"
|
||||
"OPBBE221" "一加 Nord Watch"
|
||||
"W301CN" "一加手表 國行版 / Cyberpunk 2077 限定版"
|
||||
"W501CN" "一加手表 鈷合金限定版 (國行)"
|
||||
"W301GB" "一加手表 國際版 / 鈷合金限定版 (國際) / 哈利波特限定版"
|
||||
"OPWW234" "一加手表 2 國行版"
|
||||
"OPWWE234" "一加手表 2R 國際版"
|
||||
"OPWWE231" "一加手表 2 國際版"
|
||||
"OPWW251" "一加手表 3 國行版~"
|
||||
"OPWWE251" "一加手表 3 國際版"
|
||||
"E6683" "Xperia Z5 dual"
|
||||
"E6883" "Xperia Z5 Premium"
|
||||
"F8332" "Xperia XZ"
|
||||
@@ -2606,6 +2668,7 @@
|
||||
"RMX3852" "真我 GT Neo6"
|
||||
"RMX3850" "真我 GT Neo6 SE"
|
||||
"RMX5060" "真我 Neo7"
|
||||
"RMX5062" "真我 Neo7 Turbo"
|
||||
"RMX5080" "真我 Neo7 SE"
|
||||
"RMX5071" "真我 Neo7x"
|
||||
"RMX1971" "真我 Q"
|
||||
@@ -2709,6 +2772,7 @@
|
||||
"RMX3785" "realme 11x 5G"
|
||||
"RMX3771" "realme 11 Pro 5G"
|
||||
"RMX3741" "realme 11 Pro+ 5G"
|
||||
"RMX3871" "realme 12 4G"
|
||||
"RMX3999" "realme 12 5G"
|
||||
"RMX3998" "realme 12x 5G"
|
||||
"RMX3867" "realme 12+ 5G"
|
||||
@@ -2718,10 +2782,15 @@
|
||||
"RMX5000" "realme 13+ 5G"
|
||||
"RMX3990" "realme 13 Pro 5G / realme 14 Pro Lite 5G"
|
||||
"RMX3921" "realme 13 Pro+ 5G"
|
||||
"RMX5070" "realme 14 5G"
|
||||
"RMX3940" "realme 14x 5G"
|
||||
"RMX5056" "realme 14 Pro 5G"
|
||||
"RMX5051" "realme 14 Pro+ 5G"
|
||||
"RMX5070" "realme 14 5G Global"
|
||||
"RMX3940" "realme 14x 5G India"
|
||||
"RMX3943" "realme 14x 5G Global"
|
||||
"RMX5074" "realme 14T 5G Global"
|
||||
"RMX5078" "realme 14T 5G India"
|
||||
"RMX5056" "realme 14 Pro 5G India"
|
||||
"RMX5057" "realme 14 Pro 5G Global"
|
||||
"RMX5051" "realme 14 Pro+ 5G India"
|
||||
"RMX5054" "realme 14 Pro+ 5G Global"
|
||||
"RMX1921" "realme XT Global"
|
||||
"RMX1922" "realme XT India"
|
||||
"RMX1992" "realme X2 India"
|
||||
@@ -2742,6 +2811,8 @@
|
||||
"RMX3709" "realme GT 3 240W"
|
||||
"RMX3851" "realme GT 6"
|
||||
"RMX3853" "realme GT 6T"
|
||||
"RMX5061" "realme GT 7"
|
||||
"RMX5085" "realme GT 7T"
|
||||
"RMX5011" "realme GT 7 Pro"
|
||||
"RMX1946" "realme C2"
|
||||
"RMX2022" "realme C3 Global"
|
||||
@@ -2769,6 +2840,7 @@
|
||||
"RMX3760" "realme C53 Global"
|
||||
"RMX3762" "realme C53 India"
|
||||
"RMX3710" "realme C55"
|
||||
"RMX3834" "realme C60"
|
||||
"RMX3930" "realme C61 Global"
|
||||
"RMX3933" "realme C61 India"
|
||||
"RMX3939" "realme C63"
|
||||
@@ -2777,17 +2849,21 @@
|
||||
"RMX3997" "realme C65 5G"
|
||||
"RMX3890" "realme C67"
|
||||
"RMX3782" "realme C67 5G"
|
||||
"RMX5303" "realme C71"
|
||||
"RMX3945" "realme C73 5G"
|
||||
"RMX3941" "realme C75"
|
||||
"RMX3834" "realme Note 50"
|
||||
"RMX3963" "realme C75 5G Global"
|
||||
"RMX5020" "realme C75x"
|
||||
"RMX3938" "realme Note 60x"
|
||||
"RMX1833" "realme U1"
|
||||
"RMX3870" "realme P1 5G"
|
||||
"RMX3844" "realme P1 Pro 5G"
|
||||
"RMX5004" "realme P1 Speed 5G"
|
||||
"RMX3987" "realme P2 Pro 5G"
|
||||
"RMX5079" "realme P3 5G"
|
||||
"RMX3944" "realme P3x 5G"
|
||||
"RMX5032" "realme P3 Pro 5G"
|
||||
"RMX5030" "realme P3 Ultra 5G"
|
||||
"RMX5031" "realme P3 Ultra 5G"
|
||||
"RMX2020" "realme Narzo 10A India"
|
||||
"RMX2191" "realme Narzo 20 Global"
|
||||
"RMX2161" "realme Narzo 20 Pro India"
|
||||
@@ -2881,6 +2957,7 @@
|
||||
"V2458A" "vivo X200s"
|
||||
"V2454A" "vivo X200 Ultra"
|
||||
"V2454DA" "vivo X200 Ultra 衛星通信版"
|
||||
"V2436A" "vivo X Fold5"
|
||||
"V1831A" "vivo S1 全網通版"
|
||||
"V1831T" "vivo S1 移動全網通版"
|
||||
"V1832A" "vivo S1 Pro 全網通版"
|
||||
@@ -2915,6 +2992,8 @@
|
||||
"V2362A" "vivo S19 Pro"
|
||||
"V2429A" "vivo S20"
|
||||
"V2430A" "vivo S20 Pro"
|
||||
"V2464A" "vivo S30"
|
||||
"V2465A" "vivo S30 Pro mini"
|
||||
"V1901A" "vivo Y3 全網通版"
|
||||
"V1901T" "vivo Y3 移動全網通版"
|
||||
"V1930A" "vivo Y3 標準版 全網通版"
|
||||
@@ -2946,6 +3025,7 @@
|
||||
"V2357A" "vivo Y36c 5G / vivo Y37 5G"
|
||||
"V2357EA" "vivo Y37m 5G"
|
||||
"V2354A" "vivo Y37 Pro 5G"
|
||||
"V2442A" "vivo Y37c"
|
||||
"V1965A" "vivo Y50"
|
||||
"V2023EA" "vivo Y50t"
|
||||
"V2002A" "vivo Y51s 5G"
|
||||
@@ -2956,7 +3036,7 @@
|
||||
"V2045A" "vivo Y54s 5G"
|
||||
"V2164A" "vivo Y55s 5G"
|
||||
"V1731CA" "vivo Y71s"
|
||||
"V2102A" "vivo Y70t 5G"
|
||||
"V2102A" "vivo Y71t 5G"
|
||||
"V2164PA" "vivo Y73t 5G"
|
||||
"V2009A" "vivo Y74s 5G"
|
||||
"V2069BA" "vivo Y75s 5G"
|
||||
@@ -2981,11 +3061,11 @@
|
||||
"V2343A" "vivo Y200 5G"
|
||||
"V2361GA" "vivo Y200 GT 5G / vivo Y200 Pro 企業定制版"
|
||||
"V2353DA" "vivo Y200t 5G"
|
||||
"V2435A" "vivo Y300 5G"
|
||||
"V2435A" "vivo Y300 5G / vivo Y300c 5G"
|
||||
"V2410A" "vivo Y300 Pro 5G"
|
||||
"V2456A" "vivo Y300 Pro+ 5G"
|
||||
"V2444A" "vivo Y300i 5G"
|
||||
"V2445EA" "vivo Y300t 5G"
|
||||
"V2445EA" "vivo Y300t 5G / vivo Y300+ 5G"
|
||||
"V2452GA" "vivo Y300 GT 5G"
|
||||
"V2115A" "vivo T1"
|
||||
"V2188A" "vivo T2x"
|
||||
@@ -3052,6 +3132,7 @@
|
||||
"V2403A" "iQOO Neo9S Pro+"
|
||||
"V2425A" "iQOO Neo10"
|
||||
"V2426A" "iQOO Neo10 Pro"
|
||||
"V2463A" "iQOO Neo10 Pro+"
|
||||
"V1986A" "iQOO Z1"
|
||||
"V2012A" "iQOO Z1x"
|
||||
"V2073A" "iQOO Z3"
|
||||
@@ -3069,7 +3150,6 @@
|
||||
"V2352GA" "iQOO Z9 Turbo 長續航版"
|
||||
"V2417A" "iQOO Z9 Turbo+"
|
||||
"V2353A" "iQOO Z9x"
|
||||
"V2436A" "iQOO Z10"
|
||||
"V2452A" "iQOO Z10 Turbo"
|
||||
"V2453A" "iQOO Z10 Turbo Pro"
|
||||
"V2445A" "iQOO Z10x"
|
||||
@@ -3086,12 +3166,32 @@
|
||||
"PA2353" "vivo Pad Air"
|
||||
"PA2455" "vivo Pad3"
|
||||
"PA2473" "vivo Pad3 Pro"
|
||||
"PA2553" "vivo Pad5"
|
||||
"PA2573" "vivo Pad5 Pro"
|
||||
"PA2535" "vivo Pad5e"
|
||||
"PA2511" "vivo Pad SE"
|
||||
"iPA2375" "iQOO Pad"
|
||||
"iPA2451" "iQOO Pad Air"
|
||||
"iPA2453" "iQOO Pad2"
|
||||
"iPA2475" "iQOO Pad2 Pro"
|
||||
"iPA2556" "iQOO Pad5"
|
||||
"iPA2575" "iQOO Pad5 Pro"
|
||||
"iPA2537" "iQOO Pad5e"
|
||||
"WA2052" "vivo WATCH 42mm"
|
||||
"WA2056" "vivo WATCH 46mm"
|
||||
"WA2156A" "vivo WATCH 2 eSIM 版"
|
||||
"WA2356A" "vivo WATCH 3 eSIM 版 / ECG 版"
|
||||
"WA2356C" "vivo WATCH 3 藍牙版"
|
||||
"WA2456A" "vivo WATCH GT eSIM 版"
|
||||
"WA2456C" "vivo WATCH GT 藍牙版"
|
||||
"WA2556A" "vivo WATCH 5 藍牙版"
|
||||
"WA2556B" "vivo WATCH 5 eSIM 版"
|
||||
"iWA2356A" "iQOO WATCH eSIM 版"
|
||||
"iWA2356C" "iQOO WATCH 藍牙版"
|
||||
"iWA2456A" "iQOO WATCH GT eSIM 版"
|
||||
"iWA2456C" "iQOO WATCH GT 藍牙版"
|
||||
"iWA2556A" "iQOO WATCH 5 藍牙版"
|
||||
"iWA2556B" "iQOO WATCH 5 eSIM 版"
|
||||
"vivo 2005" "vivo X50"
|
||||
"V2006" "vivo X50 Pro"
|
||||
"V1930" "vivo X50e 5G"
|
||||
@@ -3138,7 +3238,7 @@
|
||||
"V2303" "vivo V29e 5G India"
|
||||
"V2244" "vivo V29 Lite 5G"
|
||||
"V2318" "vivo V30"
|
||||
"V2319" "vivo Y30 Pro"
|
||||
"V2319" "vivo V30 Pro"
|
||||
"V2340" "vivo V30e"
|
||||
"V2342" "vivo V30 Lite"
|
||||
"V2314" "vivo V30 Lite 5G Global"
|
||||
@@ -3173,6 +3273,7 @@
|
||||
"V2426" "vivo T3 Ultra 5G"
|
||||
"V2502" "vivo T4 5G"
|
||||
"V2437" "vivo T4x 5G"
|
||||
"V2509" "vivo T4 Lite 5G"
|
||||
"vivo 2015_21" "vivo Y1s"
|
||||
"V2044" "vivo Y3s"
|
||||
"vivo 1902" "vivo Y5"
|
||||
@@ -3206,6 +3307,7 @@
|
||||
"V2423" "vivo Y19s"
|
||||
"V2454" "Jovi Y19s"
|
||||
"V2519" "vivo Y19s Pro"
|
||||
"V2526" "vivo Y19s GT 5G"
|
||||
"V2431" "vivo Y19e"
|
||||
"V2027" "vivo Y20"
|
||||
"V2037" "vivo Y20G"
|
||||
@@ -3235,6 +3337,7 @@
|
||||
"V2445" "Jovi Y29"
|
||||
"V2420" "vivo Y29 5G"
|
||||
"V2446" "vivo Y29s 5G"
|
||||
"V2527" "vivo Y29t 5G"
|
||||
"V2160" "vivo Y30 5G"
|
||||
"V2036_21" "vivo Y31"
|
||||
"V2057" "vivo Y33"
|
||||
@@ -3287,7 +3390,8 @@
|
||||
"I2214" "iQOO Neo7"
|
||||
"I2217" "iQOO Neo7 Pro"
|
||||
"I2304" "iQOO Neo9 Pro"
|
||||
"I2221" "iQOO Neo10R"
|
||||
"I2405" "iQOO Neo 10"
|
||||
"I2221" "iQOO Neo 10R"
|
||||
"I2011" "iQOO Z3 5G"
|
||||
"I2018" "iQOO Z5"
|
||||
"I2127" "iQOO Z6 5G"
|
||||
@@ -3306,6 +3410,7 @@
|
||||
"I2305" "iQOO Z9s Pro 5G"
|
||||
"I2407" "iQOO Z10 5G"
|
||||
"I2404" "iQOO Z10x 5G"
|
||||
"I2409" "iQOO Z10 Lite 5G"
|
||||
"PAFM00" "OPPO Find X 標準版 全網通版"
|
||||
"PAFT00" "OPPO Find X 標準版 移動版"
|
||||
"PAHM00" "OPPO Find X 超級閃充版/蘭博基尼版 全網通版"
|
||||
@@ -3387,6 +3492,8 @@
|
||||
"PJW110" "OPPO Reno12 Pro"
|
||||
"PKM110" "OPPO Reno13"
|
||||
"PKK110" "OPPO Reno13 Pro"
|
||||
"PLA110" "OPPO Reno14"
|
||||
"PKZ110" "OPPO Reno14 Pro"
|
||||
"PCLM10" "OPPO Reno Ace"
|
||||
"PDHM00" "OPPO Ace2"
|
||||
"PACM00" "OPPO R15 全網通版"
|
||||
@@ -3461,6 +3568,7 @@
|
||||
"PJY110" "OPPO A3 Pro"
|
||||
"PKQ110" "OPPO A5 5G (2025)"
|
||||
"PKV110" "OPPO A5 活力版"
|
||||
"PKW110" "OPPO A5x"
|
||||
"PKP110" "OPPO A5 Pro"
|
||||
"PBCM30" "OPPO K1"
|
||||
"PCGM00" "OPPO K3 全網通版"
|
||||
@@ -3481,6 +3589,7 @@
|
||||
"PKS110" "OPPO K12 Plus"
|
||||
"PJT110" "OPPO K12x"
|
||||
"PLD110" "OPPO K12s"
|
||||
"PLM110" "OPPO K13"
|
||||
"OPD2101" "OPPO Pad"
|
||||
"OPD2102" "OPPO Pad Air"
|
||||
"OPD2201" "OPPO Pad 2"
|
||||
@@ -3488,11 +3597,13 @@
|
||||
"OPD2405" "OPPO Pad 3"
|
||||
"OPD2401" "OPPO Pad 3 Pro"
|
||||
"OPD2409" "OPPO Pad 4 Pro"
|
||||
"OB19B1" "OPPO Band 標準版 / 名偵探柯南限定版"
|
||||
"OB19B3" "OPPO Band NFC 版"
|
||||
"OB19O0" "OPPO Band 時尚版"
|
||||
"OPD2417" "OPPO Pad SE"
|
||||
"OB19O1" "OPPO Band 運動版"
|
||||
"OB19O3" "OPPO Band 運動版 (國際版)"
|
||||
"OB19O7" "OPPO Band 活力版"
|
||||
"OB19O0" "OPPO Band 時尚版 (NFC 版)"
|
||||
"OB19O2" "OPPO Band EVA 限定版"
|
||||
"OB19O8" "OPPO Band 名偵探柯南限定版"
|
||||
"OBB211" "OPPO Band 2 標準版"
|
||||
"OBB213" "OPPO Band 2 NFC 版"
|
||||
"OR19R1" "OPPO Watch RX / 英雄聯盟限定版"
|
||||
@@ -3510,8 +3621,9 @@
|
||||
"OWW211" "OPPO Watch 3 Pro"
|
||||
"OWW221" "OPPO Watch 4 Pro"
|
||||
"OWW231" "OPPO Watch X"
|
||||
"OWW251" "OPPO Watch X2"
|
||||
"OWW235" "OPPO Watch Sport"
|
||||
"OWW242" "OPPO Watch X2 Mini"
|
||||
"OWW251" "OPPO Watch X2"
|
||||
"CPH1875" "OPPO Find X"
|
||||
"CPH2023" "OPPO Find X2"
|
||||
"CPH2025" "OPPO Find X2 Pro"
|
||||
@@ -3589,7 +3701,10 @@
|
||||
"CPH2689" "OPPO Reno13 5G"
|
||||
"CPH2697" "OPPO Reno13 Pro 5G"
|
||||
"CPH2701" "OPPO Reno13 F"
|
||||
"CPH2699" "OPPO Reno13 F 5G"
|
||||
"CPH2699" "OPPO Reno13 F 5G / OPPO Reno13 A"
|
||||
"CPH2737" "OPPO Reno14"
|
||||
"CPH2739" "OPPO Reno14 Pro"
|
||||
"CPH2743" "OPPO Reno14 F 5G"
|
||||
"CPH1821" "OPPO F7"
|
||||
"CPH1859" "OPPO F7 Youth"
|
||||
"CPH1881" "OPPO F9"
|
||||
@@ -3625,6 +3740,9 @@
|
||||
"CPH1851" "OPPO AX5"
|
||||
"CPH1920" "OPPO AX5s"
|
||||
"CPH1943" "OPPO A5 2020"
|
||||
"CPH2751" "OPPO A5 5G"
|
||||
"A502OP" "OPPO A5 5G (SoftBank)"
|
||||
"CPH2727" "OPPO A5 (2025) / OPPO A5m"
|
||||
"CPH2773" "OPPO A5i"
|
||||
"CPH2711" "OPPO A5 Pro"
|
||||
"CPH2695" "OPPO A5 Pro 5G"
|
||||
@@ -3684,12 +3802,16 @@
|
||||
"CPH1955" "OPPO K3"
|
||||
"CPH2373" "OPPO K10"
|
||||
"CPH2667" "OPPO K12x 5G"
|
||||
"CPH2729" "OPPO K13 5G"
|
||||
"CPH2753" "OPPO K13x 5G"
|
||||
"OPD2102A" "OPPO Pad Air"
|
||||
"OPD2202" "OPPO Pad 2"
|
||||
"OPD2302" "OPPO Pad Neo Wi-Fi"
|
||||
"OPD2303" "OPPO Pad Neo LTE"
|
||||
"OPD2406" "OPPO Pad 3"
|
||||
"OPD2402" "OPPO Pad 3 Pro"
|
||||
"OPD2419" "OPPO Pad SE Wi-Fi"
|
||||
"OPD2420" "OPPO Pad SE LTE"
|
||||
"OBBE215" "OPPO Band 2 Japan"
|
||||
"OWWE201" "OPPO Watch Free"
|
||||
"OW19W6" "OPPO Watch 41mm"
|
||||
|
||||
Binary file not shown.
452
tools/tools.sh
452
tools/tools.sh
@@ -59,7 +59,7 @@ user="$user"
|
||||
#此外設置0時將同時忽略appList.txt的!與任何黑名單設置(包括黑名單列表)
|
||||
Backup_Mode="${Backup_Mode:-1}"
|
||||
|
||||
#執行生成應用列表.sh時輸出用於recovery救援的卡刷包?
|
||||
#執行start.sh時輸出用於recovery救援的卡刷包?
|
||||
#1輸出 0不輸出
|
||||
recovery_flash="${recovery_flash:-0}"
|
||||
|
||||
@@ -76,9 +76,6 @@ backup_media="${backup_media:-0}"
|
||||
#存在進程忽略備份(1忽略0備份)
|
||||
Background_apps_ignore="${Background_apps_ignore:-0}"
|
||||
|
||||
#假設你遇到列表輸出異常問題請將此設為1
|
||||
debug_list="${debug_list:-0}"
|
||||
|
||||
#添加自定義備份路徑 例:Download DCIM等文件夾 請使用絕對路徑,請勿刪除\"\"
|
||||
Custom_path=\""${Custom_path:-
|
||||
/storage/emulated/0/Pictures/
|
||||
@@ -202,8 +199,6 @@ if [[ ! -d $tools_path ]]; then
|
||||
[[ ! -d $tools_path ]] && echo "$tools_path二進制目錄遺失" && EXIT="true"
|
||||
fi
|
||||
if [[ ! -f $conf_path ]]; then
|
||||
case $operate in
|
||||
backup_media|backup|Getlist|Restore|Restore2|check_file|convert|Restore3|dumpname)
|
||||
if [[ $conf_path != *restore_settings.conf && $conf_path = *backup_settings.conf ]]; then
|
||||
update_backup_settings_conf>"$conf_path"
|
||||
echo "因腳本找不到\n$conf_path\n故重新生成默認列表\n請重新配置後重新執行腳本" && exit 0
|
||||
@@ -214,23 +209,19 @@ if [[ ! -f $conf_path ]]; then
|
||||
else
|
||||
echo "$conf_path配置遺失" && exit 1
|
||||
fi
|
||||
fi ;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
[[ ! -f $conf_path ]] && echo "$conf_path遺失" && exit 2
|
||||
. "$conf_path" &>/dev/null
|
||||
case $operate in
|
||||
backup_media|backup|Getlist|Restore|Restore2|check_file|convert|Restore3|dumpname)
|
||||
if [[ $conf_path != *restore_settings.conf && $conf_path = *backup_settings.conf ]]; then
|
||||
if [[ $conf_path != *restore_settings.conf && $conf_path = *backup_settings.conf ]]; then
|
||||
update_backup_settings_conf>"$conf_path"
|
||||
else
|
||||
else
|
||||
if [[ $conf_path = *restore_settings.conf && $conf_path != *backup_settings.conf ]]; then
|
||||
update_Restore_settings_conf>"$conf_path"
|
||||
else
|
||||
echo "$conf_path配置遺失" && exit 1
|
||||
fi
|
||||
fi ;;
|
||||
esac
|
||||
fi
|
||||
LANG="${LANG:="$(getprop "persist.sys.locale")"}"
|
||||
echoRgb() {
|
||||
#轉換echo顏色提高可讀性
|
||||
@@ -274,7 +265,6 @@ else
|
||||
[[ $(ksud -V 2>/dev/null) = "" ]] && echo "Magisk busybox Path does not exist"
|
||||
fi
|
||||
export PATH="$PATH"
|
||||
#tools_path="${tools_path/'/storage/emulated/'/'/data/media/'}"
|
||||
filepath="/data/backup_tools"
|
||||
busybox="$filepath/busybox"
|
||||
busybox2="$tools_path/busybox"
|
||||
@@ -344,14 +334,15 @@ while read -r file expected_hash; do
|
||||
break
|
||||
fi
|
||||
done <<< "$(cat <<EOF
|
||||
zstd 2388211eb3960070c6b4528f68f7129a9ef5d165a0fef0113ac59e723006f4ca
|
||||
zstd ab32aecb389c3ba5c1f7ab05d5eb6a861bad80261fd14ef9a8f4c283ac48c22c
|
||||
tar 3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814
|
||||
classes.dex ee8f70babbf30162a1ddae86930cc69d443eda0ecea177e36a9e1ae4681a4811
|
||||
classes.dex 3d9372ac4a922808974bed039ca152d5741215976bedb20653e6e65e4bdcb37f
|
||||
bc b15d730591f6fb52af59284b87d939c5bea204f944405a3518224d8df788dc15
|
||||
busybox 4d60ab3f5a59ebb2ca863f2f514e6924401b581e9b64f602665c008177626651
|
||||
find 7fa812e58aafa29679cf8b50fc617ecf9fec2cfb2e06ea491e0a2d6bf79b903b
|
||||
jq 4dd2d8a0661df0b22f1bb9a1f9830f06b6f3b8f7d91211a1ef5d7c4f06a8b4a5
|
||||
keycheck 50645ee0e0d2a7d64fb4a1286446df7a4445f3d11aefd49eeeb88515b314c363
|
||||
cmd 08da8ac23b6e99788fd3ce6c19c7b5a083b2ad48be35963a48d01d6ee7f3bb6d
|
||||
zip d9015b3c5d3376a4f9f2d204afd2aeaa4a86fd0174da1be090e41622e73be0ec
|
||||
EOF)"
|
||||
if [[ $background_execution = 1 || $setDisplayPowerMode = 1 ]]; then
|
||||
@@ -422,7 +413,7 @@ get_version() {
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
sleep 0.5
|
||||
sleep 0.3
|
||||
break
|
||||
done
|
||||
}
|
||||
@@ -512,23 +503,6 @@ else
|
||||
DEVICE_NAME="處理器:null"
|
||||
RAMINFO="RAM:null"
|
||||
fi
|
||||
security_patch="$(getprop ro.build.version.security_patch 2>/dev/null)"
|
||||
if [[ $security_patch != "" ]]; then
|
||||
patch_date="$(date -d "$security_patch" +%s 2>/dev/null)"
|
||||
if [[ -n $patch_date ]]; then
|
||||
current_sec="$(date +%s)"
|
||||
patch_age="$(( (current_sec - patch_date) / 86400 ))"
|
||||
if (( patch_age > 90 )); then
|
||||
echo "[!] 安全补丁日期: $security_patch (已过期${patch_age}天)"
|
||||
else
|
||||
echo "[√] 安全补丁日期: $security_patch (${patch_age}天前)"
|
||||
fi
|
||||
else
|
||||
echo "[!] 无法解析安全补丁日期: $security_patch"
|
||||
fi
|
||||
else
|
||||
echo "[!] 无法获取安全补丁日期"
|
||||
fi
|
||||
echoRgb "---------------------SpeedBackup---------------------"
|
||||
echoRgb "腳本路徑:$MODDIR\n -已開機:$(Show_boottime)\n -執行時間:$(date +"%Y-%m-%d %H:%M:%S")\n -busybox路徑:$(which busybox)\n -busybox版本:$(busybox | head -1 | awk '{print $2}')\n -腳本版本:$backup_version\n -管理器:$Manager_version\n -品牌:$(getprop ro.product.brand 2>/dev/null)\n -型號:$Device_name($(getprop ro.product.device 2>/dev/null))\n -閃存顆粒:$UFS_MODEL($ROM_TYPE)\n -$DEVICE_NAME\n -$RAMINFO\n -Android版本:$(getprop ro.build.version.release 2>/dev/null) SDK:$(getprop ro.build.version.sdk 2>/dev/null)\n -內核:$(uname -r)\n -Selinux狀態:$([[ $(getenforce) = Permissive ]] && echo "寬容" || echo "嚴格")\n -By@YAWAsau\n -Support: https://jq.qq.com/?_wv=1027&k=f5clPNC3"
|
||||
case $MODDIR in
|
||||
@@ -594,9 +568,7 @@ add_entry() {
|
||||
fi
|
||||
REPLY="$app_name $package_name"
|
||||
}
|
||||
case $operate in
|
||||
backup|Restore|Restore2|Getlist|backup_media)
|
||||
if [[ $backup_mode = "" ]]; then
|
||||
if [[ ! -f ${0%/*}/app_details.json ]]; then
|
||||
if [[ $user = "" ]]; then
|
||||
user_id="$(ls /data/user | tr ' ' '\n')"
|
||||
if [[ $user_id != "" && $(ls /data/user | tr ' ' '\n' | wc -l) -gt 1 ]]; then
|
||||
@@ -644,20 +616,20 @@ backup|Restore|Restore2|Getlist|backup_media)
|
||||
echoRgb "主用戶:$user_id" "2"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
case $Compression_method in
|
||||
tar | TAR | Tar) user="$(echo "${0%}" | sed 's/.*\/Backup_tar_\([0-9]*\).*/\1/')" ;;
|
||||
zstd | Zstd | ZSTD) user="$(echo "${0%}" | sed 's/.*\/Backup_zstd_\([0-9]*\).*/\1/')" ;;
|
||||
else
|
||||
case $(echo "${0%}") in
|
||||
*zstd*) user="$(echo "${0%}" | sed 's/.*\/Backup_zstd_\([0-9]*\).*/\1/')" ;;
|
||||
*tar*) user="$(echo "${0%}" | sed 's/.*\/Backup_tar_\([0-9]*\).*/\1/')" ;;
|
||||
*) echoRgb "請勿修改備份資料夾名稱,保持原本的Backup_壓縮算法名稱_使用者id" "0" && exit 2 ;;
|
||||
esac
|
||||
fi
|
||||
[[ $user != 0 ]] && am start-user "$user"
|
||||
path="/data/media/$user/Android"
|
||||
path2="/data/user/$user"
|
||||
path3="/data/user_de/$user"
|
||||
[[ ! -d $path2 ]] && echoRgb "$user分區不存在,請將上方提示的用戶id按照需求填入\n -$conf_path配置項user=,一次只能填寫一個" "0" && exit 2
|
||||
echoRgb "當前操作為用戶$user"
|
||||
export USER_ID="$user" ;;
|
||||
esac
|
||||
fi
|
||||
[[ $user != 0 ]] && am start-user "$user"
|
||||
path="/data/media/$user/Android"
|
||||
path2="/data/user/$user"
|
||||
path3="/data/user_de/$user"
|
||||
[[ ! -d $path2 ]] && echoRgb "$user分區不存在,請將上方提示的用戶id按照需求填入\n -$conf_path配置項user=,一次只能填寫一個" "0" && exit 2
|
||||
echoRgb "當前操作為用戶$user"
|
||||
export USER_ID="$user"
|
||||
unset LD_LIBRARY_PATH
|
||||
#因接收USER_ID環境變量問題故將函數放在此處
|
||||
alias appinfo="app_process /system/bin com.xayah.dex.HiddenApiUtil getInstalledPackagesAsUser $USER_ID $@"
|
||||
@@ -675,97 +647,50 @@ find_tools_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "tools" -type d !
|
||||
Rename_script () {
|
||||
HT="${HT:=0}"
|
||||
find "$path_hierarchy" -maxdepth 3 -name "*.sh" -type f -not -name "tools.sh" | sort | while read ; do
|
||||
Script_type="$(grep -o 'operate="[^"]*"' "$REPLY" 2>/dev/null | awk -F'=' '{print $2}' | tr -d '"' | head -1)"
|
||||
MODDIR_NAME="${REPLY%/*}"
|
||||
FILE_NAME="${REPLY##*/}"
|
||||
case $Script_type in
|
||||
backup|Getlist|backup_media|Restore|dumpname|check_file|convert|Restore3|Restore2)
|
||||
if [[ -f ${REPLY%/*}/app_details.json || -f ${REPLY%/*}/app_details ]]; then
|
||||
if [[ $FILE_NAME = backup.sh ]]; then
|
||||
touch_shell "$Script_type" "$REPLY" "backup_mode" "backup_mode=\"1\""
|
||||
touch_shell "1" "$REPLY"
|
||||
else
|
||||
touch_shell "$Script_type" "$REPLY"
|
||||
touch_shell "3" "$REPLY"
|
||||
fi
|
||||
else
|
||||
if [[ -d ${REPLY%/*}/tools ]]; then
|
||||
touch_shell "$Script_type" "$REPLY"
|
||||
if [[ $Script_target_language != $shell_language ]]; then
|
||||
[[ $HT = 0 && $K = "" ]] && echoRgb "腳本語言為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...."
|
||||
ts <"$REPLY">temp && cp temp "$REPLY" && rm temp
|
||||
echo_log "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")翻譯"
|
||||
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
|
||||
fi
|
||||
fi
|
||||
[[ -d ${REPLY%/*}/tools ]] && touch_shell "0" "$REPLY"
|
||||
let HT++
|
||||
fi ;;
|
||||
kill_script)
|
||||
if [[ $Script_target_language != $shell_language ]]; then
|
||||
[[ $HT = 0 && $K = "" ]] && echoRgb "腳本語言為$shell_language....轉換為$Script_target_language中,請稍後等待轉換...."
|
||||
ts <"$REPLY">temp && cp temp "$REPLY" && rm temp
|
||||
echo_log "$(echo "$REPLY" | sed "s|^$path_hierarchy/||")翻譯"
|
||||
mv "$REPLY" "$MODDIR_NAME/$(ts "$FILE_NAME")"
|
||||
let HT++
|
||||
fi ;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
unset HT
|
||||
}
|
||||
touch_shell () {
|
||||
unset conf_path MODDIR_Path Update_backup
|
||||
MODDIR_Path='${0%/*}'
|
||||
MODDIR_NAME2="${2%/*}"
|
||||
MODDIR_NAME2="${MODDIR_NAME2##*/}"
|
||||
conf_path='${0%/*}/backup_settings.conf'
|
||||
unset conf_path MODDIR_Path
|
||||
case $1 in
|
||||
Restore2)
|
||||
MODDIR_Path='${0%/*/*}'
|
||||
conf_path='${0%/*/*}/restore_settings.conf' ;;
|
||||
backup)
|
||||
if [[ $3 = backup_mode ]]; then
|
||||
0)
|
||||
MODDIR_Path='${0%/*}'
|
||||
MODDIR_Path1="$MODDIR_Path"
|
||||
conf_path='${0%/*}/backup_settings.conf' ;;
|
||||
1)
|
||||
MODDIR_Path='${0%/*/*/*}'
|
||||
conf_path='${0%/*/*/*}/backup_settings.conf'
|
||||
else
|
||||
[[ $(basename "$2" | awk '{print length($0)}') -gt 15 ]] && Update_backup=1
|
||||
fi ;;
|
||||
Restore|convert|dumpname|Restore3|check_file) conf_path='${0%/*}/restore_settings.conf' ;;
|
||||
MODDIR_Path1="$MODDIR_Path"
|
||||
conf_path='${0%/*/*/*}/backup_settings.conf' ;;
|
||||
2)
|
||||
MODDIR_Path='${0%/*}'
|
||||
MODDIR_Path1="$MODDIR_Path"
|
||||
conf_path='${0%/*}/restore_settings.conf' ;;
|
||||
3)
|
||||
MODDIR_Path='${0%/*/*}'
|
||||
MODDIR_Path1='${0%/*}'
|
||||
conf_path='${0%/*/*}/restore_settings.conf' ;;
|
||||
esac
|
||||
if [[ $4 != "" ]]; then
|
||||
[[ $Output_path = "" ]] && echo "if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then
|
||||
MODDIR=\"$MODDIR_Path\"
|
||||
operate=\"$1\"
|
||||
$4
|
||||
conf_path=\"$conf_path\"
|
||||
case \$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}') in
|
||||
0)
|
||||
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\" ;;
|
||||
1)
|
||||
{
|
||||
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
|
||||
} & ;;
|
||||
esac
|
||||
else
|
||||
echo \"$MODDIR_Path/tools/tools.sh遺失\"
|
||||
fi" >"$2"
|
||||
else
|
||||
echo "[ \"\$(echo \"\${0%/*}\" | grep -o 'bin.mt.plus/temp')\" != \"\" ] && echo \"你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒\" && exit 2
|
||||
[[ $Output_path = "" ]] && echo "#!/system/bin/sh
|
||||
if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then
|
||||
MODDIR=\"\${0%/*}\"
|
||||
operate=\"$1\"
|
||||
MODDIR=\"$MODDIR_Path1\"
|
||||
conf_path=\"$conf_path\"
|
||||
Update_backup=\"$Update_backup\"
|
||||
[ ! -f \"$conf_path\" ] && . \"\${0%/*}/tools/tools.sh\"
|
||||
case \$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}') in
|
||||
0)
|
||||
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\" ;;
|
||||
1)
|
||||
{
|
||||
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\"
|
||||
} & ;;
|
||||
esac
|
||||
[ ! -f \"$conf_path\" ] && . \"$MODDIR_Path/tools/tools.sh\"
|
||||
else
|
||||
echo \"$MODDIR_Path/tools/tools.sh遺失\"
|
||||
fi" >"$2"
|
||||
fi
|
||||
fi
|
||||
. \"$MODDIR_Path/tools/tools.sh\" | tee \"\${0%/*}/log.txt\""> "$2"
|
||||
}
|
||||
update_script() {
|
||||
[[ $zipFile = "" ]] && zipFile="$(find "$MODDIR" -maxdepth 1 -name "*.zip" -type f 2>/dev/null)"
|
||||
@@ -986,7 +911,7 @@ backup_path() {
|
||||
outshow="使用自定義目錄($Directory_type)"
|
||||
else
|
||||
Backup="$MODDIR/Backup_${Compression_method}_$user"
|
||||
if [[ $backup_mode = "" ]]; then
|
||||
if [[ ! -f ${0%/*}/app_details.json ]]; then
|
||||
outshow="使用當前路徑作為備份目錄"
|
||||
else
|
||||
[[ -d $Backup ]] && outshow="使用上層路徑作為備份目錄" || echoRgb "$Backup目錄不存在" "0"
|
||||
@@ -1482,9 +1407,10 @@ installapk() {
|
||||
INSTALL "$TMPDIR/nmsl.apk"
|
||||
echo_log "nmsl.apk安裝"
|
||||
fi
|
||||
find "$TMPDIR" -maxdepth 1 -name "*.apk" -type f 2>/dev/null | grep -v 'nmsl.apk' | while read; do
|
||||
pm install-write "$b" "${REPLY##*/}" "$REPLY" &>/dev/null
|
||||
echo_log "${REPLY##*/}安裝"
|
||||
apks=($(find "$TMPDIR" -maxdepth 1 -name "*.apk" -type f | grep -v 'nmsl.apk'))
|
||||
for apk in "${apks[@]}"; do
|
||||
pm install-write "$b" "${apk##*/}" "$apk" &>/dev/null
|
||||
echo_log "${apk##*/}安裝"
|
||||
done
|
||||
pm install-commit "$b" &>/dev/null
|
||||
echo_log "split Apk安裝"
|
||||
@@ -1529,9 +1455,9 @@ disable_verify() {
|
||||
}
|
||||
get_name(){
|
||||
txt="$MODDIR/appList.txt"
|
||||
txt="${txt/'/storage/emulated/'/'/data/media/'}"
|
||||
txt2="$MODDIR/mediaList.txt"
|
||||
txt3="$MODDIR/temp.txt"
|
||||
txt="${txt/'/storage/emulated/'/'/data/media/'}"
|
||||
if [[ $1 = Apkname ]]; then
|
||||
rm -rf "$txt" "$txt2"
|
||||
echoRgb "列出全部資料夾內應用名與自定義目錄壓縮包名稱" "3"
|
||||
@@ -1547,6 +1473,7 @@ get_name(){
|
||||
fi
|
||||
[[ $Apk_info = "" ]] && echoRgb "Apk_info變量為空" "0" && exit
|
||||
starttime1="$(date -u "+%s")"
|
||||
i=1
|
||||
find "$MODDIR" -maxdepth 2 -name "apk.*" -type f 2>/dev/null | sort | while read; do
|
||||
Folder="${REPLY%/*}"
|
||||
[[ $rgb_a -ge 229 ]] && rgb_a=118
|
||||
@@ -1617,9 +1544,10 @@ get_name(){
|
||||
case $1 in
|
||||
Apkname)
|
||||
[[ -f $Folder/${PackageName}.sh ]] && rm -rf "$Folder/${PackageName}.sh"
|
||||
[[ ! -f $Folder/recover.sh ]] && touch_shell "Restore2" "$Folder/recover.sh"
|
||||
[[ ! -f $Folder/backup.sh ]] && touch_shell "backup" "$Folder/backup.sh" "backup_mode" "backup_mode=\"1\""
|
||||
echoRgb "$ChineseName $PackageName" && echo "$ChineseName $PackageName" >>"$txt" ;;
|
||||
[[ ! -f $Folder/recover.sh ]] && touch_shell "3" "$Folder/recover.sh"
|
||||
[[ ! -f $Folder/backup.sh ]] && touch_shell "1" "$Folder/backup.sh"
|
||||
echoRgb "$i:$ChineseName $PackageName" && echo "$ChineseName $PackageName" >>"$txt"
|
||||
let i++ ;;
|
||||
convert)
|
||||
if [[ ${Folder##*/} = $PackageName ]]; then
|
||||
DIR_NAME="${Folder%/*}/$ChineseName"
|
||||
@@ -1791,8 +1719,7 @@ Background_application_list() {
|
||||
}
|
||||
fi
|
||||
}
|
||||
case $operate in
|
||||
backup)
|
||||
backup() {
|
||||
kill_Serve
|
||||
self_test
|
||||
case $MODDIR in
|
||||
@@ -1927,13 +1854,12 @@ backup)
|
||||
txt="$list_location"
|
||||
else
|
||||
txt="$MODDIR/$list_location"
|
||||
echoRgb "$txt"
|
||||
fi
|
||||
else
|
||||
txt="$MODDIR/appList.txt"
|
||||
fi
|
||||
#txt="${txt/'/storage/emulated/'/'/data/media/'}"
|
||||
[[ ! -f $txt ]] && echoRgb "請執行\"生成應用列表.sh\"獲取應用列表再來備份" "0" && exit 1
|
||||
txt="${txt/'/storage/emulated/'/'/data/media/'}"
|
||||
[[ ! -f $txt ]] && echoRgb "請執行start.sh獲取應用列表再來備份" "0" && exit 1
|
||||
TXT_NAME="${txt##*/}"
|
||||
case ${TXT_NAME##*.} in
|
||||
txt) ;;
|
||||
@@ -1942,7 +1868,7 @@ backup)
|
||||
sort -u "$txt" -o "$txt" &>/dev/null
|
||||
data="$MODDIR"
|
||||
hx="本地"
|
||||
echoRgb "腳本受到內核機制影響 息屏後IO性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行終止腳本.sh即可停止" "3"
|
||||
echoRgb "腳本受到內核機制影響 息屏後IO性能嚴重影響\n -請勿關閉終端或是息屏備份 如需終止腳本\n -請執行start.sh選擇終止腳本即可停止" "3"
|
||||
backup_path
|
||||
echoRgb "配置詳細:\n -壓縮方式:$Compression_method\n -音量鍵確認:$Lo\n -更新:$update\n -備份模式:$Backup_Mode\n -備份外部數據:$Backup_obb_data\n -備份user數據:$Backup_user_data\n -自定義目錄備份:$backup_media\n -存在進程忽略備份:$Background_apps_ignore\n -關閉螢幕:$setDisplayPowerMode"
|
||||
D="1"
|
||||
@@ -1953,9 +1879,10 @@ backup)
|
||||
Apk_info="$(appinfo "user|system" "pkgName" 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u)"
|
||||
fi
|
||||
[[ $Apk_info = "" ]] && echoRgb "Apk_info變量為空" "0" && exit
|
||||
[[ $backup_mode = "" ]] && {
|
||||
[[ ! -f ${0%/*}/app_details.json ]] && {
|
||||
echoRgb "檢查備份列表中是否存在已經卸載應用" "3"
|
||||
echoRgb "檢查備份列表中已經更新應用" "3"
|
||||
i1=1
|
||||
r1="$(cat "$txt" 2>/dev/null | awk 'NF != 0 { count++ } END { print count }')"
|
||||
while read -r ; do
|
||||
if [[ $(echo "$REPLY" | sed -E 's/^[ \t]*//; /^[ \t]*[##!]/d') != "" ]]; then
|
||||
app=($REPLY $REPLY)
|
||||
@@ -1963,17 +1890,6 @@ backup)
|
||||
if [[ $(echo "$Apk_info" | egrep -o "${app[1]}") != "" ]]; then
|
||||
[[ $Tmplist = "" ]] && Tmplist='#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market(忽略安裝包和數據)\n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market(僅忽略數據)'
|
||||
Tmplist="$Tmplist\n$REPLY"
|
||||
if [[ $Update_backup != "" ]]; then
|
||||
Backup_folder="$Backup/${app[2]}"
|
||||
app_details="$Backup_folder/app_details.json"
|
||||
if [[ -d $Backup_folder ]]; then
|
||||
apk_version="$(jq -r '.[] | select(.apk_version != null).apk_version' "$app_details")"
|
||||
apk_version2="$(pm list packages --show-versioncode --user "$user" "${app[1]}" 2>/dev/null | cut -f3 -d ':' | head -n 1)"
|
||||
[[ $apk_version != $apk_version2 ]] && {
|
||||
[[ $Tmplist2 = "" ]] && Tmplist2="$REPLY" || Tmplist2="$Tmplist2\n$REPLY"
|
||||
}
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echoRgb "$REPLY不存在系統,從列表中刪除" "0"
|
||||
fi
|
||||
@@ -1983,6 +1899,21 @@ backup)
|
||||
fi
|
||||
done < "$txt"
|
||||
}
|
||||
apks=($(cat "$txt" | grep -Ev '^[##!]' | awk '{print $1 ":" $2}'))
|
||||
[[ $Update_backup = true ]] && {
|
||||
echoRgb "檢查備份列表中已經更新應用" "3"
|
||||
for apk in "${apks[@]}"; do
|
||||
Backup_folder="$Backup/$(echo "$apk" | cut -d':' -f1)"
|
||||
app_details="$Backup_folder/app_details.json"
|
||||
if [[ -d $Backup_folder ]]; then
|
||||
apk_version="$(jq -r '.[] | select(.apk_version != null).apk_version' "$app_details")"
|
||||
apk_version2="$(pm list packages --show-versioncode --user "$user" "$(echo "$apk" | cut -d':' -f2)" 2>/dev/null | cut -f3 -d ':' | head -n 1)"
|
||||
[[ $apk_version != $apk_version2 ]] && {
|
||||
[[ $Tmplist2 = "" ]] && Tmplist2="${apk/:/ }" || Tmplist2="$Tmplist2\n${apk/:/ }"
|
||||
}
|
||||
fi
|
||||
done
|
||||
}
|
||||
[[ $Tmplist != "" ]] && echo "$Tmplist" | sed -e '/^$/d' | sort>"$txt"
|
||||
if [[ $Tmplist2 != "" ]]; then
|
||||
if [[ $Update_backup != "" ]]; then
|
||||
@@ -1993,23 +1924,19 @@ backup)
|
||||
[[ $Update_backup != "" ]] && echoRgb "應用目前無更新" "0" && exit 0
|
||||
fi
|
||||
r="$(egrep -v '#|#' "$txt" 2>/dev/null | awk 'NF != 0 { count++ } END { print count }')"
|
||||
[[ $backup_mode != "" ]] && r=1
|
||||
[[ $r = "" && $backup_mode = "" ]] && echoRgb "$MODDIR_NAME/appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME/生成應用列表.sh" "0" && exit 1
|
||||
[[ -f ${0%/*}/app_details.json ]] && r=1
|
||||
[[ $r = "" && ! -f ${0%/*}/app_details.json ]] && echoRgb "$MODDIR_NAME/appList.txt是空的或是包名被注釋備份個鬼\n -檢查是否注釋亦或者執行$MODDIR_NAME/start.sh" "0" && exit 1
|
||||
if [[ $Backup_Mode = true ]]; then
|
||||
[[ $Backup_user_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_user_data=0將不備份user數據" "0"
|
||||
[[ $Backup_obb_data = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -Backup_obb_data=0將不備份外部數據" "0"
|
||||
fi
|
||||
[[ $backup_media = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -backup_media=0將不備份自定義資料夾" "0"
|
||||
txt2="$Backup/appList.txt"
|
||||
txt2="${txt2/'/storage/emulated/'/'/data/media/'}"
|
||||
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market">"$txt2"
|
||||
[[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup"
|
||||
[[ ! -f $Backup/恢復備份.sh ]] && touch_shell "Restore" "$Backup/恢復備份.sh"
|
||||
[[ ! -f $Backup/終止腳本.sh ]] && cp -r "$MODDIR/終止腳本.sh" "$Backup/終止腳本.sh"
|
||||
[[ ! -f $Backup/重新生成應用列表.sh ]] && touch_shell "dumpname" "$Backup/重新生成應用列表.sh"
|
||||
[[ ! -f $Backup/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/轉換資料夾名稱.sh"
|
||||
[[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh"
|
||||
[[ ! -f $Backup/start.sh ]] && touch_shell "2" "$Backup/start.sh"
|
||||
[[ ! -d $Backup/modules ]] && mkdir -p "$Backup/modules" && echoRgb "$Backup/modules已創建成功\n -請按需要自行放置需要恢復時刷入的模塊在內將自動批量刷入" "1"
|
||||
[[ -d $Backup/Media ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh"
|
||||
[[ ! -f $Backup/restore_settings.conf ]] && update_Restore_settings_conf>"$Backup/restore_settings.conf"
|
||||
if [[ -d $Backup/tools ]]; then
|
||||
find "$Backup/tools" -maxdepth 1 -type f | while read; do
|
||||
@@ -2042,7 +1969,7 @@ backup)
|
||||
while [[ $i -le $r ]]; do
|
||||
[[ $en -ge 229 ]] && en=118
|
||||
unset name1 name2 apk_path apk_path2
|
||||
if [[ $backup_mode = "" ]]; then
|
||||
if [[ ! -f ${0%/*}/app_details.json ]]; then
|
||||
name1="$(egrep -v '#|#' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $1}')"
|
||||
name2="$(egrep -v '#|#' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${i}p" | awk '{print $2}')"
|
||||
else
|
||||
@@ -2101,7 +2028,7 @@ backup)
|
||||
if [[ $result = 0 && $No_backupdata = "" ]]; then
|
||||
if [[ $Backup_Mode = true ]]; then
|
||||
if [[ $Backup_obb_data = true ]]; then
|
||||
if [[ $name2 != *mt* ]]; then
|
||||
if [[ $name2 != bin.mt.plus ]]; then
|
||||
#備份data數據
|
||||
Backup_data "data"
|
||||
#備份obb數據
|
||||
@@ -2111,7 +2038,7 @@ backup)
|
||||
fi
|
||||
fi
|
||||
#備份user數據
|
||||
[[ $name2 != *mt* ]] && {
|
||||
[[ $name2 != bin.mt.plus ]] && {
|
||||
[[ $Backup_user_data = true ]] && {
|
||||
Backup_data "user"
|
||||
Backup_data "user_de"
|
||||
@@ -2123,8 +2050,8 @@ backup)
|
||||
fi
|
||||
fi
|
||||
[[ -f $Backup_folder/${name2}.sh ]] && rm -rf "$Backup_folder/${name2}.sh"
|
||||
[[ ! -f $Backup_folder/recover.sh ]] && touch_shell "Restore2" "$Backup_folder/recover.sh"
|
||||
[[ ! -f $Backup_folder/backup.sh ]] && touch_shell "backup" "$Backup_folder/backup.sh" "backup_mode" "backup_mode=\"1\""
|
||||
[[ ! -f $Backup_folder/recover.sh ]] && touch_shell "3" "$Backup_folder/recover.sh"
|
||||
[[ ! -f $Backup_folder/backup.sh ]] && touch_shell "1" "$Backup_folder/backup.sh"
|
||||
fi
|
||||
endtime 2 "$name1 備份" "3"
|
||||
lxj="$(echo "$Occupation_status" | awk '{print $3}' | sed 's/%//g')"
|
||||
@@ -2158,9 +2085,9 @@ 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")"
|
||||
echo "$(sort "$txt2" | sed -e '/^$/d')" >"$txt2"
|
||||
sort "$txt2" | sed '/^$/d' >"${txt2}.tmp" && mv "${txt2}.tmp" "$txt2"
|
||||
[[ -e ${txt%/*}/txt2 ]] && cat "${txt%/*}/txt2">"$txt" && rm -rf "${txt%/*}/txt2"
|
||||
if [[ $backup_media = true && $backup_mode = "" ]]; then
|
||||
if [[ $backup_media = true && ! -f ${0%/*}/app_details.json ]]; then
|
||||
A=1
|
||||
B="$(echo "$Custom_path" | egrep -v '#|#' | awk 'NF != 0 { count++ } END { print count }')"
|
||||
if [[ $B != "" ]]; then
|
||||
@@ -2168,7 +2095,7 @@ backup)
|
||||
notification "102" "Media備份開始"
|
||||
starttime1="$(date -u "+%s")"
|
||||
Backup_folder="$Backup/Media"
|
||||
[[ ! -f $Backup/恢復自定義資料夾.sh ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh"
|
||||
[[ ! -f $Backup/start.sh ]] && touch_shell "2" "$Backup/start.sh"
|
||||
[[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder"
|
||||
app_details="$Backup_folder/app_details.json"
|
||||
[[ ! -f $app_details ]] && echo "{\n}">"$app_details"
|
||||
@@ -2215,32 +2142,38 @@ backup)
|
||||
starttime1="$TIME"
|
||||
endtime 1 "批量備份開始到結束"
|
||||
notification "105" "備份完成 $(endtime 1 "批量備份開始到結束")"
|
||||
chown "$(stat -c '%u:%g' '/data/media/0/Download')" "$txt"
|
||||
chown "$(stat -c '%u:%g' '/data/media/0/Download')" "$txt2"
|
||||
} &
|
||||
wait && exit
|
||||
;;
|
||||
dumpname)
|
||||
}
|
||||
backup_update_apk() {
|
||||
Update_backup='true'
|
||||
backup
|
||||
}
|
||||
dumpname() {
|
||||
get_name "Apkname"
|
||||
;;
|
||||
convert)
|
||||
}
|
||||
convert() {
|
||||
get_name "convert"
|
||||
;;
|
||||
check_file)
|
||||
}
|
||||
check_file() {
|
||||
Check_archive "$MODDIR"
|
||||
;;
|
||||
Restore|Restore2)
|
||||
}
|
||||
Restore() {
|
||||
kill_Serve
|
||||
self_test
|
||||
disable_verify
|
||||
[[ ! -d $path2 ]] && echoRgb "設備不存在user目錄" "0" && exit 1
|
||||
if [[ $operate = Restore ]]; then
|
||||
echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊$MODDIR_NAME/終止腳本.sh\n -否則腳本將繼續執行直到結束" "0"
|
||||
echoRgb "如果大量提示找不到資料夾請執行$MODDIR_NAME/轉換資料夾名稱.sh"
|
||||
if [[ ! -f ${0%/*}/app_details.json ]]; then
|
||||
echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊$MODDIR_NAME/start.sh選擇終止腳本\n -否則腳本將繼續執行直到結束" "0"
|
||||
echoRgb "如果大量提示找不到資料夾請執行$MODDIR_NAME/start.sh選擇轉換資料夾名稱"
|
||||
txt="$MODDIR/appList.txt"
|
||||
[[ ! -f $txt ]] && echoRgb "請執行\"重新生成應用列表.sh\"獲取應用列表再來恢復" "0" && exit 2
|
||||
[[ ! -f $txt ]] && echoRgb "請執行start.sh獲取應用列表再來恢復" "0" && exit 2
|
||||
sort -u "$txt" -o "$txt" 2>/dev/null
|
||||
i=1
|
||||
r="$(egrep -v '#|#' "$txt" 2>/dev/null | awk 'NF != 0 { count++ } END { print count }')"
|
||||
[[ $r = "" ]] && echoRgb "appList.txt包名為空或是被注釋了\n -請執行\"重新生成應用列表.sh\"獲取應用列表再來恢復" "0" && exit 1
|
||||
[[ $r = "" ]] && echoRgb "appList.txt包名為空或是被注釋了\n -請執行start.sh獲取應用列表再來恢復" "0" && exit 1
|
||||
Backup_folder2="$MODDIR/Media"
|
||||
Backup_folder3="$MODDIR/modules"
|
||||
#校驗選填是否正確
|
||||
@@ -2396,7 +2329,7 @@ Restore|Restore2)
|
||||
{
|
||||
while [[ $i -le $r ]]; do
|
||||
[[ $en -ge 229 ]] && en=118
|
||||
if [[ $operate = Restore ]]; then
|
||||
if [[ ! -f ${0%/*}/app_details.json ]]; then
|
||||
echoRgb "恢復第$i/$r個應用 剩下$((r - i))個" "3"
|
||||
notification "105" "恢復第$i/$r個應用 剩下$((r - i))個
|
||||
恢復 $name1"
|
||||
@@ -2489,7 +2422,7 @@ Restore|Restore2)
|
||||
notification "107" "SSAID恢復後必須重新開機套用,否則應用閃退,如果沒有應用恢復ssaid則無須重啟"
|
||||
}
|
||||
notification "105" "app恢復完成 $(endtime 1 "應用恢復" "2")"
|
||||
[[ $operate != Restore2 ]] && {
|
||||
[[ ! -f ${0%/*}/app_details.json ]] && {
|
||||
if [[ $media_recovery = true ]]; then
|
||||
starttime1="$(date -u "+%s")"
|
||||
app_details="$Backup_folder2/app_details.json"
|
||||
@@ -2497,7 +2430,7 @@ Restore|Restore2)
|
||||
sort -u "$txt" -o "$txt" 2>/dev/null
|
||||
A=1
|
||||
B="$(egrep -v '#|#' "$txt" 2>/dev/null | awk 'NF != 0 { count++ } END { print count }')"
|
||||
[[ $B = "" ]] && echoRgb "mediaList.txt壓縮包名為空或是被注釋了\n -請執行\"重新生成應用列表.sh\"獲取列表再來恢復" "0" && B=0
|
||||
[[ $B = "" ]] && echoRgb "mediaList.txt壓縮包名為空或是被注釋了\n -請執行start.sh獲取列表再來恢復" "0" && B=0
|
||||
notification "106" "Media恢復開始"
|
||||
while [[ $A -le $B ]]; do
|
||||
name1="$(egrep -v '#|#' "$txt" 2>/dev/null | sed -e '/^$/d' | sed -n "${A}p" | awk '{print $1}')"
|
||||
@@ -2536,14 +2469,14 @@ Restore|Restore2)
|
||||
rm -rf "$TMPDIR"/*
|
||||
} &
|
||||
wait && exit
|
||||
;;
|
||||
Restore3)
|
||||
}
|
||||
Restore3() {
|
||||
kill_Serve
|
||||
self_test
|
||||
case $Lo in
|
||||
0|1)
|
||||
echoRgb "點錯了?這是恢復自定義資料夾腳本 如果你是要恢復應用那你就點錯了\n -音量上繼續恢復自定義資料夾,音量下離開腳本" "2"
|
||||
echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊終止腳本.sh,否則腳本將繼續執行直到結束" "0"
|
||||
echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊start.sh選擇終止腳本,否則腳本將繼續執行直到結束" "0"
|
||||
get_version "恢復自定義資料夾" "離開腳本" && [[ $branch = false ]] && exit 0 ;;
|
||||
2)
|
||||
Enter_options "點錯了?這是恢復自定義資料夾腳本 如果你是要恢復應用那你就點錯了\n -輸入1繼續恢復自定義資料夾,輸入0離開腳本" "恢復" "退出腳本" && isBoolean "$parameter" "branch" && branch="$nsx" && [[ $branch = false ]] && exit 0 ;;
|
||||
@@ -2553,7 +2486,7 @@ Restore3)
|
||||
Backup_folder2="$mediaDir"
|
||||
[[ ! -d $mediaDir ]] && echoRgb "媒體資料夾不存在" "0" && exit 2
|
||||
txt="$MODDIR/mediaList.txt"
|
||||
[[ ! -f $txt ]] && echoRgb "請執行\"重新生成應用列表.sh\"獲取媒體列表再來恢復" "0" && exit 2
|
||||
[[ ! -f $txt ]] && echoRgb "請執行start.sh獲取媒體列表再來恢復" "0" && exit 2
|
||||
sort -u "$txt" -o "$txt" 2>/dev/null
|
||||
#記錄開始時間
|
||||
starttime1="$(date -u "+%s")"
|
||||
@@ -2568,7 +2501,7 @@ Restore3)
|
||||
A=1
|
||||
B="$(egrep -v '#|#' "$txt" 2>/dev/null | awk 'NF != 0 { count++ } END { print count }')"
|
||||
Set_screen_pause_seconds on
|
||||
[[ $B = "" ]] && echoRgb "mediaList.txt壓縮包名為空或是被注釋了\n -請執行\"重新生成應用列表.sh\"獲取列表再來恢復" "0" && exit 1
|
||||
[[ $B = "" ]] && echoRgb "mediaList.txt壓縮包名為空或是被注釋了\n -請執行start.sh獲取列表再來恢復" "0" && exit 1
|
||||
echo "$script">"$TMPDIR/scriptTMP"
|
||||
notification "108" "Media恢復開始"
|
||||
{
|
||||
@@ -2584,13 +2517,12 @@ Restore3)
|
||||
notification "108" "Media恢復完成 $(endtime 1 "Media恢復")"
|
||||
rm -rf "$TMPDIR/scriptTMP"
|
||||
} &
|
||||
;;
|
||||
Getlist)
|
||||
}
|
||||
Getlist() {
|
||||
case $MODDIR in
|
||||
/storage/emulated/0/Android/* | /data/media/0/Android/* | /sdcard/Android/*) echoRgb "請勿在$MODDIR內生成列表" "0" && exit 2 ;;
|
||||
esac
|
||||
#校驗選填是否正確
|
||||
isBoolean "$debug_list" "debug_list" && debug_list="$nsx"
|
||||
case $Lo in
|
||||
0)
|
||||
[[ $blacklist_mode != "" ]] && isBoolean "$blacklist_mode" "blacklist_mode" && blacklist_mode="$nsx" || {
|
||||
@@ -2625,10 +2557,9 @@ Getlist)
|
||||
} ;;
|
||||
*) echoRgb "$conf_path Lo=$Lo填寫錯誤,正確值0 1 2" "0" && exit 2 ;;
|
||||
esac
|
||||
txtpath="$MODDIR"
|
||||
[[ $debug_list = true ]] && txtpath="${txtpath/'/storage/emulated/'/'/data/media/'}"
|
||||
nametxt="$txtpath/appList.txt"
|
||||
[[ ! -f $nametxt ]] && echo '#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market(忽略安裝包和數據)\n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market(僅忽略數據)' >"$nametxt"
|
||||
txt="$MODDIR/appList.txt"
|
||||
txt="${txt/'/storage/emulated/'/'/data/media/'}"
|
||||
[[ ! -f $txt ]] && echo '#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market(忽略安裝包和數據)\n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market(僅忽略數據)' >"$txt"
|
||||
echoRgb "請勿關閉腳本,等待提示結束"
|
||||
rgb_a=118
|
||||
starttime1="$(date -u "+%s")"
|
||||
@@ -2650,12 +2581,12 @@ Getlist)
|
||||
Q="0"
|
||||
rb="0"
|
||||
Output_list() {
|
||||
if [[ $(cat "$nametxt" | cut -f2 -d ' ' | egrep -w "^${app_1[1]}$") != ${app_1[1]} ]]; then
|
||||
[[ $REPLY2 = "" ]] && add_entry "${app_1[2]}" "${app_1[1]}" "$(cat "$nametxt" | grep -w "${app_1[2]}")" || add_entry "${app_1[2]}" "${app_1[1]}" "$REPLY2"
|
||||
if [[ $(cat "$txt" | cut -f2 -d ' ' | egrep -w "^${app_1[1]}$") != ${app_1[1]} ]]; then
|
||||
[[ $REPLY2 = "" ]] && add_entry "${app_1[2]}" "${app_1[1]}" "$(cat "$txt" | grep -w "${app_1[2]}")" || add_entry "${app_1[2]}" "${app_1[1]}" "$REPLY2"
|
||||
case ${app_1[1]} in
|
||||
*oneplus*|*miui*|*xiaomi*|*oppo*|*flyme*|*meizu*|com.android.soundrecorder|com.mfashiongallery.emag|com.mi.health|*coloros*|com.android.soundrecorder|com.duokan.phone.remotecontroller|com.android.calendar|com.android.deskclock|com.android.calendar|com.android.deskclock|com.google.android.safetycore|com.google.android.contactkeys)
|
||||
*oneplus*|*miui*|*xiaomi*|*oppo*|*flyme*|*meizu*|com.android.soundrecorder|com.mfashiongallery.emag|com.mi.health|*coloros*|com.android.soundrecorder|com.duokan.phone.remotecontroller|com.android.calendar|com.android.deskclock|com.android.calendar|com.android.deskclock|com.google.android.safetycore|com.google.android.contactkeys|com.google.android.apps.messaging|com.google.android.calendar)
|
||||
if [[ $(echo "$xposed_name" | egrep -w "${app_1[1]}$") = ${app_1[1]} ]]; then
|
||||
echoRgb "$app_name為Xposed模塊 進行添加" "0"
|
||||
echoRgb "$((i+1)):$app_name為Xposed模塊 進行添加" "0"
|
||||
if [[ $REPLY2 = "" ]]; then
|
||||
REPLY2="$REPLY" && [[ $tmp = "" ]] && tmp="1"
|
||||
else
|
||||
@@ -2669,7 +2600,7 @@ Getlist)
|
||||
else
|
||||
REPLY2="$REPLY2\n$REPLY" && [[ $tmp = "" ]] && tmp="1"
|
||||
fi
|
||||
echoRgb "$app_name ${app_1[1]}($rgb_a)"
|
||||
echoRgb "$((i+1)):$app_name ${app_1[1]}($rgb_a)"
|
||||
let i++
|
||||
else
|
||||
echoRgb "$app_name 預裝應用 忽略輸出" "0"
|
||||
@@ -2689,10 +2620,10 @@ Getlist)
|
||||
REPLY2="$REPLY2\n$REPLY" && [[ $tmp = "" ]] && tmp="1"
|
||||
fi
|
||||
if [[ $(echo "$xposed_name" | egrep -w "${app_1[1]}$") = ${app_1[1]} ]]; then
|
||||
echoRgb "Xposed: $app_name ${app_1[1]}($rgb_a)"
|
||||
echoRgb "$((i+1)):Xposed: $app_name ${app_1[1]}($rgb_a)"
|
||||
let rd++
|
||||
else
|
||||
echoRgb "$app_name ${app_1[1]}($rgb_a)"
|
||||
echoRgb "$((i+1)):$app_name ${app_1[1]}($rgb_a)"
|
||||
fi
|
||||
let i++
|
||||
;;
|
||||
@@ -2721,9 +2652,9 @@ Getlist)
|
||||
Output_list
|
||||
fi
|
||||
if [[ $LR = $Apk_Quantity ]]; then
|
||||
echo "$REPLY2">>"$nametxt"
|
||||
if [[ $(cat "$nametxt" | wc -l | awk '{print $1-2}') -lt $i ]]; then
|
||||
rm -rf "$nametxt"
|
||||
echo "$REPLY2">>"$txt"
|
||||
if [[ $(cat "$txt" | wc -l | awk '{print $1-2}') -lt $i ]]; then
|
||||
rm -rf "$txt"
|
||||
echoRgb "\n -輸出異常 請將$conf_path中的debug_list=\"0\"改為1或是重新執行本腳本" "0"
|
||||
exit
|
||||
fi
|
||||
@@ -2732,7 +2663,7 @@ Getlist)
|
||||
fi
|
||||
let rgb_a++ LR++
|
||||
done
|
||||
if [[ -f $nametxt ]]; then
|
||||
if [[ -f $txt ]]; then
|
||||
rm -rf "$TMPDIR"/*
|
||||
while read -r ; do
|
||||
if [[ $(echo "$REPLY" | sed -E 's/^[ \t]*//; /^[ \t]*[##!]/d') != "" ]]; then
|
||||
@@ -2754,18 +2685,13 @@ Getlist)
|
||||
else
|
||||
Tmplist="$Tmplist\n$REPLY"
|
||||
fi
|
||||
done < "$nametxt"
|
||||
[[ $Tmplist != "" ]] && echo "$Tmplist" | sed -e '/^$/d' | sort>"$nametxt"
|
||||
done < "$txt"
|
||||
[[ $Tmplist != "" ]] && echo "$Tmplist" | sed -e '/^$/d' | sort>"$txt"
|
||||
if [[ $recovery_flash = true ]]; then
|
||||
if [[ -f $tools_path/update-binary && -f $TMPDIR/appList.txt ]]; then
|
||||
echoRgb "輸出用於recovery的備份卡刷包" ; rm -rf "$MODDIR/recovery卡刷備份.zip"
|
||||
touch_shell "Restore" "$TMPDIR/恢復備份.sh"
|
||||
cp -r "$MODDIR/終止腳本.sh" "$TMPDIR/終止腳本.sh"
|
||||
touch_shell "dumpname" "$TMPDIR/重新生成應用列表.sh"
|
||||
touch_shell "convert" "$TMPDIR/轉換資料夾名稱.sh"
|
||||
touch_shell "check_file" "$TMPDIR/壓縮檔完整性檢查.sh"
|
||||
touch_shell "Restore2" "$TMPDIR/recover.sh"
|
||||
touch_shell "Restore3" "$TMPDIR/恢復自定義資料夾.sh"
|
||||
touch_shell "2" "$TMPDIR/start.sh"
|
||||
touch_shell "3" "$TMPDIR/recover.sh"
|
||||
update_Restore_settings_conf>"$TMPDIR/restore_settings.conf"
|
||||
mkdir -p "$TMPDIR/META-INF/com/google/android" && cp "$tools_path/update-binary" "$TMPDIR/META-INF/com/google/android"
|
||||
tar -cpf - -C "${tools_path%/*}" "${tools_path##*/}" | tar --delete "tools/zip" | tar --recursive-unlink -xmpf - -C "$TMPDIR/"
|
||||
@@ -2778,24 +2704,22 @@ Getlist)
|
||||
fi
|
||||
fi
|
||||
wait
|
||||
chown "$(stat -c '%u:%g' '/data/media/0/Download')" "$txt"
|
||||
endtime 1
|
||||
echoRgb "輸出包名結束 請查看$nametxt"
|
||||
;;
|
||||
backup_media)
|
||||
echoRgb "輸出包名結束 請查看$txt"
|
||||
}
|
||||
backup_media() {
|
||||
kill_Serve
|
||||
self_test
|
||||
backup_path
|
||||
echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊終止腳本.sh,否則腳本將繼續執行直到結束" "0"
|
||||
echoRgb "假設反悔了要終止腳本請儘速離開此腳本點擊start.sh選擇終止腳本,否則腳本將繼續執行直到結束" "0"
|
||||
A=1
|
||||
B="$(echo "$Custom_path" | egrep -v '#|#' | awk 'NF != 0 { count++ } END { print count }')"
|
||||
if [[ $B != "" ]]; then
|
||||
starttime1="$(date -u "+%s")"
|
||||
Backup_folder="$Backup/Media"
|
||||
[[ ! -d $Backup_folder ]] && mkdir -p "$Backup_folder"
|
||||
[[ ! -f $Backup/恢復自定義資料夾.sh ]] && touch_shell "Restore3" "$Backup/恢復自定義資料夾.sh"
|
||||
[[ ! -f $Backup/重新生成應用列表.sh ]] && touch_shell "dumpname" "$Backup/重新生成應用列表.sh"
|
||||
[[ ! -f $Backup/轉換資料夾名稱.sh ]] && touch_shell "convert" "$Backup/轉換資料夾名稱.sh"
|
||||
[[ ! -f $Backup/壓縮檔完整性檢查.sh ]] && touch_shell "check_file" "$Backup/壓縮檔完整性檢查.sh"
|
||||
[[ ! -f $Backup/start.sh ]] && touch_shell "2" "$Backup/start.sh"
|
||||
[[ ! -d $Backup/tools ]] && cp -r "$tools_path" "$Backup"
|
||||
[[ ! -f $Backup/restore_settings.conf ]] && update_Restore_settings_conf>"$Backup/restore_settings.conf"
|
||||
app_details="$Backup_folder/app_details.json"
|
||||
@@ -2831,8 +2755,8 @@ backup_media)
|
||||
else
|
||||
echoRgb "自定義路徑為空 無法備份" "0"
|
||||
fi
|
||||
;;
|
||||
Device_List)
|
||||
}
|
||||
Device_List() {
|
||||
URL="https://raw.githubusercontent.com/KHwang9883/MobileModels/refs/heads/master/brands"
|
||||
rm -rf "$tools_path/Device_List"
|
||||
for i in $(echo "xiaomi\nxiaomi_en\nsamsung\nsamsung_global\nasus\nBlack_Shark\nBlack_Shark_en\ngoogle\nLenovo\nMEIZU\nMEIZU_en\nMotorola\nNokia\nnothing\nnubia\nOnePlus\nOnePlus_en\nSony\nrealme\nrealme_en\nvivo\nvivo_en\noppo\noppo_en"); do
|
||||
@@ -2886,5 +2810,81 @@ Device_List)
|
||||
fi
|
||||
else
|
||||
echoRgb "下載機型失敗"
|
||||
fi ;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
if [[ $0 = *backup.sh ]]; then
|
||||
start=backup
|
||||
else
|
||||
[[ $0 = *recover.sh ]] && start=Restore
|
||||
fi
|
||||
if [[ $start != "" ]]; then
|
||||
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
|
||||
0)
|
||||
eval "$start" ;;
|
||||
1)
|
||||
{
|
||||
eval "$start"
|
||||
} & ;;
|
||||
esac
|
||||
else
|
||||
if [[ -f $MODDIR/backup_settings.conf ]]; then
|
||||
echoRgb "音量鍵上下選擇對應功能,上鍵選擇下鍵跳過"
|
||||
steps=(
|
||||
"生成應用列表"
|
||||
"備份應用"
|
||||
"備份已更新應用"
|
||||
"備份自定義資料夾"
|
||||
"殺死運行中腳本"
|
||||
)
|
||||
commands=(
|
||||
"Getlist"
|
||||
"backup"
|
||||
"backup_update_apk"
|
||||
"backup_media"
|
||||
"echoRgb "等待腳本停止中,請稍後....." ; kill_Serve && echoRgb "腳本終止" ;exit"
|
||||
)
|
||||
else
|
||||
if [[ -f $MODDIR/restore_settings.conf ]]; then
|
||||
echoRgb "音量鍵上下選擇對應功能,上鍵選擇下鍵跳過"
|
||||
steps=(
|
||||
"恢復備份"
|
||||
"恢復自定義資料夾"
|
||||
"重新生成應用列表"
|
||||
"壓縮檔完整性檢查"
|
||||
"轉換文件夾名稱"
|
||||
"殺死運行中腳本"
|
||||
)
|
||||
commands=(
|
||||
"Restore"
|
||||
"Restore3"
|
||||
"dumpname"
|
||||
"check_file"
|
||||
"convert"
|
||||
"echo "等待腳本停止中,請稍後....." ; kill_Serve && echoRgb "腳本終止" ;exit"
|
||||
)
|
||||
fi
|
||||
fi
|
||||
# 開始循環提示
|
||||
for i in "${!steps[@]}"; do
|
||||
while true; do
|
||||
echoRgb "是否執行:${steps[$i]}?"
|
||||
get_version "執行${steps[$i]}" "略過${steps[$i]}" && Select_Result="$branch"
|
||||
case $Select_Result in
|
||||
true)
|
||||
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
|
||||
0)
|
||||
eval "${commands[$i]}" ;;
|
||||
1)
|
||||
{
|
||||
eval "${commands[$i]}"
|
||||
} & ;;
|
||||
esac
|
||||
exit 0
|
||||
;;
|
||||
false)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
fi
|
||||
BIN
tools/zstd
BIN
tools/zstd
Binary file not shown.
@@ -1,18 +0,0 @@
|
||||
[ "$(echo "${0%/*}" | grep -o 'bin.mt.plus/temp')" != "" ] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2
|
||||
if [ -f "${0%/*}/tools/tools.sh" ]; then
|
||||
MODDIR="${0%/*}"
|
||||
operate="backup"
|
||||
conf_path="${0%/*}/backup_settings.conf"
|
||||
Update_backup="1"
|
||||
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
|
||||
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
|
||||
0)
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;;
|
||||
1)
|
||||
{
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||
} & ;;
|
||||
esac
|
||||
else
|
||||
echo "${0%/*}/tools/tools.sh遺失"
|
||||
fi
|
||||
18
備份應用.sh
18
備份應用.sh
@@ -1,18 +0,0 @@
|
||||
[ "$(echo "${0%/*}" | grep -o 'bin.mt.plus/temp')" != "" ] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2
|
||||
if [ -f "${0%/*}/tools/tools.sh" ]; then
|
||||
MODDIR="${0%/*}"
|
||||
operate="backup"
|
||||
conf_path="${0%/*}/backup_settings.conf"
|
||||
Update_backup=""
|
||||
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
|
||||
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
|
||||
0)
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;;
|
||||
1)
|
||||
{
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||
} & ;;
|
||||
esac
|
||||
else
|
||||
echo "${0%/*}/tools/tools.sh遺失"
|
||||
fi
|
||||
18
備份自定義資料夾.sh
18
備份自定義資料夾.sh
@@ -1,18 +0,0 @@
|
||||
[ "$(echo "${0%/*}" | grep -o 'bin.mt.plus/temp')" != "" ] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2
|
||||
if [ -f "${0%/*}/tools/tools.sh" ]; then
|
||||
MODDIR="${0%/*}"
|
||||
operate="backup_media"
|
||||
conf_path="${0%/*}/backup_settings.conf"
|
||||
Update_backup=""
|
||||
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
|
||||
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
|
||||
0)
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;;
|
||||
1)
|
||||
{
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||
} & ;;
|
||||
esac
|
||||
else
|
||||
echo "${0%/*}/tools/tools.sh遺失"
|
||||
fi
|
||||
18
生成應用列表.sh
18
生成應用列表.sh
@@ -1,18 +0,0 @@
|
||||
[ "$(echo "${0%/*}" | grep -o 'bin.mt.plus/temp')" != "" ] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2
|
||||
if [ -f "${0%/*}/tools/tools.sh" ]; then
|
||||
MODDIR="${0%/*}"
|
||||
operate="Getlist"
|
||||
conf_path="${0%/*}/backup_settings.conf"
|
||||
Update_backup=""
|
||||
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
|
||||
case $(grep -o 'background_execution=.*' "$conf_path" | awk -F '=' '{print $2}') in
|
||||
0)
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt" ;;
|
||||
1)
|
||||
{
|
||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log.txt"
|
||||
} & ;;
|
||||
esac
|
||||
else
|
||||
echo "${0%/*}/tools/tools.sh遺失"
|
||||
fi
|
||||
12
終止腳本.sh
12
終止腳本.sh
@@ -1,12 +0,0 @@
|
||||
if [ -f "${0%/*}/tools/tools.sh" ]; then
|
||||
MODDIR="${0%/*}"
|
||||
operate="kill_script"
|
||||
conf_path="${0%/*}/backup_settings.conf"
|
||||
. "$MODDIR/tools/tools.sh"
|
||||
echoRgb "等待腳本停止中,請稍後....."
|
||||
kill_Serve && echoRgb "腳本終止"
|
||||
exit
|
||||
else
|
||||
[[ $(echo "${0%/*}" | grep -o 'bin.mt.plus/temp') != "" ]] && echo "你媽沒告訴你腳本要解壓縮嗎?傻逼玩兒" && exit 2
|
||||
echo "${0%/*}/tools/tools.sh遺失"
|
||||
fi
|
||||
Reference in New Issue
Block a user