Skip to content

Releases

eSIM-Matrix v1.4.7 — 虚拟定位与代理独立控制台 + 定位远程通道

Choose a tag to compare

@hg552 hg552 released this 09 Nov 03:07

🆕 eSIM-Matrix v1.4.7 (build 147)

这一版把虚拟定位和代理从"切卡流程的附属品"变成了两个能独立使用的工具,并给虚拟定位补上了远程通道。


🧭 两个独立控制台(不需要写卡)

底部标签栏新增 虚拟定位 与 代理,管理页顶栏也有入口。

虚拟定位

区块 内容
状态 注入状态、当前坐标、生效通道(真实注册的测试 Provider)、双通道权限
通道 系统模拟位置 / Shizuku 注入,可切换
注入 一键注入 / 停止注入
地点 常用模板(可搜索、可删自定义)/ 手动经纬度(带范围校验、可存模板)
联动 切卡时自动注入对应国家定位

代理控制台

控制器地址 / Secret / 策略组 → 策略组下拉 → 当前节点 → 节点列表(类型徽章、延迟徽章、单点测速、全部测速、切换)→ 自动化开关。控制器不可达时降级为提示,不抛异常。


📡 虚拟定位可以远程操作了

之前代理有完整的 HTTP + Telegram 通道,定位一条都没有。

GET    /api/v1/location      状态(注入中、坐标、通道、权限)
POST   /api/v1/location      { latitude, longitude, label?, mode? }
DELETE /api/v1/location      停止

Telegram:

/location                        状态 + 用法
/location 22.3193 114.1694 香港尖沙咀
/location 22.3193,114.1694       逗号也认
/location_stop                   停止

Web 面板新增「虚拟定位」卡片与顶部状态胶囊;纯文本 /status 也会显示 📍 虚拟定位:🟢 正在注入【香港尖沙咀】 (22.3193, 114.1694)。

注入失败会如实返回 409 {success:false, error:"injection_failed"},不会用 200 让人以为位置变了。


🔒 注入不再随时消失

新增前台服务:注入期间进程被系统保活,通知栏显示当前虚拟位置,并带一个「停止定位」按钮。

此前注入只是内存里每秒推一次,进程被回收后定位会静默失效,而界面还写着「🟢 正在注入」——这是谎报。


🎯 修掉会误导人的地方

问题 修复
代理节点列表把 PASS、REJECT-DROP 和组外节点一起列出,点了被控制器拒绝 只显示当前策略组的成员,标题写明组名与数量
没有任何测试 Provider 注册成功时仍报「注入成功」 如实返回失败,并把 Provider 列表回传给界面
Shizuku 模式每秒 fork 一次 cmd location 进程 改为 5 秒节流
控制台每次打开都跳回第一个内置模板 记住上次注入的坐标
「全部测速」串行,7 个节点最坏 35 秒 并发 4 路
联动开关在三个页面各有一份,互不同步 只保留在各自控制台,并监听设置变化

🧹 短信转发页精简

  • 删掉与代理控制台重复的三个输入框和两个测试按钮,换成两个跳转按钮;
  • 6 个开关改为即时保存(原来改了不点保存等于没改);
  • 历史记录、远程下卡/切卡/删卡、切卡自动化三张卡片默认折叠,页面从 5 屏回到 1 屏。

✅ 验证

检查 结果
dart analyze lib test No issues found
全量测试 984 项全部通过
实机(25102RKBEC / Android 16) 注入后 dumpsys location 确认 network/fused provider 均为 mock 坐标;停止后消失
实机代理 连上 FlClash v1.19.33,切节点后控制器 now 同步变化,测速返回真实新值
三证书 v2 签名 ESTK C47350… + 9eSIM D1C0F4… + SakuraSIM 65D057… 全部匹配

📦 安装说明

  • APK:eSIM-Matrix-v1.4.7.apk(arm64-v8a),可直接覆盖升级并保留全部数据。
  • 已安装 1.4.6 及更早版本的用户会通过应用内更新检查收到本次更新。
  • 虚拟定位的两种通道:系统模拟位置需在「开发者选项 → 选择模拟位置信息应用」中选择本应用;Shizuku 模式需启动并授权 Shizuku。

eSIM-Matrix v1.4.6 — 读卡自动复位与更准确的失败提示

Choose a tag to compare

@hg552 hg552 released this 08 Nov 16:00

🆕 eSIM-Matrix v1.4.6 (build 146)

🩺 读卡自动复位(不用再重启手机)

背景:卡片的逻辑通道若被「中途被杀掉的进程」留在半开状态,之后所有 SELECT 都会被拒,界面显示「不支持该卡」。此前的恢复手段只有「关闭全部通道后重试一次」,对半开会话无效——只有重启手机才能恢复。

本次改动(lib/adapter/omapi/omapi_adapter.dart):

  1. 关通道重试仍失败时,再升级一步:断开会话 → 重新连接 → 重新开通道(等效于重启对这张卡做的事,但只需 1~2 秒);
  2. 该升级带 10 秒冷却,避免连续失败时反复抖动;
  3. ARA-M 明确拒绝时不重试——那是权限问题,重连没有意义,仍然直接报权限错误;
  4. 成功后写日志 openChannel for <AID> recovered after a session reset,便于排查。

💬 读卡失败提示更准确

原来的文案只说「此卡可能不是有效的 eUICC」,会让人误判卡坏了。现在改为:

找不到 eUICC 管理应用程序 (ISD-R)。此卡可能不是 eUICC;若刚崩溃、切卡中途退出或被其他程序占用,请切一次飞行模式或重启手机后再试。

(英文与繁体中文同步更新)

✅ 验证

检查 结果
dart analyze lib test No issues found
test/services + test/pages 242 项全部通过
更新源选择测试 5 项通过(指向 1.4.6 / build 146)
沙箱构建 + 三证书签名 成功,62.5 MB

📦 安装说明

  • APK 文件:eSIM-Matrix-v1.4.6.apk(arm64-v8a,三证书 v2 签名:ESTK C47350... + 9eSIM D1C0F4... + SakuraSIM 65D057...),可直接覆盖升级并保留全部数据。
  • 已安装 1.4.4 / 1.4.5 的用户会通过应用内更新检查收到本次修复。

eSIM-Matrix v1.4.5 — 修复网络状态页偶发空白

Choose a tag to compare

@hg552 hg552 released this 08 Nov 15:32

🆕 eSIM-Matrix v1.4.5 (build 145)

🐞 修复:「网络状态」偶发空白,必须清后台重开

现象:进入「网络状态」页有时不显示任何数据,切走再切回无效,只能杀进程重进。

根因(不是网卡、不是权限):

页面在订阅事件流之后同一帧就调用 refresh()。此时平台侧的 onListen 可能还没送达,插件的处理是:

if (eventSink == null) {
    result.error("not_listening", ...)   // ← 直接报错返回
    return
}

页面收到 not_listening 后进入错误态,且没有任何重试;而 startMonitoring() 的首帧 publish() 又可能早于 Dart 侧真正挂上监听,于是这一页就永远停在空白,直到进程重启。

修复:

  • refresh 不再因为订阅尚未就绪而报错:它会主动启动监听,并直接回传实时快照;
  • 新增 snapshot 方法,作为一次性的兜底读取;
  • 页面拿到返回值即渲染,若调用仍失败则静默重试一次(400 ms)。

✅ 验证

检查 结果
冷启动后立即点开「网络状态」 无 not_listening、无 E flutter
新增单元测试(refresh/snapshot 契约) 3 项通过
dart analyze lib test No issues found
全量 test/services + test/pages 243 项通过

📦 安装说明

  • APK 文件:eSIM-Matrix-v1.4.5.apk(arm64-v8a,与旧版相同的三证书 v2 签名:ESTK C47350... + 9eSIM D1C0F4... + SakuraSIM 65D057...),可直接覆盖升级并保留全部数据。
  • 已安装 1.4.4 的用户会通过应用内更新检查收到本次修复。

eSIM-Matrix v1.4.4 — 修复 QRTR 读卡器 JNI 符号错位

Choose a tag to compare

@hg552 hg552 released this 08 Nov 13:16

🆕 eSIM-Matrix v1.4.4 (build 144)

🐞 关键修复:QRTR 读卡器完全不可用

改包名后,Rust 侧 5 个 JNI 导出函数仍按上游包名注册,导致 QrtrUserService 的原生方法一个都找不到:

E JavaBinder: java.lang.UnsatisfiedLinkError: No implementation found for
  int io.github.hg552.esimmatrix.QrtrUserService.nativeOpenBus()
E AndroidRuntime: FATAL EXCEPTION: binder:17562_1
  • 根因:rust/src/qrtr_bus.rs 中 nativeOpenBus / nativeBusNode / nativeSend / nativeReceive / nativeCloseBus 的符号名仍是 Java_ee_nekoko_nlpa2_QrtrUserService_*,而 Kotlin 类已迁至 io.github.hg552.esimmatrix.QrtrUserService。
  • 实际影响:
    • QRTR 通道彻底失效——在 Qualcomm 机型上,这是 ROM 未把卡槽暴露给应用 OMAPI 时的主要兜底读卡路径;
    • 每次探测都让 shell 用户的服务进程抛 FATAL EXCEPTION 并被重启,实测约每秒一次,持续刷日志、空耗 CPU。
  • 修复:5 个符号全部改为 Java_io_github_hg552_esimmatrix_QrtrUserService_*,与当前包名一致。

✅ 实机验证(Redmi 25102RKBEC / SM8850 / Android 16 / HyperOS V816 / KernelSU)

检查项 结果
安装与启动 1.4.4 (144) 覆盖安装成功,进程稳定无崩溃
Root / Shizuku KernelSU uid=0 正常;Shizuku 服务常驻
eUICC 读取 omapi:SIM2 正常,卡内 4 个 Profile 全部枚举
QRTR 原生符号 修复后不再出现 UnsatisfiedLinkError,服务进程不再反复崩溃

📦 安装说明

  • APK 文件:eSIM-Matrix-v1.4.4.apk(arm64-v8a,与旧版相同的三证书 v2 签名:ESTK C47350... + 9eSIM D1C0F4... + SakuraSIM 65D057...,可直接覆盖升级并保留全部数据)。
  • 已安装 1.4.3 的用户会通过应用内更新检查收到本次修复。

eSIM-Matrix v1.4.3 — APDU大写规范化与基带搜网加速保底

Choose a tag to compare

@hg552 hg552 released this 08 Nov 12:50

🆕 eSIM-Matrix v1.4.3 (build 143)

🚀 APDU 大写规范化(规避冷门基带 Modem 异常)

  • 零拷贝高性能 Hex 编码器:新增 HexUtils.bytesToHexUpper,直接在字节级直写大写十六进制字符,消除二次堆内存分配开销。
  • 底层通信通道全链路大写:
    • TelephonyAdapter、OmapiAdapter、NBridgeAdapter、AdbBridgeAdapter、RemoCardAdapter、CcidAdapter、SimLinkAdapter 全面升级为发送大写十六进制 APDU;
    • Android Kotlin 原生插件(TelephonyPlugin.kt、OmapiPlugin.kt、AdbBridgeServer.kt)的 ByteArray.toHex() 统一修正为 "%02X",彻底杜绝部分 Unisoc(紫光展锐)或老旧高通 Modem 固件拒收小写 Hex 报 ERROR 的隐形兼容性缺陷。

⚡ 基带漫游搜网加速保底机制(Kick Fallback)

  • 状态机自动超时踢网保底:切卡进入 waiting_for_service 状态后,异步定时器持续监测搜网耗时;若跨国漫游基站握手超过 25 秒 仍未注册基站,状态机全自动触发一次基带射频快速刷新(无感飞行模式瞬切),强制基带对物理 SIM 芯片重新发起握手与位置更新(Location Update),大幅缩短冷启动搜网时间。
  • 一键快捷加速控制:
    • Telegram Bot:新增 /kick 指令;在切卡等待提示中新增 [ ⚡ 刷新基带搜网 ] 内联快捷按钮,随时一键强制让基带重新握手;
    • REST API:开放 POST /api/v1/network/kick 接口供 Web 仪表盘和自动化脚本远程调用;
    • 非特权/特权自适应:具备 Root/KernelSU 时执行无感射频重启,无 Root 环境自动降级调用 TelephonyManager.requestCellInfoUpdate 强行激活 RIL 小区全量重扫。

🛠️ 持续集成与稳定性修复

  • GitHub Actions 工作流修复:修复各 CI/CD 工作流硬编码 master 分支导致的 checkout 失败问题,全部修正为默认 main 分支。
  • 全局液态玻璃(Liquid Glass)UI:全应用 24 个界面、导航栏、读卡器下拉菜单、核心卡片与各类弹窗支持高斯模糊与极光透射。

📦 安装说明

  • APK 文件:eSIM-Matrix-v1.4.3.apk(arm64-v8a,使用与旧版相同的三证书 v2 签名,包含 ESTK C47350... + 9eSIM D1C0F4... + SakuraSIM 65D057...,支持无缝覆盖安装且保留所有数据)。

eSIM-Matrix v1.4.2 — 液态玻璃视觉升级与全栈稳定性修复

Choose a tag to compare

@hg552 hg552 released this 07 Nov 17:30

🆕 eSIM-Matrix v1.4.2 (build 142)

✨ 视觉与交互升级

  • 液态玻璃(Liquid Glass)视觉模式:在「设置 → 显示设置」中新增液态玻璃开关,首页 Profile 卡片、弹窗与预览页面支持高斯模糊、菲涅尔亮边与深色极光背景底板,关闭开关时保持零开销原样渲染。
  • Telegram 社区交流群入口:README 新增官方 Telegram 交流群徽标与链接。

🛠️ 核心网关与 3D 异构环境联动修复

  • 流量卫士(Data Guard)特权 API 修复:修复 CellularDataGuardianPlugin 反射调用隐藏 TelephonyManager.setDataEnabled / setDataRoamingEnabled 时将标量误传为 IntArray / BooleanArray 的问题,现在切卡时可正常通过特权 API 关闭目标卡移动数据与数据漫游。
  • 虚拟定位(Mock Location)主线程 ANR 修复:将 MockLocationPlugin 中所有 Shizuku 进程调用移至带 3 秒超时与强杀保护的独立后台单线程,彻底消除每秒刷新位置时的 UI 主线程阻塞;停止虚拟定位时同步清理 gps、network、fused 三个 test provider。
  • 切卡联动触发与失败回滚补全:
    • 修复仅开启「虚拟定位联动」而未开启「Clash 代理联动」时切卡不触发虚拟定位的问题;
    • 切卡异常失败进入回滚分支时,同步恢复已提前切换的 Clash 代理节点与虚拟定位;
    • 切换 Clash 目标策略组时自动刷新还原快照,并在 ProxyLinkageService 中复用单例 HttpClient 防止句柄泄漏。
  • 定时保号(Keep-Alive)防饿死与准确计时:runKeepAliveNow 仅在实际切卡成功后才更新 lastRunEpochMillis(冷却锁或读卡异常不再白白跳过一个保号周期);后台轮询单条失效规则报错时继续扫描后续规则,不再阻塞整张保号表。
  • 远程下卡(/download)防抢占主卡:网关远程下载安装新 Profile 后不再强行自动启用新卡把当前常驻主卡踢下线;全程包裹 runExclusive 互斥锁。
  • 卡资源缓存独立过期时钟:拆分 listProfiles(10s)与 getCardResourceInfo(30s)的缓存时间戳,修复 EID 与剩余 NVRAM 空间缓存永不过期的问题。

🔌 底层读卡器、协议与短信转发加固

  • 无头后台引擎 Telephony 可用性修复:TelephonyPlugin 在 onAttachedToEngine 阶段即初始化后台线程与 TelephonyManager,修复后台无 Activity 时所有调用报错的问题,并修复 simStateReceiver 与 OmapiPlugin EventChannel 流处理器泄漏。
  • ISO 7816-4 APDU 严格分型解析:修复 BaseAdapter.sendApdu、TelephonyPlugin 与 OTBridge 中对 Case 2/3/4 APDU 的切片逻辑——不再因 Case 3 数据末尾为 0x00 而误删字节,也不再将 Case 4 末尾的 Le 字节拼入数据载荷。
  • USB CCID 与 BLE 读卡器修复:
    • 修复 Ccid.kt 在读卡器返回按端点最大包长补齐的短响应(如 90 00)时触发 ArrayIndexOutOfBoundsException 崩溃的问题;
    • 放行仅支持 T=1 协议的 USB CCID 读卡器;
    • 修复 SimLinkAdapter 与 RedBle2Adapter 将硬件报错当作空成功响应返回导致上层 RangeError 的问题,并支持跨 BLE 分包的 UTF-8 字符解码;
    • 修复 BeeSimAdapter.openChannel 忽略调用方自定义 AID 列表的问题。
  • 短信转发与解码修复:
    • 修复 VoWiFi 7-bit 拼接长短信(带 UDH 头)未对齐到下一 septet 边界导致全篇字符偏移 1 bit 乱码的问题,并防御截断的 UDH 头;
    • SmsRelayReceiver 线程池满时改为 AbortPolicy,防止静默丢弃任务导致 WakeLock 泄漏及短信状态永久卡在 pending;
    • RemoteGatewayForegroundService 在 ContentObserver 注册受阻重试时替换而非叠加 3 秒轮询任务;
    • 修复 Cloudflare Worker 转发模式在历史记录中被误显示为 Telegram 模式的问题;
    • 修复 decodeBcd 在遇到双 nibble 0xFF 填充时残留末尾 'f' 的问题,以及 SimpleAsn1Reader 对截断 TLV 报文和折叠多字节 Tag 重编码的处理。

📦 安装说明

  • APK 文件:eSIM-Matrix-v1.4.2.apk(arm64-v8a,使用与 v1.4.0 / v1.4.1 相同的三证书 v2 签名,可直接覆盖升级并完整保留数据)。

eSIM-Matrix v1.4.1 — 读卡器扫描不再静默失败

Choose a tag to compare

@hg552 hg552 released this 07 Nov 02:55

eSIM-Matrix v1.4.1 — 读卡器扫描不再静默失败

本次更新只解决一件事:当某个读卡通道返回 0 个读卡器时,App 必须说清楚为什么,而不是只显示 0 reader(s) 让人误判成 ROM 坏掉。

🔍 扫描明细里的明确原因

通道 之前 现在
QRTR 0 reader(s) 非高通机型直接点名 SoC:no QRTR bus on MediaTek MT6769Z: QRTR is a Qualcomm-only modem bus,并列出替代方案
QRTR 只区分 Shizuku 有没有跑 再区分「Shizuku 已运行但本应用未授权」
SE HAL 0 reader(s) 区分:Shizuku 未运行 / 已运行未授权 / ROM 未发布 android.hardware.secure_element / 已授权但没列出卡槽
Built-in OMAPI native readers: [] 追加:该 ROM 未把卡槽暴露给应用 OMAPI,改用 SE HAL / OTBridge / 外接读卡器

🧭 新增机型信息探针

platformInfo 现在上报:ro.hardware、SOC_MANUFACTURER、SOC_MODEL、android.hardware.secure_element、android.hardware.se.omapi.uicc。诊断报告据此按芯片给结论,不再靠猜。

📦 安装信息

  • 包名(applicationId):io.github.hg552.esimmatrix.multi(与 v1.4.0 相同,可直接覆盖升级)
  • 三证书合一:ESTK C47350... + 9eSIM D1C0F4... + SakuraSIM 65D057...
  • 升级后请在 Shizuku 里确认为新包名授权(Shizuku 授权按包名记录)

🔗 链接

eSIM-Matrix v1.4.0 — 3D 异构海外环境联动

Choose a tag to compare

@hg552 hg552 released this 06 Nov 17:15

eSIM-Matrix v1.4.0 — 全新品牌与 3D 异构海外环境联动

本次发布是项目全面重塑:eUICC-Nexus 正式更名为 eSIM-Matrix,应用名、Web 控制台与 Telegram 主控台全部焕新。

📦 安装包特性

  • 三证书合一:单个 APK 同时内置 ESTK(C47350...)、9eSIM(D1C0F4...)、SakuraSIM(65D057...)三套 ARA-M 出厂证书,插卡即用,无需电脑读卡器写规则。
  • 包名(applicationId):io.github.hg552.esimmatrix.multi(全新独立包名,与原版 NekokoLPA 2 完全隔离,可同机共存)。

✨ 3D 异构海外环境联动

  • 维度一 · SIM 身份与物理基带:秒级 Profile 热切换、5 分钟临时接卡自动回滚、CS 语音域 + PS 数据域双域搜网状态机。
  • 维度二 · 代理节点联动:FlClash / Mihomo / sing-box 外部控制器联动,支持 ICCID 专属绑定与国家 Emoji/ISO/区号智能推导;内置漫游流量卫士(Data Guard)锁死蜂窝,切回主卡自动快照还原。
  • 维度三 · 虚拟定位联动:内置 17 个全球重点城市地标模板,并支持手动输入任意经纬度、保存为常用模板、按卡片定向绑定;切卡激活时即时注入,切回主卡自动复原。

🛠️ 其它

  • eUICC 芯片闪存自洁:切卡稳定后静默秒清 Enable/Disable 通知,杜绝 NVRAM 写满与 TRANSMIT_FAILED。
  • 全面加入 LINUX DO 社区友链与开源致谢。

🔗 链接