Skip to content

Commit f8f9e50

Browse files
committed
scripts/service: write app list to app_list.json.tmp before renaming
ensure app_list.json is always a complete list
1 parent ff45c96 commit f8f9e50

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

module/service.sh

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
MODDIR="/data/adb/modules/system_app_nuker"
22
PERSIST_DIR="/data/adb/system_app_nuker"
33
APP_LIST="$PERSIST_DIR/app_list.json"
4+
APP_LIST_TMP="$PERSIST_DIR/app_list.json.tmp"
45
REMOVE_LIST="$PERSIST_DIR/nuke_list.json"
56
ICON_DIR="$PERSIST_DIR/icons"
67

@@ -17,14 +18,14 @@ aapt() { "$MODDIR/common/aapt" "$@"; }
1718

1819
# create applist cache
1920
create_applist() {
20-
echo "[" > "$APP_LIST"
21+
echo "[" > "$APP_LIST_TMP"
2122

2223
system_app_path="/system/app /system/priv-app /vendor/app /product/app /product/priv-app /system_ext/app /system_ext/priv-app"
2324
[ "$use_mountify_script" = true ] && [ -d "/my_bigball" ] && system_app_path="$system_app_path /my_bigball"
2425
for path in $system_app_path; do
2526
find "$path" -maxdepth 2 -type f -name "*.apk" | while read APK_PATH; do
2627
# skip if already on app list
27-
if grep -q "$APK_PATH" "$APP_LIST"; then
28+
if grep -q "$APK_PATH" "$APP_LIST_TMP"; then
2829
continue
2930
fi
3031

@@ -41,7 +42,7 @@ create_applist() {
4142
APP_NAME=$(aapt dump badging "$APK_PATH" 2>/dev/null | grep "application-label:" | sed "s/application-label://g; s/'//g")
4243
[ -z "$APP_NAME" ] && APP_NAME="$PACKAGE_NAME"
4344

44-
echo " {\"app_name\": \"$APP_NAME\", \"package_name\": \"$PACKAGE_NAME\", \"app_path\": \"$APK_PATH\"}," >> "$APP_LIST"
45+
echo " {\"app_name\": \"$APP_NAME\", \"package_name\": \"$PACKAGE_NAME\", \"app_path\": \"$APK_PATH\"}," >> "$APP_LIST_TMP"
4546

4647
ICON_PATH=$(aapt dump badging "$APK_PATH" 2>/dev/null | grep "application:" | awk -F "icon=" '{print $2}' | sed "s/'//g")
4748
# Extract the icon if it exists
@@ -55,19 +56,21 @@ create_applist() {
5556

5657
# Fallback for no package name found
5758
for package_name in $(pm list packages -s | sed 's/package://g'); do
58-
if grep -q "\"$package_name\"" "$APP_LIST"; then
59+
if grep -q "\"$package_name\"" "$APP_LIST_TMP"; then
5960
continue
6061
fi
6162
APP_NAME=$(aapt dump badging "$package_name" 2>/dev/null | grep "application-label:" | sed "s/application-label://g; s/'//g")
6263
[ -z "$APP_NAME" ] && APP_NAME="$package_name"
6364

6465
APK_PATH=$(pm path $package_name | sed 's/package://g')
6566
echo "$APK_PATH" | grep -qE "/system/app|/system/priv-app|/vendor/app|/product/app|/product/priv-app|/system_ext/app|/system_ext/priv-app" || continue
66-
echo " {\"app_name\": \"$APP_NAME\", \"package_name\": \"$package_name\", \"app_path\": \"$APK_PATH\"}, " >> "$APP_LIST"
67+
echo " {\"app_name\": \"$APP_NAME\", \"package_name\": \"$package_name\", \"app_path\": \"$APK_PATH\"}, " >> "$APP_LIST_TMP"
6768
done
6869

69-
sed -i '$ s/,$//' "$APP_LIST"
70-
echo "]" >> "$APP_LIST"
70+
sed -i '$ s/,$//' "$APP_LIST_TMP"
71+
echo "]" >> "$APP_LIST_TMP"
72+
73+
mv -f "$APP_LIST_TMP" "$APP_LIST"
7174
}
7275

7376
# === MAIN SCRIPT ===

0 commit comments

Comments
 (0)