Skip to content

Releases: Elysia-SHY/FakeGPS-next

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 11:05

FakeGPS-next 2.2.0:LSPosed 通道迁移至 Vector 框架,修复 HyperOS / Android 17 模块零派发。

签名密钥保持一致,可从历史版本直接覆盖升级。

主要改动:

  1. LSPosed 通道迁移至 JingMatrix Vector v2.2:官方 LSPosed 2.2.1 在 HyperOS 上仅注入 hyos_spawner / artd(Rust 运行时,无 ART/Java 回调),导致 handleLoadPackage 全设备零触发、模块形同未加载;迁移后系统框架与目标应用双侧正常注入。

  2. 系统框架定位注入在 HyperOS 真机恢复生效:system_server 侧 onReportLocation / acceptLocationChange / reportLocation 钩子正常触发,系统定位返回值与合成卫星状态可按模拟点输出(高德地图实测已跳到模拟点);地图 SDK 兼容层挂钩逻辑整理为 hookAmapLocationGetters。

  3. 坐标偏差修复:瞄准点改为 Pin 尖端投影(抽屉展开时偏差 >400m 已消除),热门城市常量修正为 GCJ-02 → WGS-84。

  4. 坐标系收敛为唯一实现 GeoTransform(WGS-84 / GCJ-02 / BD-09),纯函数、全量单测覆盖。

  5. 应用独立分流重构:移除全局 kill-switch、空规则清缓存、按方法记账可重试、IPackageManager 兜底,规则逻辑抽出为 TargetRuleResolver + 单测。

  6. 新增注入通道维度 AUTO / LSPOSED / PROVIDER 与 HookChannelStatus 状态判定,Provider 通道不发布 hook 配置以消除坐标残留。

  7. 构建升级支持 Android 16+ 16KB 页对齐(AGP 8.5.1 + Gradle 8.9)。

v2.1.2

Choose a tag to compare

@Elysia-SHY Elysia-SHY released this 16 Oct 14:48

FakeGPS-next 2.1.2:修复定位页 / 路线页毛玻璃全面失效 + 环境指纹真机定位优先。

签名密钥保持一致,可从历史版本直接覆盖升级。

主要改动:

  1. 修复定位页 / 路线页所有卡片与底部悬浮栏毛玻璃失效(严重):这两页此前没有可被 Haze 捕获的 Compose 源层(底层是 OSMDroid 原生 View),全部玻璃卡片静默退化为不透明色块,底部悬浮栏同样无模糊。现叠加 Compose 绘制的 Aurora 雾面源层(上下厚、中间薄,中央地图区保持干净),并让底部悬浮 Tab 栏接入页面内容源,全部恢复真实高斯模糊。

  2. 环境指纹实地采集默认直取真机真实物理定位,不再误填地图选定模拟点,无需再退回首页点击「恢复本机位置」。

  3. 采集弹窗内置「获取本机真实位置」实时校准与「一键停止模拟」。

  4. 在线更新回到 GitHub 单源(静态版本清单 + GitHub Releases API 多镜像容灾),下载后双重校验 SHA-256 与签名证书。


  • versionCode: 52
  • SHA-256: 4c557fd330ac81da912f7d12bd96cc13718494e1d698e0bb0ba7ad1732fe0aff

v1.6.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 20:01

基于设计规范 v1.7.0 的全量 UI 重构与真毛玻璃落地:

  1. 设计系统重标定:品牌色由 #007AFF 调整为 #2F7BFF,新增背景层级(bg1 / surface2 / surface3)、描边(line / lineSoft)与玻璃三件套(glassBg / glassLine / glassHighlight);圆角收敛为 66 / 36 / 32 / 24 / 22 / 16 / 13 / 9 阶梯,页面统一 IosPageHead 排版基准。

  2. 真毛玻璃落地:接入 Haze 1.0.0 GPU 高斯模糊(blur 30 / saturate 180%),底部 Tab 栏、地图浮层与滚动页卡片均具备真实背景折射。因 Haze 只能捕获 Compose 自绘内容,AndroidView 承载的原生地图改由不透明磨砂板兜底,彻底消除浮层穿模。

  3. 浅色主题补全:修复底部 Tab 栏与地图图钉提示条硬编码深色、不跟随系统明暗的问题,并同步修正浅色下未选中项与选中项的对比度不足。

  4. 工具链升级:Kotlin 1.9.22 → 2.0.21,Compose BOM 2024.02.00 → 2024.10.01,Hilt 2.50 → 2.52,新增 Haze 1.0.0 依赖。

本版与历代发布版本共用同一签名密钥,可直接覆盖安装。

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 03:48

P0 架构重构与性能深度优化:

  1. 消除 UI 阻塞:彻底移除 SimulationViewModel 中的 runBlocking,转为全异步协程与上下文切换,结合 Job 追踪避免快速点击导致的并发重入与 ANR。

  2. 消除高频序列化:MockLocationService 在 1 秒 tick 循环中仅写入轻量进度与速度(saveSimulationProgress),全量 Route 仅在启动时序列化一次,彻底消灭 GC 与 I/O 抖动。

  3. 会话隔离机制:引入 currentSessionId 管理模拟与单点定位会话,快速启停与变速 Seek 时丢弃陈旧数据包,杜绝竞态与坐标跳变。

  4. Provider 生命周期解耦:变速与 Seek 拖动不再重新注册 addTestProvider,仅平滑重启模拟流,消除系统位置提供商反复注册引发的广播冲击与漂移。

  5. 区分用户停止与系统回收:引入 userStopped 状态标记,当服务被系统 LMK 回收时完整保留恢复点,支持 START_STICKY 完美无感续跑。

本版与历代发布版本共用同一签名密钥,可直接覆盖安装。

v1.5.1

Choose a tag to compare

@github-actions github-actions released this 20 Sep 02:05

Root 模式权限链路重构与稳定性修复:

  1. 新增 PermissionCoordinator:把所有注入入口(地图选点页、虚拟定位页、路线页、摇杆服务)的注入前权限判定与自动授权统一收口,避免各页面各自判定产生行为分歧。

  2. 修复 Root 模式误弹「需设置模拟位置应用」:mock_location 应用 op 由 su 在外部进程写入,App 进程内 AppOpsManager 读取带缓存,授权后立刻校验会读到旧值而误判。现改为以 Root 授权命令的退出码为准直接放行,真正的兜底由注入时 MockLocationService.register(addTestProvider)把关。

  3. 授权命令健壮性:appops 与 settings put 分开执行、互不短路,并依次尝试 appops set / cmd appops set / appops set --uid 三种写法;settings put global development_settings_enabled 仅作尽力而为。

  4. 工程结构分层整理:core(data / designsystem / location)、feature(map / mock / route / settings)、ui(components / navigation / viewmodel)、hook、util。

  5. 免 Root 模式行为不变:完全不调用 su,仍由用户在【开发者选项】手动勾选模拟位置应用。防卡死逻辑不变:停止 / 销毁 / 任务划掉仍无条件 forceCleanAllTestProviders + flushRealLocation。

本版与 v1.4.7 共用同一签名密钥,可直接覆盖安装。

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 18:46

修复 Root 模式仍被「需设置模拟位置应用」弹窗挡住的问题(v1.4.8 未彻底解决):

  1. 根因定位:地图选点页与虚拟定位页各有一处独立的权限预检(MapScreen 的 ensurePermissionAndStart、LocationMockScreen 主控按钮),它们在调用 ViewModel 之前就自行判断权限并直接弹出引导对话框,v1.4.8 加到 ViewModel 里的自动授权根本没机会执行。

  2. 统一收口:SimulationViewModel 新增公开的 resolveInjectionPermission(context),先按当前注入模式决定是否自动授予模拟权限(Root 模式:appops 授予 android:mock_location + 开启全局开发者选项开关;免 Root 模式:不动),再返回权限校验结果。地图选点页与虚拟定位页的预检全部改为在协程中调用它,不再各自为政。

  3. Root 检测加固:RootSuBridge.isRootAvailable() 改为始终直接尝试 su -c id(不再因固定路径下找不到 su 二进制就短路判为无 root),且只缓存「确认有 root」的结论、不再把一次失败永久缓存。修复 KernelSU 等 su 不在固定路径的机型被误判为无 root、从而 Root 模式从不自动授权的问题。

  4. 免 Root 模式行为不变:完全不调用 su,仍由用户在【开发者选项】手动勾选模拟位置应用。防卡死逻辑不变:停止 / 销毁 / 任务划掉仍无条件 forceCleanAllTestProviders + flushRealLocation。

本版与 v1.4.8 共用同一签名密钥,可直接覆盖安装。

v1.4.7

Choose a tag to compare

@github-actions github-actions released this 18 Sep 13:54

新增「Root 注入模式」开关,将 Root 模式与免 Root 模式彻底分开:

  1. 设置页新增「Root 注入模式」总开关:开启(默认)= Root 模式,应用通过 su 自动授予 android:mock_location 应用 op、恢复硬件高精度定位;关闭 = 免 Root 模式,应用完全不调用 su,仅依赖用户在【开发者选项】中手动把本应用勾选为「模拟位置信息应用」,随后用应用进程 LocationManager.addTestProvider 注入。

  2. 免 Root 模式下,下列行为一律不触发 Root 命令:启动时不自动授予模拟权限、停止模拟时不再调用 restoreScanningHardware、微信排查板块的一键关闭蓝牙 / Wi-Fi 与背景扫描改为跳转系统设置手动关闭、Root 权限状态与一键恢复高精度定位入口均提示「免 Root 模式」。

  3. Root 模式下若 LSPosed 已激活,仍自动叠加 system_server 框架层抗检测增强;LSPosed 与模式开关正交,单独控制。

  4. 防卡死:无论哪种模式,停止模拟 / 服务销毁 / 任务划掉均无条件执行 forceCleanAllTestProviders + flushRealLocation,清掉所有测试 Provider 并冲刷真实硬件定位,杜绝系统定位停留在伪造坐标(沿用 v1.4.5 修复)。切到免 Root 模式时若此前 Root 曾关闭扫描,会立即 restoreScanningHardware 把硬件复原。

  5. 路线模拟页的 Root 专属高阶仿真入口随模式开关联动显隐。

本版与 v1.4.6 共用同一签名密钥,可直接覆盖安装。

v1.4.6

Choose a tag to compare

@github-actions github-actions released this 18 Sep 11:07

重做「微信/打卡软件仍显示真实位置」排查板块(虚拟定位页顶部横幅与弹窗):

  1. 板块职责收敛为只做 Root 功能:一键关闭蓝牙 / Wi-Fi 与背景扫描。通过 root 命令关闭 WLAN 始终扫描、蓝牙始终扫描、Wi-Fi 唤醒,并直接关闭 Wi-Fi 与蓝牙射频,从系统层面阻止微信/打卡软件通过周边路由器 MAC 或蓝牙信标反查真实经纬度。

  2. 移除原有的「微信强停/权限」入口与「免 Root 4 步」说明,板块不再涉及打开微信应用详情或改微信权限。

  3. 未获取 Root 时,按钮改为跳转系统定位设置,引导用户手动关闭「WLAN 扫描」与「蓝牙扫描」开关。

  4. 顶部横幅副文案同步更新为「Root 一键关闭蓝牙 / Wi-Fi 与背景扫描,阻止定位反查」。

本版与 v1.4.5 共用同一签名密钥,可直接覆盖安装。

v1.4.5

Choose a tag to compare

@github-actions github-actions released this 18 Sep 09:31

本版修一个 root 模式下的残留问题:停止模拟后位置仍然停在伪造点,重启也不恢复。

  1. 关闭应用即真正停止。此前从最近任务划掉卡片会被当成进程被杀,服务自愈复活后继续写入伪造坐标,表现为「应用关了位置还是假的」。现在划掉卡片会停掉注入协程、把所有持久通道写成已停止,再结束前台服务。

  2. 伪造配置改用单调时钟租约。原先只靠系统时间判断配置是否过期,一旦时间未同步或被改到过去,陈旧配置会被当成有效一直伪造,重启也一样。现在额外记录 elapsedRealtime:跨开机残留或超过 30 秒未续租的配置一律判为无效,真实定位随即恢复。

  3. 停止时仍然会清理全部通道:系统属性、/data/system 与 /data/local/tmp 下的配置文件、Settings.Global 与共享偏好,并恢复定位模式与 WiFi、蓝牙、AGPS 扫描开关。

本版与 v1.4.2 之后使用同一签名密钥,可直接覆盖安装。

v1.4.4

Choose a tag to compare

@github-actions github-actions released this 18 Sep 07:31

本版只改系统层 Hook,不动界面,解决「坐标是对的但目标应用不动」的三类情况。

  1. Provider 状态查询:伪造生效时 isProviderEnabled 与 isProviderEnabledForUser 返回已开启,getBestProvider 与 getProviders 保证 gps 在列。此前这些查询与伪造状态不一致,部分应用查完就判定无可用定位源,根本不发请求,伪造点也就没有投递机会。

  2. 注册登记:除分发钩子外,在 requestLocationUpdatesLocked 也记录分发对象。此前只有硬件真的上报过才能拿到这些对象。

  3. 主动喂点:GPS 关闭、室内无信号或 ROM 不上报时,守护线程按 1 秒间隔主动向各注册者推送伪造点;硬件正常上报时不重复推送,不改变原有刷新率。

  4. 伪造点补齐:海拔、方位角、速度为 0 时填入合理默认值,精度与时间戳同样补齐,并写入 extras 卫星数。真实卫星定位结果不会各项全为 0,全 0 会被部分应用判为无效定位而丢弃。

稳定性:分发对象用弱引用保存,应用注销即停止推送;全部新增路径在 ROM 差异导致签名不匹配时退化为一条日志,不影响系统进程。本版与 v1.4.2 之后使用同一签名密钥,可直接覆盖安装。