diff --git a/backup_settings.conf b/backup_settings.conf index 8dc0f5b..e154f89 100644 --- a/backup_settings.conf +++ b/backup_settings.conf @@ -4,7 +4,7 @@ Lo=0 #備份時檢查資料夾是否存在已經卸載應用 有則音量鍵選擇刪除或是移動到恢復資料夾/被卸載的應用 -delete_folder=1 +delete_folder=0 #自定義備份目錄輸出位置 (忽略為空將默認腳本路徑中) Output_path= @@ -13,7 +13,7 @@ Output_path= toast_info=1 #自動更新腳本 -update=1 +update=1 #檢測到更新後的行為(1跳轉瀏覽器 0不跳轉瀏覽器,但是複製連結到剪裁版) update_behavior=1 diff --git a/tools/bin/bin.sh b/tools/bin/bin.sh index e42033c..d58b975 100644 --- a/tools/bin/bin.sh +++ b/tools/bin/bin.sh @@ -115,7 +115,7 @@ else fi export PATH="$filepath:$PATH" export TZ=Asia/Taipei -TMPDIR="/data/local/tmp/data_backup" +TMPDIR="/data/local/tmp" [[ ! -d $TMPDIR ]] && mkdir "$TMPDIR" if [[ $(which busybox) = "" ]]; then echoRgb "環境變量中沒有找到busybox 請在tools/bin內添加一個\narm64可用的busybox\n或是安裝搞機助手 scene或是Magisk busybox模塊...." "0" diff --git a/tools/bin/tools.sh b/tools/bin/tools.sh index d76cf06..bb3085e 100644 --- a/tools/bin/tools.sh +++ b/tools/bin/tools.sh @@ -85,13 +85,6 @@ else fi dns="8.8.8.8" [[ $(getprop ro.build.version.sdk) -lt 23 ]] && alias curl="curl -kL --dns-servers $dns$flag" || alias curl="curl -L --dns-servers $dns$flag" -json="$(curl "$Language" 2>/dev/null)" -if [[ $json != "" ]]; then - echoRgb "使用curl" -else - json="$(down -s -L "$Language" 2>/dev/null)" - [[ $json != "" ]] && echoRgb "使用down" -fi #效驗選填是否正確 Lo="$(echo "$Lo" | sed 's/true/1/g ; s/false/0/g')" isBoolean "$Lo" "Lo" && Lo="$nsx" @@ -102,6 +95,18 @@ else echoRgb "自動更新腳本?\n -音量上更新,下不更新" get_version "更新" "不更新" && update="$branch" fi +if [[ $update = true ]]; then + json="$(curl "$Language" 2>/dev/null)" + if [[ $json != "" ]]; then + echoRgb "使用curl" + else + json="$(down -s -L "$Language" 2>/dev/null)" + [[ $json != "" ]] && echoRgb "使用down" + fi + [[ $json = "" ]] && echoRgb "更新獲取失敗" "0" +else + echoRgb "自動更新被關閉" "0" +fi if [[ $json != "" ]]; then tag="$(echo "$json" | sed -r -n 's/.*"tag_name": *"(.*)".*/\1/p')" #echo "$json" | grep body|cut -f4 -d "\"" @@ -171,8 +176,6 @@ if [[ $json != "" ]]; then fi fi fi -else - echoRgb "更新獲取失敗" "0" fi Lo="$(echo "$Lo" | sed 's/true/1/g ; s/false/0/g')" backup_path() { @@ -245,6 +248,18 @@ partition_info() { lxj="$(echo "$Occupation_status" | awk '{print $2}' | sed 's/%//g')" [[ $lxj -ge 97 ]] && echoRgb "$hx空間不足,達到$lxj%" "0" && exit 2 } + +restore_permissions() { + if [[ -f $Backup_folder/permission ]]; then + echoRgb "恢復權限" + while read ; do + echo $REPLY + pm grant "$name2" "$REPLY" 2>/dev/null + done < "$Backup_folder/permission" + else + echoRgb "遺失\"${Backup_folder##*/}/permission\" 無法恢復權限" + fi +} Backup_apk() { #檢測apk狀態進行備份 stopscript @@ -258,6 +273,7 @@ Backup_apk() { let osj++ result=0 echoRgb "Apk版本無更新 跳過備份" "2" + Backup_permissions else case $name2 in com.google.android.youtube) @@ -297,6 +313,7 @@ Backup_apk() { ) echo_log "備份$apk_number個Apk" if [[ $result = 0 ]]; then + Backup_permissions if [[ $apk_version = "" ]]; then echo "apk_version=\"$apk_version2\"" >>"$app_details" else @@ -324,7 +341,7 @@ Backup_apk() { fi else let osj++ - echoRgb "$name不支持備份 需要使用vanced安裝" "0" && rm -rf "$Backup_folder" + echoRgb "$name1不支持備份 需要使用vanced安裝" "0" && rm -rf "$Backup_folder" fi fi [[ $name2 = bin.mt.plus && ! -f $Backup/$name1.apk ]] && cp -r "$apk_path" "$Backup/$name1.apk" @@ -533,6 +550,8 @@ disable_verify() { settings put global verifier_verify_adb_installs 0 2>/dev/null #禁用安裝包驗證 settings put global package_verifier_enable 0 2>/dev/null + #未知來源 + settings put secure install_non_market_apps 1 2>/dev/null #關閉play安全效驗 if [[ $(settings get global package_verifier_user_consent 2>/dev/null) != -1 ]]; then settings put global package_verifier_user_consent -1 2>/dev/null @@ -754,6 +773,19 @@ backup) [[ $filesha256 != $filesha256_1 ]] && cp -r "$bin_path/tools.sh" "$Backup/tools/bin/tools.sh" filesize="$(du -ks "$Backup" | awk '{print $1}')" Quantity=0 + if [[ -f /data/misc_de/$user/apexdata/com.android.permission/runtime-permissions.xml ]]; then + permission="/data/misc_de/$user/apexdata/com.android.permission/runtime-permissions.xml" + else + [[ -f /data/system/users/$user/runtime-permissions.xml ]] && permission="/data/system/users/$user/runtime-permissions.xml" + fi + if [[ $permission != "" ]]; then + Backup_permissions() { + sed -n "/$name2/,/\<\//p" "$permission" | grep -w 'granted=\"true\"' | grep -o 'android.permission.*[A-Z]'> "$Backup_folder/permission" + echo_log "權限備份" + } + else + Backup_permissions() { } + fi #開始循環$txt內的資料進行備份 #記錄開始時間 starttime1="$(date -u "+%s")" @@ -980,16 +1012,17 @@ Restore) fi fi fi - if [[ $No_backupdata = "" ]]; then - if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then + if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then + restore_permissions + if [[ $No_backupdata = "" ]]; then #停止應用 [[ $name2 != $Open_apps2 ]] && am force-stop "$name2" find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do Release_data "$REPLY" done - else - echoRgb "$name1沒有安裝無法恢復數據" "0" fi + else + [[ $No_backupdata = "" ]]&& echoRgb "$name1沒有安裝無法恢復數據" "0" fi endtime 2 "$name1恢複" "2" && echoRgb "完成$((i * 100 / r))%" "3" rgb_d="$rgb_a" @@ -1069,6 +1102,7 @@ Restore2) fi fi if [[ $(pm path --user "$user" "$name2" 2>/dev/null) != "" ]]; then + restore_permissions #停止應用 [[ $name2 != $Open_apps2 ]] && am force-stop "$name2" find "$Backup_folder" -maxdepth 1 ! -name "apk.*" -name "*.tar*" -type f 2>/dev/null | sort | while read; do