跨大版本更新后崩溃——清数据 + 删两个目录 + 重激活
什么情况
从 1.0.x 直接跳到 1.1.x+(或更大跨度)更新后,JsHook App 打开就闪退或根本打不开。
根因是大版本变更可能涉及运行时文件格式变化、守护进程协议变更、或内核驱动不兼容——旧的激活产物和新版本对不上。
标准恢复流程
第一步:确认备份
操作前确认:
- 脚本文件(在手机 JsHook 脚本存储目录里)
- 订阅列表(自建仓库 URL 你应该记得)
清数据和删目录会丢失 JsHook 应用内的所有配置和激活产物。脚本如果在应用内部存储里,清数据也会删。
第二步:清 JsHook 应用数据
- 方法一:Android 设置 → 应用 → JsHook → 存储 → 清除数据
- 方法二:adb
adb shell pm clear me.jsonet.jshook - 方法三:MT 管理器里手动删
/data/data/me.jsonet.jshook/整个目录
第三步:手动删激活产物
用 MT 管理器或终端(需要 root)删两个目录:
# 删系统级配置
su
rm -rf /data/system/jshook
# 删运行时文件、内核驱动、守护进程
rm -rf /data/adb/jshook
这两个目录是 JsHook 激活时自动创建的。App 本身的清数据不会删它们——必须手动删才能确保干净。
第四步:安装新版本 APK
正常覆盖安装新版 APK 就行。之前清数据了,所以旧版本残留不会影响。
第五步:重新激活
打开新版 JsHook → 点激活 → 给 root 授权 → 等部署完成。激活成功后首页显示 Activated + Daemon 进程。
第六步:恢复脚本和订阅
从备份里把脚本复制回 JsHook 脚本存储目录,重新订阅仓库。
跨小版本一般没事
小版本更新(如 1.3.0 → 1.3.1 → 1.3.2)一般直接覆盖安装就行,不用清数据。跨大版本(1.0.x → 1.1.x → 1.2.x)才可能崩。
日常更新尽量小步走,一次跳一个小版本,出问题概率最小。
如果恢复后还是崩
- 确认 APK 包名是
me.jsonet.jshook(不是仿冒包) - 试试恢复旧版本 APK(如果之前备份了)
- 检查 SELinux 是不是 Enforcing(
getenforce输出 Enforcing 的话先setenforce 0) - 换设备/虚拟环境试试
预防措施
每次大版本更新前:
- 先把脚本从手机复制到电脑备份
- 订阅列表记下来(仓库 JSON URL)
- 确认当前版本号(
runtime.coreVersionCode或设置里看) - 小版本跳升级(1.0.5 → 1.1.0 → 1.1.5 → ...),观察每个小版本是否正常后再往下跳
避免从 1.0.0 直接跳到最新的 1.x.x——中间跳的版本越多,兼容性破坏的概率越高。