Ala Mobile Tool

License LSPosed API Version Target

Ala Mobile 的体验增强 LSPosed 模块
线性踏板操控 · 原生 TC 控制 · 音乐替换 · V10 引擎声浪 · 内购解锁


演示

踏板拓扑

单踏板 双踏板
单踏板演示 双踏板演示

单踏板模式:手指在屏幕上下滑动,上半区控制油门、下半区控制刹车。

双踏板模式:左右两指分别控制独立的油门和刹车踏板。

Overlay 控件

图标按钮可拖动,单击切换 Overlay 控件显示/隐藏,长按模块图标按钮进入编辑模式,拖拽移动 + 四角缩放各 Overlay 控件大小:

Overlay 编辑演示

模块设置界面

miuix 风格三页布局(概览 / 配置 / 设置),支持深色模式:

模块设置界面


⚠️ 免责声明

本模块仅供 个人学习、技术研究与逆向工程教学 使用。

它通过修改游戏运行时行为(内存读写、函数钩子、输入注入)来增强操控体验,可能违反游戏服务条款并导致账号暂时或永久封禁。请在单机模式下使用,并自行承担所有风险。原作者不承担任何直接或间接损失的责任。

首次启动模块设置界面时会弹出完整的 用户协议弹窗(EULA v2),需阅读并点击「同意」后才能使用。


功能

✅ 已实现

线性踏板(Pedal Overlay)

  • 三种拓扑:关闭、单踏板(上半油门/下半刹车)、双踏板(独立油门/刹车控件)
  • 响应曲线:线性 / 自定义(多点控制点 + 保单调三次样条),油门和刹车可分别设置
  • 死区与过渡点:单踏板模式下可调油门/刹车交界处的无效范围(0-20%)和分界线位置(20-80%)
  • 刹车优先仲裁:双踏板模式下两指同时按下时,刹车值超过过渡点(默认 10%)则刹车优先屏蔽油门
  • 刹车方向反转:双踏板模式下刹车填充方向可切换(默认从下往上 / 反转后从上往下)

主菜单音乐替换

  • 将主菜单背景音乐替换为 Hans Zimmer - F1(320kbps)
  • 默认开启。离开主菜单自动暂停,返回自动恢复
  • 通过 Native Hook 静音游戏原生 AudioSource.set_volume,不依赖游戏设置

V10 引擎声浪

  • 将开场动画背景音替换为 V10 引擎声浪
  • 默认关闭。单次播放,播完即停
  • 通过 Native Hook 静音游戏开场 introSound(真 AudioSource.set_volume),独立于主菜单音乐替换

布局编辑

  • 长按工具按钮进入编辑模式
  • 拖拽移动 + 四角缩放各 Overlay 位置
  • 长按编辑层重置到出厂默认位置
  • 单踏板 / 双踏板模式的位置分别持久化,互不干扰

内购解锁(Unlock / IAP Bypass)

  • 双重锁定路径:Native inline Hook(主路径)+ Java 层 Xposed Hook(辅助路径)
  • native 路径:BillingManager.Awake + GetInstance(兜底)+ 15 秒延迟 forceUnlockNow one-shot
  • Java 路径:BillingBridge.checkOwned / checkOwnedInternal → 注入 OnAlreadyOwned 消息
  • 首次解锁弹窗后写 /data/data/<pkg>/files/ala_unlock_done.flag,后续启动不再弹窗
  • 解锁走 SetUnlocked(true) 完整路径写 PlayerPrefs(AnciTuttu),修复「标记文件残留但 PlayerPrefs 丢失」导致车库车锁着的问题
  • 关闭解锁开关时仍 hook Awake 预设 IsUnlocked=true + 阻挡 OnOwnedNone/OnPurchaseFailed 弹窗, 防止正版用户每次冷启动看到"Fresh unlock"弹窗,同时让游戏正常走 Google Play 查询流程

原生 TC 控制

  • 通过 hook TractionFilter(TC)在入口处决定是否跳过
  • TC 已生效:关闭时 TractionFilter 直接返回原始 accel,不削减

配置即时生效

  • 三路配置同步:Remote Preferences(LSPosed daemon SQLite)→ ConfigProvider(ContentProvider)→ 定向广播
  • 游戏不运行时改配置:下次启动从 daemon 读取最新值,不再丢失
  • 游戏运行时改配置:广播即时推送,Overlay 重建生效

日志系统

  • 「启用日志」开关(默认关闭),logEnabled 统一门控 Java 层 Logger 与 native 层 native_log 两侧
  • 模块进程与游戏进程日志写入统一文件,设置页一键导出并分享(FileProvider + ShareSheet)
  • 游戏→模块日志经定向广播(setComponent)推送,规避包可见性与 IntentFirewall 限制

AI 车隔离

  • 通过 IRDSPlayerControls.Update() 捕获玩家车 controller(该组件只挂在玩家车 GameObject 上)
  • writer 线程只写 g_player_controller(由 IRDSPlayerControls 设置),不受 AI 车干扰
  • 油门/刹车 Hook 中 is_player_controller 检查 playerControls 字段(偏移 0x108)过滤 AI 车

多框架兼容

  • 支持 LSPosed(Root)和 NPatch(非 Root)框架
  • NPatch 路径:通过 content://top.nkbe.npatch.remote ContentProvider 拿 remote service binder 读写配置
  • LSPosed 共存版:System.setProperty 进程级标记避免双 ClassLoader 重复注入

LSPosed 激活检测

  • 概览页实时显示激活状态(已激活 / 未激活)
  • 判定依据 service.frameworkName == "LSPosed":LSPosed daemon 只在模块启用时推 binder,绑定即激活(参照 AdClose onServiceBind 思路)
  • NPatch 等非 Root 框架(frameworkName == "NPatch",API 101)不算 LSPOSED;检测到 NPatch 已安装才弹"作用域确认"弹窗,未安装时点击激活卡片 Toast 提示

游戏版本检测

  • 概览页标题上方显示官版/共存版版本检测胶囊(每次启动自动检测)
  • <queries> 声明两个游戏包名,getPackageInfo 静默查询,无需运行时权限
  • 已适配(8.0.4)显示绿色胶囊,未适配显示红色胶囊,未安装显示黄色胶囊
  • 下滑收缩时胶囊即时隐藏,上滑恢复后延迟渐显,避免与居中小标题重叠

现代 UI

  • Miuix 风格三页布局(概览 / 配置 / 设置),支持深色模式
  • 顶栏/底栏毛玻璃(blurRadius=12f),下滑顶栏折叠
  • 内嵌 GitHub 与 QQ 群入口图标(SVG Path 渲染)

Tool Button(工具按钮)

  • 96×96dp 圆角矩形按钮,前景为 App 图标(Base64 内嵌,绕过跨进程资源访问限制)
  • 单击:切换 Overlay 展开/折叠
  • 长按:进入编辑模式
  • 拖动:移动按钮自身位置(不持久化,每次打开游戏重置到默认位置)

版本门控

  • VersionGate 精准校验包名(原版 + 共存版)、versionNameversionCode
  • 非 8.0.4(200146)版本拒绝加载 Native Hook,避免 IL2CPP 偏移不匹配导致崩溃

用户协议(EULA)

  • 强制确认弹窗,按版本号持久化(当前 v2),条款更新重新弹窗
  • 存于模块进程 filesDirpm clear / 卸载重装自动清除,语义正确
  • 协议同意前激活弹窗不可见,保证协议优先
  • 协议弹窗需滚到底部阅读完才能点击「同意」

vivo/iQOO OriginOS 兼容

  • 所有重操作(ShadowHook 初始化、JNI 调用、Service 绑定)延迟到 Handler.post 下一主循环
  • 避开 createOrUpdateClassLoaderLocked 内部 Resources 未初始化时序窗口

检查更新

  • 启动时自动检查 GitHub Releases(官方 + 镜像站竞速),有新版本自动弹窗
  • 稳定版通道仅检查正式 Release,预览版通道同时检查 Pre-release
  • Release Note 轻量 Markdown 渲染,下载进度实时显示,下载完成调起安装器
  • 支持「跳过该版本」(仅影响自动弹窗,手动检查不受限)和「清除跳过更新标记」
  • 同版本已下载的 APK 不重复下载,直接调起安装器;启动时自动清理旧版本残留 APK

支持开发

  • 概览页「支持开发」卡片,展示收款码,可保存到相册

🚧 开发中

  • 自动 DRS:已完成 drsToggle() 拦截,telemetry 赛道数据解析待实现
  • 手动换挡DoGearShifting Hook 导致起步失败,需重新实现
  • 原生 ABS 控制HandleABS 被编译器内联到 carController,Hook 不触发。当前通过写 absEnable 字段(偏移 0xC4)实现,待找到未被内联的正确入口点后再做开关

安装

前提条件

  • 一部已 Root 的 Android 手机,安装了 LSPosed(或兼容分支)框架
  • 已安装 Ala Mobile 8.0.4(versionCode 200146)

步骤

  1. Releases 页面 下载最新 APK
  2. 安装 APK 到手机
  3. 打开 LSPosed Manager,在模块列表中找到 Ala Mobile Tool 并启用
  4. 在作用域中勾选 Ala Mobile(原版 com.Vince.AlamobileFormula 或共存版 com.Takotsubo.AlamobileFormula
  5. 启动游戏,进入后点击左上角工具按钮显示 Overlay

💡 首次使用:建议先进入模块设置界面(打开模块 App)确认配置,再进入游戏。

非 Root 用户(NPatch)

  1. 安装 NPatch 框架、共存版游戏与模块
  2. 在 NPatch 中 Ala Mobile 的模块作用域勾选 Ala Mobile Tool

配置

在 LSPosed 模块列表中点击 Ala Mobile Tool 打开设置界面(三页布局):

概览页

  • 模块激活状态卡片(已激活 / 未激活,绿/红配色)
  • 游戏版本检测胶囊:官版与共存版适配状态(已适配绿色 / 未适配红色 / 未安装黄色)
  • 设备信息:版本名称、版本号、Android 版本、厂商、型号
  • 链接:GitHub Releases、QQ 群(直接拉起 QQ App)、GitHub 源代码
  • 支持开发卡片:展示收款码,可保存到相册

配置页

分类 功能项 说明
游戏原生特性控制 解锁付费内容 强制解锁 DLC 和 IAP(默认关闭)
牵引力控制(TC) 启用原生 TC(默认开启)
Overlay 控件 线性踏板 拓扑选择:关闭 / 单踏板 / 双踏板
死区(单踏板) 0-20%,踏板过渡区域附近的无效范围
过渡点(单踏板) 20-80%,油门与刹车区域的分界线
刹车过渡点(双踏板) 0-20%,刹车优先仲裁的触发阈值
刹车踏板方向反转(双踏板) 切换填充方向
响应曲线 油门响应曲线 线性 / 自定义(多点控制点),线性踏板关闭时整组收回
刹车响应曲线 线性 / 自定义(多点控制点),线性踏板关闭时整组收回
杂项 替换主菜单音乐 更换为 Hans Zimmer - F1(默认开启)
替换开场动画背景音 更改为 V10 引擎声浪(默认关闭)

设置页

功能项 说明
模块更新通道 稳定版(仅正式 Release)或预览版(含 Pre-release)
启用日志 开关日志记录(logEnabled 统一门控 Java/native 文件输出,默认关闭)
导出并分享日志 合并模块与游戏进程日志,经 FileProvider 分享
清除激活标记 删除 Non-root 确认标记与旧版激活残留(filesDir,pm clear 可清);不碰 EULA 同意状态
清除跳过更新标记 恢复被跳过版本的自动弹窗提示
用户协议 重新查看并确认用户协议

已测试版本

版本 versionCode 架构
8.0.4 200146 arm64-v8a

已做版本门控,其他版本不会生效。IL2CPP 方法地址随版本变化,非匹配版本无法加载 Native Hook。


已知问题

  • 自动 DRS 仅完成 drsToggle() 拦截,赛道数据自动判断尚未实现
  • 手动换挡因 DoGearShifting Hook 导致起步失败,已暂时禁用,待重新实现
  • ABS 原生 Hook(HandleABS)被编译器内联,当前通过写字段(偏移 0xC4)替代,开关尚未实现
  • 弯道「顿挫」通常来自游戏内置的刹车辅助,与模块无关,请在游戏设置中关闭辅助功能
  • 共存版(重打包改包名)需配合双 ClassLoader 守卫,当前版本已修复

技术架构

Ala Mobile Tool (LSPosed 模块 APK)
├── ConfigActivity          # Compose + miuix 设置界面(模块进程)
├── AlaMobileModule         # Xposed 模块入口(游戏进程)
├── NativeBridge            # JNI 桥接(Java → C)
├── PedalOverlayView        # 双区踏板覆盖(Canvas View)
├── GearShiftView           # 换挡按钮(Canvas View)
├── ToolButtonView          # 工具按钮(Canvas View)
├── OverlayManager          # WindowManager 覆盖层管理
├── OverlayEditView         # 编辑模式拖拽/缩放层
├── MusicPlayer             # 主菜单音乐播放器(MediaPlayer + 轮询)
├── IntroSoundPlayer        # V10 引擎声浪播放器(MediaPlayer + 轮询)
├── ConfigProvider          # 跨进程配置 IPC(ContentProvider)
├── ConfigReceiver          # 配置广播接收器
├── BillingHook             # Java 层内购解锁(Xposed Hook)
├── LsposedStatus           # 激活状态判定(frameworkName 区分框架 + Non-root 弹窗确认)
├── EulaManager             # 用户协议管理
├── VersionGate             # 版本门控
└── libala-core.so          # ShadowHook 原生引擎(arm64-v8a)
    ├── pedal_hook          # 油门/刹车/换挡 + writer 线程
    ├── drs_hook            # DRS 拦截
    ├── unlock_hook         # BillingManager 解锁(主路径)
    ├── music_hook          # 主菜单音乐静音 + 心跳检测
    └── intro_hook          # 开场 V10 引擎声:静音 introSound + one-shot 信号

技术栈:

  • 现代 libxposed API 102(min 101)
  • Kotlin 2.4.10 + Jetpack Compose + miuix KMP 0.9.3
  • ByteDance ShadowHook 2.0.1(UNIQUE 模式)
  • C 语言 IL2CPP 运行时 inline Hook
  • AGP 9.3.1 / NDK 26.1.10909125 / Gradle 9.6.1

自行构建

需要 Android SDK(API 37)和 NDK r26c。

./gradlew :app:assembleDebug    # 调试构建
./gradlew :app:assembleRelease  # 发布构建(需签名配置)
./gradlew :app:lint             # 运行 lint(含 baseline)

逆向工具:

tools/run-il2cpp-dumper.sh

该脚本调用 Il2CppDumper 生成 dump.cs,用于提取目标方法偏移并更新 OffsetTable.kt


路线图

  • 自动 DRS:赛道 telemetry 解析 + 自动开关
  • 手动换挡:重新实现 DoGearShifting Hook
  • 原生 ABS 开关:找到未被内联的正确入口点后接入
  • 工具按钮位置持久化开关
  • 多语言支持

社区与支持


许可证

本项目基于 Apache License 2.0 开源。详见 LICENSE 文件。

游戏名称、素材、商标版权归其各自所有者;与游戏开发商、发行商无任何关联或授权关系。


版本历史

展开查看

v1.0.0(2026-08-19,正式版,versionCode 100300)

首个正式版本。新增完整日志系统(logEnabled 开关统一门控 Java/native 文件输出 + 一键导出分享);NPatch 激活确认流程收窄(激活弹窗收敛为「NPatch 作用域确认」,仅检测到 NPatch 已安装才弹出,未安装点击激活卡片 Toast 提示);解锁持久化加固(走 SetUnlocked(true) 完整路径写 PlayerPrefs,修复标记文件残留导致车库车锁着的问题)。修复响应曲线图表在平板/横屏下高度溢出撑爆卡片、LSPosed 激活检测轮询超时误弹免 Root 弹窗。

v1.0.0 Beta 5(2026-08-18)

新增 V10 引擎声浪替换开场动画背景音、应用内检查更新(GitHub 官方+镜像竞速,Markdown Release Note 渲染,下载+安装+跳过版本)、更新通道设置(稳定版/预览版)、概览页游戏版本检测胶囊(官版/共存版适配状态);恢复 EULA 启动门控(滚到底才能同意);弹窗退出动画;支持开发卡片+捐赠弹窗;QQ 群卡片直接拉起 QQ App。配置页重组:功能开关改名游戏原生功能控制(仅解锁+TC),主菜单音乐与 V10 声浪移至杂项分类;设置页重组为模块更新通道/日志/激活协议三组,新增清除跳过更新标记;线性踏板关闭时响应曲线整组收回;移除显示悬浮窗开关。修复弹窗系统返回键不关闭直接退桌面(删除手动 NavigationEventDispatcherOwner)、清除激活标记误清 EULA 同意状态。

v1.0.0 Beta 4(2026-08-17)

新增自定义油门/刹车响应曲线编辑器(多点控制点 + 保单调三次样条);修复配置修改后不立即生效(daemon 旧值覆盖新配置)、切换踏板模式后位置/大小丢失、native 库加载失败(移除 useLegacyPackaging);适配 Ala Mobile 8.0.4(versionCode 200146,8.0.0 用户收到不支持警告);底栏快速切换与切页掉帧修复。CI 自动构建 + tag 触发 Pre-release。

v1.0.0 Beta 3(2026-08-12)

配置页 UI 视觉大改。底栏切 tab 动画改为 KernelSU 式 animateScrollBy(连点不卡不错乱);下滑顶栏折叠、标题居中;顶栏/底栏加毛玻璃(blurRadius=12f);新增 miuix-blur 依赖。新增用户协议强制确认弹窗、配置页开关图标自定义、主菜单音乐替换(Hans Zimmer - F1,320kbps)、原生 TC 开关;修复 AI 车油门误控、LSPosed 激活判定误判(改 frameworkName)、NPatch 非 Root 配置跨进程同步、WSL2 Kotlin 编译卡死。真实设备已验证。

v1.0.0 Beta 2(2026-07-30)

踏板与配置体验大改。新增单/双踏板拓扑下拉、双踏板刹车优先仲裁与方向反转开关、长按重置出厂布局、SINGLE/DUAL 位置隔离持久化、配置即时生效(Remote Preferences 三路同步);修复游戏自带方向键被 writer 持续清零导致的转向失灵;概览页激活卡片改为 KernelSU 风格对称配色,激活检测改用 LSPosed daemon 绑定状态。

v1.0.0 Beta 1(2026-07-29)

共存版稳定性大修。修复双 ClassLoader 注入导致的重复 hook/双 writer 线程;废除非原子的文件 IPC 路径,统一走 JNI 直调;用 rawY + 配置值坐标绕开 pairip 壳的 relayout 漂移。CI 自动构建 + tag 触发 Pre-release。

v1.0.0 Alpha 2(2026-07-28)

UI 重构为 KernelSU 风格,修复多个编译错误,改进深色模式支持。

v1.0.0 Alpha 1(2026-07-28)

初始发布,包含踏板覆盖、换挡按钮和基础 DRS 拦截功能。

---

Source URL: https://github.com/TakotsuboChen/ala-mobile-tool

Releases

v1.0.0

Stable

8/19/2026, 1:30:23 PM

v1.0.0 — 2026-08-19

Version Code: 100300
Tag: v1.0.0

Ala Mobile Tool 首个正式版本。自 Beta 5 以来新增完整日志系统与 NPatch 激活确认流程收窄,并修复多项稳定性问题。

Features

  • 完整日志系统:新增「启用日志」开关(默认关闭),统一门控 Java/native 两侧文件输出;游戏与模块日志写入统一文件,设置页可一键导出并分享
  • NPatch 激活确认流程收窄:激活弹窗收敛为「NPatch 作用域确认」,仅在检测到 NPatch 管理器已安装时弹出;未安装时点击激活卡片 Toast 提示

Bug Fixes

  • 修复了响应曲线图表在平板/横屏下高度溢出撑爆卡片的问题(高度钳制到屏幕 50%)
  • 修复了 LSPosed 激活检测轮询超时误弹免 Root 弹窗的问题(改为事件驱动)
  • 修复了解锁标记文件残留但 PlayerPrefs 丢失时车库车辆锁着的问题(解锁走 SetUnlocked(true) 完整路径重写 PlayerPrefs)
  • 修复了应用内检查更新下载不动的问题(kkgithub.com 不镜像 release asset,改用 gh-proxy.com 等多代理 fallback;OkHttp 显式走系统代理,修复挂梯子也不生效的问题)

Assets

1

v1.0.0-Beta-5

Pre-release

8/18/2026, 3:00:47 PM

v1.0.0 Beta 5 — 2026-08-18

Version Code: 100250
Tag: v1.0.0-Beta-5

新增 V10 引擎声浪替换开场动画背景音、应用内检查更新、游戏版本检测胶囊,修复弹窗返回键失效问题。

Features

  • V10 引擎声浪:将开场动画背景音替换为 V10 引擎声浪,默认关闭,可在「配置 → 杂项」中开启
  • 应用内检查更新:启动时自动检查 GitHub Releases(官方与镜像站竞速),有新版本自动弹窗并展示 Markdown 格式的 Release Note,支持下载进度显示、调起安装器、跳过该版本
  • 更新通道设置:在「设置 → 模块更新通道」可选择稳定版(仅正式 Release)或预览版(含 Pre-release)
  • 游戏版本检测胶囊:概览页标题上方显示官版与共存版的版本适配状态,已适配(8.0.4)显示绿色,未适配显示红色,未安装显示黄色
  • EULA 启动门控:恢复首次启动强制阅读用户协议,协议弹窗需滚到底部才能点击「同意」
  • 弹窗退出动画:EULA、支持开发、检查更新弹窗关闭时播放退出动画
  • 支持开发卡片:概览页新增「支持开发」卡片,点击弹出「向开发者捐赠」弹窗
  • QQ 群直接拉起:概览页 QQ 群卡片点击后直接拉起 QQ App 群资料页,未安装 QQ 时降级到网页
  • 配置页重组:原「功能开关」改名为「游戏原生功能控制」,仅保留解锁付费内容与 TC;替换主菜单音乐与 V10 引擎声浪移至新增的「杂项」分类
  • 设置页重组:移除关于卡片,新增「模块更新通道」组与「清除跳过更新标记」项,整体分为模块更新通道、日志、激活/协议三组
  • 响应曲线自动收回:线性踏板关闭时响应曲线整个分类自动隐藏,减少无关选项干扰
  • 移除显示悬浮窗开关:悬浮窗显示由工具按钮控制,不再需要配置页开关

Bug Fixes

  • 修复了所有弹窗按系统返回键不关闭弹窗、直接退到桌面的问题(删除手动创建的 NavigationEventDispatcherOwner,改用 ComponentActivity 自带的 dispatcher)
  • 修复了清除激活标记会联动清除 EULA 同意状态的问题,两者现在相互独立

Assets

1

v1.0.0-Beta-4

Pre-release

8/17/2026, 9:21:45 AM

v1.0.0 Beta 4 — 2026-08-17

Version Code: 100240
Tag: v1.0.0-Beta-4

新增自定义油门/刹车响应曲线编辑器,修复配置实时生效与 native 库加载问题。

Breaking Changes

  • 仅支持 Ala Mobile 8.0.4:本版本起模块只适配 8.0.4(versionCode 200146),8.0.0 用户将收到不支持警告,请升级游戏版本

Features

  • 自定义油门/刹车响应曲线:可在配置页为油门和刹车分别编辑响应曲线,通过拖拽控制点调整手感,曲线经过所有控制点且保持单调

Bug Fixes

  • 修复了修改配置后不立即生效的问题(daemon 旧值覆盖新配置)
  • 修复了切换踏板模式后位置/大小丢失的问题
  • 修复了 native 库加载失败导致模块不生效的问题

Performance

  • 底栏快速切换不再卡顿,切页掉帧问题修复

Assets

1

v1.0.0-Beta-3

Pre-release

8/12/2026, 2:40:46 PM

v1.0.0 Beta 3 — 2026-08-12

Version Code: 100230

新增毛玻璃 UI、用户协议强制确认、配置页图标自定义,修复了 AI 车油门误控、激活检测误判和非 Root 配置跨进程同步等一系列问题。

Features

  • 毛玻璃视觉效果:配置页顶栏和底栏新增模糊毛玻璃效果(Android 12+),界面更现代
  • 用户协议强制确认:首次打开配置页必须阅读并同意用户协议,不同意则退出
  • 配置页图标自定义:牵引力控制、踏板、刹车曲线等开关换上自定义图标,识别更直观
  • 主菜单音乐替换:默认将游戏主菜单音乐替换为 Hans Zimmer - F1(320kbps 高音质)
  • 原生牵引力控制(TC)开关:可在配置页独立开启或关闭游戏原生 TC,关闭后模块不再覆写 TC 字段
  • 工具按钮改版:悬浮工具按钮改为圆角矩形 + App 图标,支持拖动位置
  • NPatch 配置同步:非 Root 用户(NPatch)在游戏不运行时修改配置,启动后自动生效
  • 解锁弹窗根治:开启解锁功能后不再弹出游戏内购提示,预设已解锁状态

Bug Fixes

  • 修复了 AI 车油门误控:模块不再误控 AI 对手车的油门/刹车,只作用玩家操控的车辆
  • 修复了 LSPosed 激活状态误判:彻底解决「清数据后关开关仍显示已激活」和「游戏没跑时显示未激活」的误判
  • 修复了首次安装未激活不弹窗:未启用模块时自动弹出配置页引导弹窗
  • 修复了音乐替换 MP3 提取失败:改用 assets/ 目录直接读取,避免 release 编译重命名导致资源找不到
  • 修复了 WSL2 下 Kotlin 编译卡死:WSL2 环境不再因 Kotlin 编译守护进程网络回环卡死
  • 更新 LSPosed 管理器描述为中文:管理器列表显示「Ala Mobile 体验增强模块」

Performance

  • 音乐替换音质升级至 320kbps

Known Issues

  • NPatch 注入时序依赖:非 Root 用户(NPatch)如果清数据后不打开一次 NPatch 管理器直接开游戏,模块不生效。建议每次清数据后先打开 NPatch 管理器再开游戏。
  • ABS 开关暂未实现:配置页的 ABS 开关已注释,待找到正确的 ABS 入口点后恢复(当前 HandleABS 是死代码)
  • 手动换挡暂未实现:配置页的手动换挡开关已注释,当前 DoGearShifting hook 会导致车辆无法驶出 P 房

安装

  1. 确保已安装 LSPosed,或使用 NPatch / LSPatch / FPA 等免 Root 框架。
  2. 从下方 Assets 下载 Ala Mobile Tool v1.0.0 Beta 3.apk
  3. 在 LSPosed 中勾选 Ala Mobile 作为作用域。
  4. 启动游戏,进入游戏后点击左上角「工具」按钮显示 overlay。

Assets

1

v1.0.0-Beta-2

Pre-release

8/12/2026, 2:40:42 PM

概述

Beta 1 之后的第一个预发布,集中在踏板体验配置同步可靠性激活状态可视化三块。共 34 个提交,其中 4 个为已 revert 的临时测试 tag,实际功能提交 30 个,覆盖 M7~M16 共 10 个里程碑。

✨ 新功能

踏板拓扑与双踏板

  • 踏板拓扑下拉:原"线性踏板"开关升级为下拉,支持 关闭 / 单踏板 / 双踏板 三种模式。
  • 双踏板模式:油门和刹车各占一个独立 overlay,可分别拖动定位;引入刹车优先仲裁——同时按下时屏蔽油门输入,避免油门刹车打架。
  • 刹车踏板方向反转:双踏板模式下新增开关,刹车红色区域可改为从上往下生长(默认从下往上)。
  • 响应曲线温和化:指数曲线 exponent 从 0.42 调到 0.66(30%→45%),手感更线性。

布局编辑

  • 长按重置出厂默认:编辑模式下长按编辑层按钮,把 overlay 位置重置到出厂默认位置(不再重置到"上次保存值")。
  • SINGLE/DUAL 位置隔离:单踏板和双踏板的位置分别持久化到独立 JSON 字段,互不串扰(修复了"DUAL 油门继承 SINGLE 拖动位置"的 bug)。

配置同步

  • 配置即时生效:在模块设置界面改配置后,游戏内 overlay 立即重建应用,无需重启游戏(M11/M12 遗留的"必须 toggle 才生效"已根治)。
  • Remote Preferences 跨进程同步:配置同步迁移到 libxposed API 102 的 getRemotePreferences,经 LSPosed daemon(system uid,可读任意 filesDir)binder,绕开 Android 11+ scoped storage + 包可见性双拦。根治了"首次启动游戏读到旧配置"(M11 广播首次启动滞后的根因)。

概览页

  • 激活卡片 UI 重做:照搬 KernelSU HomeMiuix 的对称强调底色(已激活=绿色调,未激活=红色调),Non-root 确认弹窗改用官方 miuix OverlayDialog
  • LSPosed 真激活检测:激活判定从 System.getProperty(MODULE_LOADED_FLAG)(ConfigActivity 进程不可达,死路)改为 App.xposedService != null(daemon 绑定 = Manager 当前启用)。语义实时跟随 Manager 启用态,不需重启进程。
  • GitHub/QQ 图标:概览页 LinksCard 内嵌 SVG path 图标——GitHub 行用 Octocat,QQ 群行用 QQ 企鹅 logo(均来自 simple-icons,CC0)。

🐛 修复

  • 方向键/摇杆转向失灵(M14 核心 bug):native input_writer_thread 以 ~500Hz 持续写 0.0f 到油门/刹车字段,覆盖了游戏自带的转向辅助输入,导致 ButtonsSteering(屏幕方向键)模式的 steerHelp/LockSteerAtVelocity/TractionFilter 失效,方向键不转向。陀螺仪模式不依赖油门/刹车做转向,故不受影响。修复:writer 在用户未按踏板时早退(不写任何值),活动→非活动切换时主动 clear 一次。
  • CI lint 假绿:M11/M12/M13 的 ContextCompat.registerReceiver 在 else 分支漏传 RECEIVER_EXPORTED flag 触发 UnspecifiedRegisterReceiverFlag,CI lintDebug 失败。统一改用 ContextCompat.registerReceiver(context, receiver, filter, RECEIVER_EXPORTED)(AndroidX 自动按 SDK_INT 分发)。

⚙️ 技术细节

  • raw/mapped 值分离(M11):PedalOverlayView 区分 rawThrottle/rawBrake(手指位移,驱动绘制,视觉跟手)和 mappedThrottle/mappedBrake(曲线变换后送 native,非线性游戏输入)。这使得双踏板仲裁能"视觉同时显示两指、游戏只收一侧输入"。
  • 左下角坐标系(M12):默认位置改为用户直觉的左下角原点百分比(pedal (80,55)(95,5)、brake (5,55)(20,5)),内部存储仍是 Android 原生左上角原点,只改默认值,转换 helper 不变。
  • 废弃 IPC 路径ConfigProvider.kt 在广播方案落地后已废弃,Remote Preferences 方案下更无用,待后续清理。

⚠️ 升级须知

  • 配置文件格式有变更(enable_control_replacement bool → pedal_mode 枚举,pedal_curvethrottle_curve/brake_curve),模块在读取时会自动迁移旧字段,无需手动处理。
  • 单/双踏板位置现已独立存储,从旧版本升级后单踏板位置保持,首次切到双踏板会用默认位置。

完整变更

Beta 1 (v1.0.0-Beta-1) 到 Beta 2 (v1.0.0-Beta-2) 共 30 个功能提交,详见 Beta 1...Beta 2 对比

Assets

1

v1.0.0-Beta-1

Pre-release

8/12/2026, 2:40:38 PM

安装

  1. 确保已安装 LSPosed。
  2. 从下方 Assets 下载 app-release.apk(正式签名版)或 app-debug.apk(调试版,稍后上传)。
  3. 在 LSPosed 中勾选 Ala Mobile 作为作用域。
  4. 启动游戏,进入游戏后点击左上角「工具」按钮显示 overlay。

Release APK 由维护者本地构建后上传,CI 暂不支持自动构建(compileSdk=37 需 Android 17 preview platform,SDK 仓库暂未发布)。

Full Changelog: TakotsuboChen/ala-mobile-tool@v1.0.0-Alpha-2...v1.0.0-Beta-1

Assets

1

v1.0.0-Alpha-2

Pre-release

8/12/2026, 2:40:34 PM

变更内容

UI 重构

  • 采用 KernelSU 风格的三页布局(概览/配置/设置)
  • 修复深色模式显示问题
  • 优化激活状态卡片视觉效果

功能完善

  • 修复开关和滑条的即时反馈
  • 修复下拉菜单闪退问题
  • 禁用开发中功能(自动 DRS、关闭自动换挡)

其他改进

  • 更新 QQ 群邀请链接
  • 优化性能和稳定性

Assets

1

v1.0.0-Alpha-1

Pre-release

8/12/2026, 2:40:29 PM

v1.0.0-Alpha-1

这是 Ala Mobile Tool 的首个预览版本,仅用于早期测试。

功能

  • 踏板覆盖:在屏幕右侧叠加双区线性踏板(上半油门、下半刹车),支持死区、过渡点和响应曲线调节。
  • 换挡按钮:在屏幕左侧提供升档/降档按钮,用于手动换挡。
  • 自动 DRS / 主动空力:拦截游戏 DRS 开关,未来会基于 telemetry 自动判断开启时机;当前仅作开关拦截。

已知 Bug / 未完成项

  • 换挡按钮会调用游戏内换挡方法,但当前不会关闭游戏的自动换挡,因此手动换挡可能与自动换挡产生冲突。
  • 自动 DRS 仅拦截开关,尚未实现基于赛道 telemetry 的自动判断。
  • 使用踏板覆盖时,行驶过程中可能出现高频顿挫,具体原因待排查。
  • 当前 release APK 使用临时签名,正式发布前会替换为正式签名。

适用版本

  • Ala Mobile 8.0.0 (versionCode 200142)

安装要求

  • Android 8.0+,已安装 LSPosed / LSPosed 分支框架。
  • 目标应用:com.Vince.AlamobileFormula

注意

本模块为 Alpha 版本,仅供测试,可能存在稳定性问题。

Assets

1