update_xhshook_db.sh 1.25 KB
#!/bin/bash
# update_xhshook_db.sh — 重装 xhshook APK 后更新 LSPosed modules_config.db
# 必须在 adb install --no-incremental 之后运行
set -e

ADB="${ADB:-$(dirname "$0")/../platform-tools/adb}"
if [ ! -f "$ADB" ]; then ADB=adb; fi

NEW_PATH=$($ADB shell 'pm path com.hermes.xhshook' | tr -d '\r' | sed 's/package://')
echo "New APK path: $NEW_PATH"

$ADB shell 'su -c "cp /data/adb/lspd/config/modules_config.db /data/local/tmp/mc_upd.db && chmod 644 /data/local/tmp/mc_upd.db"'
$ADB pull /data/local/tmp/mc_upd.db /tmp/mc_upd.db
sqlite3 /tmp/mc_upd.db "UPDATE modules SET apk_path='${NEW_PATH}' WHERE module_pkg_name='com.hermes.xhshook';"
# Use Python in-place UPDATE to preserve inode → triggers lspd FileObserver.
# (adb push / cp replaces the file, changing inode, which FileObserver misses.)
TERMUX_PY=/data/data/com.termux/files/usr/bin/python3
$ADB shell "su -c \"$TERMUX_PY -c \\\"
import sqlite3
db = sqlite3.connect('/data/adb/lspd/config/modules_config.db')
db.execute(\\\\\\\"UPDATE modules SET apk_path='${NEW_PATH}' WHERE module_pkg_name='com.hermes.xhshook'\\\\\\\")
db.execute('PRAGMA wal_checkpoint(TRUNCATE)')
db.commit()
db.close()
print('done')
\\\"\"" 2>&1
echo "DB updated in-place. Now: am force-stop com.xingin.xhs → open XHS manually."