From b81d95d31f5abf7eb6a0e99f2d9e03cfbaa6906d Mon Sep 17 00:00:00 2001 From: KOWX712 Date: Fri, 7 Feb 2025 10:55:54 +0800 Subject: [PATCH] script opt --- .gitattributes | 3 ++- module/action.sh | 18 +++++++++--------- module/common/get_extra.sh | 32 ++++++++++++++++++++------------ module/service.sh | 21 +++++++++++++++------ 4 files changed, 46 insertions(+), 28 deletions(-) diff --git a/.gitattributes b/.gitattributes index a2cd5d0..bbabc8d 100755 --- a/.gitattributes +++ b/.gitattributes @@ -3,8 +3,9 @@ *.prop text eol=lf *.md text eol=lf *.xml text eol=lf +*.json text eol=lf +.extra text eol=lf META-INF/** text eol=lf # Denote all files that are truly binary and should not be modified. -common/addon/**/tools/** binary module/bin/**/** binary \ No newline at end of file diff --git a/module/action.sh b/module/action.sh index 09e9cdb..566944b 100644 --- a/module/action.sh +++ b/module/action.sh @@ -14,22 +14,22 @@ abort() { } download() { - local type=${1#--} - local url=$2 - local output=$3 + download_type=${1#--} + download_url=$2 + download_output=$3 PATH=/data/adb/magisk:/data/data/com.termux/files/usr/bin:$PATH if command -v curl >/dev/null 2>&1; then - if [ "$type" = "output" ]; then - timeout 10 curl -Lo "$output" "$url" + if [ "$download_type" = "output" ]; then + timeout 10 curl -Lo "$download_output" "$download_url" else - timeout 2 curl -s "$url" + timeout 2 curl -s "$download_url" fi else - if [ "$type" = "output" ]; then - timeout 10 busybox wget --no-check-certificate -qO "$output" "$url" + if [ "$download_type" = "output" ]; then + timeout 10 busybox wget --no-check-certificate -qO "$download_output" "$download_url" else - timeout 2 busybox wget --no-check-certificate -qO- "$url" + timeout 2 busybox wget --no-check-certificate -qO- "$download_url" fi fi PATH="$ORG_PATH" diff --git a/module/common/get_extra.sh b/module/common/get_extra.sh index def48e4..699458c 100644 --- a/module/common/get_extra.sh +++ b/module/common/get_extra.sh @@ -5,28 +5,35 @@ SKIPLIST="$MODPATH/tmp/skiplist" OUTPUT="$MODPATH/tmp/exclude-list" KBOUTPUT="$MODPATH/tmp/.extra" +if [ "$MODPATH" = "/data/adb/modules/.TA_utl/common" ]; then + MODDIR="/data/adb/modules/.TA_utl" + MAGISK="true" +else + MODDIR="/data/adb/modules/TA_utl" +fi + aapt() { "$MODPATH/aapt" "$@"; } # probe for downloaders # wget = low pref, no ssl. # curl, has ssl on android, we use it if found download() { - local type=${1#--} - local url=$2 - local output=$3 + download_type=${1#--} + download_url=$2 + download_output=$3 PATH=/data/adb/ap/bin:/data/adb/ksu/bin:/data/adb/magisk:/data/data/com.termux/files/usr/bin:$PATH if command -v curl >/dev/null 2>&1; then - if [ "$type" = "output" ]; then - timeout 10 curl -Lo "$output" "$url" + if [ "$download_type" = "output" ]; then + timeout 10 curl -Lo "$download_output" "$download_url" else - timeout 3 curl -s "$url" + timeout 3 curl -s "$download_url" fi else - if [ "$type" = "output" ]; then - timeout 10 busybox wget --no-check-certificate -qO "$output" "$url" + if [ "$download_type" = "output" ]; then + timeout 10 busybox wget --no-check-certificate -qO "$download_output" "$download_url" else - timeout 3 busybox wget --no-check-certificate -qO- "$url" + timeout 3 busybox wget --no-check-certificate -qO- "$download_url" fi fi PATH="$ORG_PATH" @@ -57,11 +64,12 @@ get_unnecessary() { } check_update() { + [ -f "$MODDIR/disable" ] && rm -f "$MODDIR/disable" JSON=$(download --fetch "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json") || exit 1 REMOTE_VERSION=$(echo "$JSON" | grep -o '"versionCode": *[0-9]*' | awk -F: '{print $2}' | tr -d ' ') LOCAL_VERSION=$(grep -o 'versionCode=[0-9]*' "$MODPATH/update/module.prop" | awk -F= '{print $2}') if [ "$REMOTE_VERSION" -gt "$LOCAL_VERSION" ] && [ ! -f "/data/adb/modules/TA_utl/update" ]; then - if [ "$MODPATH" = "/data/adb/modules/.TA_utl/common" ]; then + if [ "$MAGISK" = "true" ]; then [ -d "/data/adb/modules/TA_utl" ] && rm -rf "/data/adb/modules/TA_utl" cp -rf "$MODPATH/update" "/data/adb/modules/TA_utl" else @@ -72,8 +80,7 @@ check_update() { } uninstall() { - if [ "$MODPATH" = "/data/adb/modules/.TA_utl/common" ]; then - [ -d "/data/adb/modules/TA_utl" ] && rm -rf "/data/adb/modules/TA_utl" + if [ "$MAGISK" = "true" ]; then cp -rf "$MODPATH/update" "/data/adb/modules/TA_utl" else cp -f "$MODPATH/update/module.prop" "/data/adb/modules/TA_utl/module.prop" @@ -99,6 +106,7 @@ install_update() { else exit 1 fi + rm -f "$MODPATH/tmp/module.zip" rm -f "$MODPATH/tmp/changelog.md" } diff --git a/module/service.sh b/module/service.sh index e4c315b..c08808b 100644 --- a/module/service.sh +++ b/module/service.sh @@ -73,32 +73,41 @@ fi # Optimization OUTPUT_APP="$MODPATH/common/tmp/applist" OUTPUT_SKIP="$MODPATH/common/tmp/skiplist" -OUTPUT_TMP="$MODPATH/common/tmp/tmp_applist" until [ "$(getprop sys.boot_completed)" = "1" ]; do sleep 1 done +# Create temporary directory mkdir -p "$MODPATH/common/tmp" -pm list packages -3 2>/dev/null | awk -F: '{print $2}' > "$OUTPUT_TMP" +# Additional system apps SYSTEM_APP="com.google.android.gms|com.google.android.gsf|com.android.vending" -pm list package -s | awk -F: '{print $2}' | grep -Ex "$SYSTEM_APP" >> "$OUTPUT_TMP" +# Initialize cache files to save app list and skip list echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_APP" echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_SKIP" -cat "$OUTPUT_TMP" | while read -r PACKAGE; do + +# Get list of third party apps and specific system apps, then cache app name +# Check Xposed module +{ + pm list packages -3 2>/dev/null + pm list package -s | grep -E "$SYSTEM_APP" +} | awk -F: '{print $2}' | while read -r PACKAGE; do + # Get APK path for the package APK_PATH=$(pm path "$PACKAGE" 2>/dev/null | grep "base.apk" | awk -F: '{print $2}' | tr -d '\r') [ -z "$APK_PATH" ] && APK_PATH=$(pm path "$PACKAGE" 2>/dev/null | grep ".apk" | awk -F: '{print $2}' | tr -d '\r') + if [ -n "$APK_PATH" ]; then + # Extract app name and save package info APP_NAME=$(aapt dump badging "$APK_PATH" 2>/dev/null | grep "application-label:" | sed "s/application-label://g; s/'//g") echo "app-name: $APP_NAME, package-name: $PACKAGE" >> "$OUTPUT_APP" else echo "app-name: Unknown App package-name: $PACKAGE" >> "$OUTPUT_APP" fi + + # Check if app is Xposed module and add to skip list if not if ! aapt dump xmltree "$APK_PATH" AndroidManifest.xml 2>/dev/null | grep -qE "xposed.category|xposeddescription"; then echo "$PACKAGE" >> "$OUTPUT_SKIP" fi done - -rm -f "$OUTPUT_TMP"