Repository navigation
Releases: kai-wu-cortex/AirSIM
Release list
AirSIM Apps v0.9.7.2 — Android 10–13 修复与 VoBLE 稳定性,推荐安装
AirSIM Apps v0.9.7.2 — 连接恢复、VoBLE 与音频诊断
日期:2026-10-16(Asia/Shanghai)。从 VoBLE 分支发布,Android Standalone/AVF Bridge 为 0.9.7.2 (91),iOS/Watch/Live Activity 为 0.9.7 (91)。推荐 Android 10–13 用户升级,保留此前旧系统启动、日志读取与蓝牙配对兼容修复;新安装优先 Standalone。Linux AVF Agent 二进制仍为 v0.4.6,本次不发布 Debian、不部署生产 Relay、不新增 workflow、不合并 main。
下载与安装
AirSIM-Android-Standalone-0.9.7.2-Android10-13.apk:正式签名,推荐。AirSIM-Android-AVF-0.9.7.2-Android10-13.apk:旧 AVF 部署的 Android 控制端,不是 Linux Agent 更新。AirSIM-iOS-0.9.7-build91-unsigned.ipa:包含 Watch 与 Live Activity,须自行完整重签。AirSIM-iOS-0.9.7-build91-sideload-unsigned.ipa:不含 Watch,保留 Live Activity,供不支持嵌套 Watch App 的侧载工具重签。SHA256SUMS.txt、LICENSE、NOTICE、THIRD_PARTY_NOTICES.md。
两份 APK 沿用原正式证书,minSdk=29、targetSdk=35,可覆盖同包名、同证书正式版并保留数据。不要先卸载;Debug 或第三方重签包签名不同,不能直接覆盖。支持 Android 10–13 不代表排除高版本,也不代表所有 OEM 音频路径均通过实测。
公开 IPA 无 Apple 签名或设备描述文件,不能直接安装或直接上传 TestFlight;侧载工具仍须使用自己的 Team、Bundle ID 及相应能力重签。维护者另用 Xcode 上传正式 production 推送环境构建。上传、Apple 处理、外测审核和测试者可更新是不同状态,后续以实际回执为准。
本版内容
- iOS 联系人采用系统完整姓名格式,包含 middle/family name;iOS 与 Android「关于」显示实际版本与仓库链接。
- VoWLAN 配对支持手动 IPv4+配对端口,可绕过 Bonjour 发现;保留六位码加密认证,支持局域网及 Tailscale 地址,不对外开放 AVF/Shell 内部端口。
- iOS 短信支持单条、会话和多选删除,仅删除本机 AirSIM 记录,避免旧同步重新加入,不删除 Android 系统短信。
- 同网恢复重新发现、认证 VoWLAN;自动模式空闲时按 VoWLAN → VoBLE → 云端选择,固定模式与通话中的链路不被改变,不增加 Relay 定时状态查询。
- VoBLE 扫描与音频工作移出主线程、合并状态更新,改善切换模式时卡顿;加强断链清理、重连及代际隔离。
- 蓝牙挂断后阻止迟到的非终态恢复通话与灵动岛计时,处理 iOS 临时 ID 到 Android 权威 ID 的切换。
- Android 蓝牙特征发布及认证兼容性、X25519 密钥生成后端适配;配对前继续要求完整特征与认证,不降低安全校验。
- 音频 Watchdog 只针对已确认的唯一远程通话和就绪 PCM,有限次修复,可导出脱敏 VERBOSE TXT;不修改麦克风或 PCM 增益。
- 三星改为接通后设置系统支持的最低通话音量,挂断/链路丢失后恢复原值;最低档不等于静音。修复
IdentityHashMap.containsValue将解码通话 ID 按对象引用比较,导致 VoBLE/云端未触发音量策略的问题。 - Relay 多安卓命令固定目标、通话归属与 HTTP/WSS 退避源码一并提交;生产
/healthz已只读确认agent_command_routing=1。第三方部署须先升级兼容 Relay,再升级 Android/Apple;新客户端不会静默回退到无法隔离目标的旧协议。
验证与已知边界
候选 iOS 88 用户反馈切换 VoBLE 不再卡顿;候选 Android 90 真机 VoBLE 通话未降低音量,日志显示双向 PCM 已工作但音量策略未触发。91 增加独立字符串 ID 的失败复现与回归后修正,已覆盖安装三星并启动,最低档听感与 iPhone 双向语音仍待用户复验,不声称三星已完全静音。
真实 Tailscale 两端、所有 OEM/Android 版本、Apple Watch 后台响铃停止、长时锁屏与弱网仍需分别验收。iOS 强制退出后的 BLE 后台唤醒不保证;Android Shizuku、默认电话角色与厂商蜂窝 PCM 支持仍是前提。实时活动、后台连接和降音量的自动化测试不能替代真机声学验证。
发布前重新执行 Android 全套、iOS 测试、IPA 打包回归、Relay/Go 测试与正式产物签名检查;执行结果另行记录。发布不包含用户日志、号码、配对材料、Apple 身份或任何签名私钥。
本次发布核验
源码提交为 4e4ba8c47ee1bcd876ef9835ffde16e1c44a260b,源码树为 8272209e78503e49321cf575b305a0926597dcaf;产物从该树的独立源码副本构建,未打包工作区缓存、用户数据或签名材料。常规 Git HTTPS 推送遭遇 HTTP/2/连接错误,改经 GitHub Git database API 写入完全相同的树和提交,并以非强制快进更新 VoBLE;远端 SHA 与本地相同。
- Android Standalone 全套测试通过,包括 55 项 PCM 桥检查、18 个通话音量生命周期场景、API 29–35 短信工厂兼容与 BLE 服务生命周期。构建保留既有过时 API/JDK 工具告警,不宣称零告警。
- Relay 61 项单元测试、语法检查与本地 workerd 多设备路由集成通过;AVF Go Agent、race、Installer 及 Debian 打包测试通过。这里的 Debian 包只用于测试,不是新发布的 Linux Agent。
- full/sideload IPA 打包回归通过;两份正式 APK 验签、包名、版本、不可调试标记与 Shizuku Manifest 检查通过。证书 SHA-256 为
cde660af4c3e053615a4967e5188ca29eee084e50958ead1fd5cc80837b0965b,沿用原正式证书。 - iOS/Watch/Live Activity 无签名及正式签名 Release 归档均成功,三个目标均为
0.9.7 (91);公开 IPA 结构检查通过,不含签名、描述文件或 macOS 资源旁车文件。具体工件摘要见 Release 的SHA256SUMS.txt。 - 本轮 iOS 自动化回归未完成:Xcode 测试工具先超时,iOS 27 模拟器数据迁移失败;改用 iOS 26.5 和独立新建模拟器后,测试运行器安装/启动仍因
Mach error -308 (ipc/mig) server died失败,未执行到测试用例。保留诊断且停止该测试实例,不修改业务逻辑来绕过,不将“未进入用例”写成全部通过。 - Xcode Organizer 经 App Store Connect 通道确认
AirSIM 0.9.7 (91) uploaded,归档列表为Uploaded to Apple、Build Number91,上传回执时间为 2026-10-16 22:48(Asia/Shanghai)。这证明上传成功,不证明 Apple 处理完成、外测审核通过或测试者已可更新。
三星 91 最低档听感仍待用户复验;本次发布不等同于新增真机声学验收。未部署 Relay、未新增 workflow,GitHub Latest 保持 Linux Agent v0.4.6,避免旧 installer 将 Apps 包当作 Linux 更新。
AirSIM v0.9.7.1 — Android 10–13 修复版,推荐安装
AirSIM v0.9.7.1 — Android 10–13 修复,推荐安装
日期:2026-10-14(Asia/Shanghai)。从 VoBLE 分支发布,推荐 Android 10、11、12、13 用户安装本版,优先选择 Standalone。修复旧系统启动与 VoBLE 配对闪退,并包含云端挂断和语音抖动优化。Linux AVF Agent 保持 v0.4.6;不修改 Relay 或 workflow,不合并 main。
下载与升级
AirSIM-Android-Standalone-0.9.7.1-Android10-13.apkAirSIM-Android-AVF-0.9.7.1-Android10-13.apk(仅供旧 AVF 部署)AirSIM-iOS-0.9.7-build81-unsigned.ipa(主 App、Watch 与 Live Activity,须自行重签)SHA256SUMS.txt
包名 com.airsim.phonecontrol.standalone,versionName=0.9.7.1,versionCode=81,minSdk=29、targetSdk=35,不可调试。面向 Android 10、11、12、13 的旧 Java API 兼容修复,不强行限制更高系统安装,不通过降低 targetSdk 或绕过权限解决闪退。
沿用原正式 Android 发布证书,可直接覆盖正式版 Standalone,保留配对、配置和本地数据,无需清理日志或卸载。调试证书/第三方重签版本不能直接覆盖;签名冲突不是允许清除数据的理由。AVF 版包名不同,不能相互覆盖。
根因与修复
小米 Android 12 真机和用户提供的 vivo Android 11 报告均出现 NoSuchMethodError,第一处为首页读取日志时调用旧系统不存在的 ByteArrayOutputStream.toString(Charset)。继续实机核验又定位权限列表的 Collection.toArray(IntFunction)。不是 Relay 限额、配对错误或用户数据损坏,清数据不能修复。
修复七处 UTF-8/ASCII 解码、四处定长流读取,以及两处权限列表转换;涉及日志、闪退报告、Agent/installer HTTP、Standalone Relay/WS、VoWLAN 和 PCM 握手。采用旧系统可用的字符串构造、DataInputStream.readFully、toArray(new String[0]),保留原认证、帧长度和不完整帧拒绝行为。
新增编译产物方法引用检查,在旧实现上复现失败后修复通过,并接入共享测试和正式 APK 构建。该检查只防止这几种已知回归,不是完整 API lint。增加真实诊断文件 UTF-8 读写测试,避免只有日志替身通过测试。
验证边界
审查修复:替换 StringBuilder.isEmpty、URL 编解码 Charset 重载、InputStream.nullInputStream;短信工厂按 API 31 分支;AVF 新后台启动选项按 API 34 分支。静音不再依赖 OEM cmd audio,改用 shell 身份 AudioManager 与回读校验,失败不误报成功,恢复保留原始静音/音量快照供重试。
- 重新执行共享 Android 测试、Standalone 集成、诊断文件读写、47 项 PCM 桥检查及正式签名 APK 构建;以本次发布核验结果为准。
- Redmi M2004J19C(API 31 / Android 12):修复包已保留数据覆盖安装并启动,用户确认 VoBLE 配对正常;兼容分支通过
app_process与音频后端只读检查。最新双端云端通话用户反馈「不再重现,声音更稳」,不将此等同于完整 OEM 静音/恢复或所有网络场景验收。 - vivo V2111A(API 30 / Android 11):用户旧版崩溃报告命中同一日志读取根因,尚未复测本修复包。
- Android 10、13 与 realme(真我)未完成本轮真机验证;不宣称所有机型均无闪退或均支持蜂窝 PCM。默认电话角色、Shizuku、蓝牙权限和 OEM 音频路由仍须按设备设置和验证。
本项目仅限 PolyForm Noncommercial License 1.0.0 允许的非商业用途。Release 不包含签名私钥、用户日志、号码或设备凭据。
iOS 与云端通话优化
- iOS 为
0.9.7 (81)(Apple 版本号与本次 Android 补丁版本号分开),维护者通过 Xcode 使用 production APNs 上传 TestFlight;上传成功不等于处理完成、外测可用或审核通过。 - 「配对三星开发机」改为「配对安卓手机」,增加仅控制本次配置包的「本地模式配对」开关:打开不读取/写入 Relay、推送与云端参数,关闭按云端配对流程写入;不改变全局模式。
- 挂断后拒绝旧通话的迟到 active/connecting、旧拨号结果与重连回调,避免 UI 再次出现或误操作下一通;同样保护 Watch 与灵动岛状态。
- 云端 PCM 双端采用有界自适应缓冲、20 ms 播放/发送节奏、短时缺帧补偿及过期语音丢弃;Android 音频采集/收发解耦,重连后可重新启动媒体。
- 保持现有 Relay 与 PCM 协议,未更换 VoWLAN/VoBLE 的媒体实现。WebSocket/TCP 的严重弱网队头阻塞仍有边界,详见设计与验证记录。
- 发布前运行 iOS 110 项测试、Android 共享/Standalone 测试、47 项 PCM 检查、旧 Java API 引用扫描与 NewApi lint。完整 lint 历史权限诊断仍不等同于零告警;更多厂商、Android 10/13、Watch 和长时间弱网需继续验收。
公开 IPA 没有 Apple 签名或描述文件,不能直接安装、不能直接上传 TestFlight。请使用自己的 Team、Bundle ID 和完整嵌套目标签名;Release 不公开开发设备 UDID。正式签名 APK 可覆盖原同证书包并保留数据;无需卸载、清除日志或重新配对。
发布核验(2026-10-14)
源码与发布标签提交:8b8b9b2ade4e95b9329757eb4e2c83380ea48951,已推送到 VoBLE。工件从该提交的独立源码副本构建,GitHub Release 为公开非草稿;仓库 Latest 继续指向 Linux Agent v0.4.6,防止旧 installer 将应用发布误判为 Linux 包更新。
两份 APK 均为 0.9.7.1 (81)、不可调试,正式证书 SHA-256 为 cde660af4c3e053615a4967e5188ca29eee084e50958ead1fd5cc80837b0965b,与前版一致。公开 IPA 为 0.9.7 (81),主 App/Watch/Live Activity 版本一致,不含 _CodeSignature 或 embedded.mobileprovision。另附 LICENSE、NOTICE 与第三方声明。
| 工件 | SHA-256 |
|---|---|
| AVF Bridge APK | e8e46fd8b140200c18dea8c5d84f0d989871fe1b44c3baa374cde480036bd36d |
| Standalone APK | 76961fea2ef65ee36e73d90b3f847b126b404a79d95b0750bfacac719c0ba73c |
| unsigned IPA | 56f6fb38fb484b36dea3cc7a0ff440ee63302b34f7095b8419a9637e6164c3d3 |
维护者 production 归档另行通过 Xcode Organizer 的 App Store Connect 通道上传,界面已明确显示 AirSIM 0.9.7 (81) uploaded、Uploaded to Apple 和 Build Number 81。这证明上传成功,不证明 Apple 已处理完成、外测可用或审核通过;设备先前的 sandbox 覆盖安装与此次 TestFlight production 分发为不同构建。
AirSIM Apps v0.9.7 — VoBLE
AirSIM Apps v0.9.7 (80)
本版从 VoBLE 分支发布 Android AVF Bridge、Android Standalone 与 iPhone/Watch App。独立 Linux AVF Agent 仍为 v0.4.6,本版不更新 Debian 包,也不修改发布 workflow。
发布资产
AirSIM-Android-AVF-0.9.7.apk:旧 AVF 架构的 Android Bridge,包名com.airsim.phonecontrol。AirSIM-Android-Standalone-0.9.7.apk:推荐的内置 Agent 单 APK,包名com.airsim.phonecontrol.standalone。AirSIM-iOS-0.9.7-unsigned.ipa:arm64 主 App、Watch App 和 Live Activity Extension,供使用者自行重签。SHA256SUMS.txt:以上三个工件的 SHA-256 校验清单。
两份 APK 使用既有正式发布证书,版本号 0.9.7 / 80,不可调试;不同包名不能相互覆盖。公开 unsigned IPA 不含 Apple 签名与描述文件,不能直接安装或提交 TestFlight。维护者使用自己的正式 App 标识、production APNs 和 Xcode 自动签名另行上传 TestFlight;上传成功不代表处理完成或审核通过。
工件源码提交:8bce6ac93df7eced8f21a6fb59e239e4bc1741f4。正式 Android 发布证书 SHA-256:cde660af4c3e053615a4967e5188ca29eee084e50958ead1fd5cc80837b0965b,与 v0.9.6 一致。
| 工件 | SHA-256 |
|---|---|
| AVF APK | eb0cc9642d4aef5c1cdbe69bc19d6ef01d57b185df00f6a249ab5ae57c7b6868 |
| Standalone APK | bb1ebb0e68279a1bb9ae58206c8b34ede5a4060ebc2128f1e62a86bd36e5f87c |
| unsigned IPA | 83d9ef213915ecdd0d6f5b4e6999c70f6d12e7424bf8b4130243896a14ccc98b |
主要变化
- VoBLE 是设置中的独立蓝牙模式,不依赖 Wi-Fi、Relay 或 PushKit;认证 BLE GATT 传送控制和 AES-256-GCM 加密的 G.711 μ-law 8 kHz 单声道通话音频,不提供 Bluetooth PAN 网络共享。
- 自动模式按实际拨号路由选择 VoWLAN → VoBLE → 云端;蓝牙可用性不再依赖 VoWLAN 配对或 HTTP 200。拨号页、Agent 列表和实时活动显示蓝牙状态。
- 修复临时/权威通话 ID、generation、迟到状态与重复挂断竞态;已认证的同一终态挂断可幂等完成,不会误操作下一通电话。灵动岛蓝牙操作由主 App 的认证会话执行。
- 调整蓝牙音频的有界缓冲、播放补帧和蜂窝上行路由;取消配对后清理双方凭据并恢复扫描,连接超时等待旧 GATT 断开,不创建重叠连接。
- Android 增加 VoBLE 认证配置页、默认通话 SIM/eSIM 选择及启动 Shizuku 检查。缺少 Shizuku 时提供官方下载地址;未运行或未授权时提供对应入口。
- Android 闪退报告仅在用户选择发送时进入系统分享面板,限制大小并脱敏,不自动上传。
- iPhone 可手动绑定 Agent、删除已配对设备和最近通话。设备历史不缓存号码;新 APK 的 BLE、VoWLAN 与 Standalone 心跳读取当前通话卡信息,号码不可读时不借用旧号。
- 补齐诊断 Debug 包内嵌动态库的独立签名核验说明,避免漏签导致启动前 DYLD 闪退;正式发布使用 Release 构建,不复用诊断包。
验证与已知边界
发布前重新执行 iOS 92 项 XCTest、Android 共享 Bridge/Standalone 测试、47 项 PCM 桥检查、Relay 46 项测试及语法检查、Go Agent/installer 测试。正式工件另行核对版本、Android 证书、不可调试属性和 Apple 嵌套目标签名。
此前 iPhone Air 与三星 Flip7 已进行真实 BLE 通话,用户确认声音已到 iPhone、后续通话正常;日志有双向媒体与结束清理证据。设备列表真机可正常打开。完整逐轮证据见 真机测试矩阵,不能把历史失败场景或单元测试当作本版全硬件验收。
- 纯 BLE 挂断竞态已有双端回归测试,最终真机复测、真实换卡/删除后重配、双卡运营商路由、多厂商音频与 30 分钟稳定性仍需验收。
- Apple Watch 不直接连接 Android BLE;镜像来电与音频由 iPhone/watchOS 系统管理,尚未完成 Watch 真机联合验收。
- iOS 被用户强制退出后不保证 BLE 后台唤醒。通话开始后锁定传输,不在三种路径间无提示漂移。
- 旧 Linux AVF Agent 的云端号码心跳仍读取注册 metadata,尚未迁移到当前 SIM 查询。
- 诊断真机曾出现 ActivityKit
SessionCore.PermissionsError Code=3,未将启动闪退修复宣称为所有实时活动权限问题已解决。
项目仅限 PolyForm Noncommercial License 1.0.0 允许的非商业用途;签名私钥、用户设备记录、号码及生产密钥不进入源码或 Release。
AirSIM Apps v0.9.6
AirSIM Apps v0.9.6
本版将 Android Standalone 的本地与云端编排补齐,并集中改善真实来电、短信、网络切换和 iPhone 实时活动的可靠性。AVF Agent 仍为独立的 v0.4.6;本次 Apps Release 新增 AVF Bridge APK,方便继续使用 Linux Agent 的设备覆盖升级。
发布资产
| 文件 | 用途 | SHA-256 |
|---|---|---|
AirSIM-Android-AVF-0.9.6.apk |
Android 10+ AVF Bridge,连接独立 Linux Agent | f09ad232fcd3f658d746c59b09fc28e7ae950ac23e7957835955a193ef338683 |
AirSIM-Android-Standalone-0.9.6.apk |
Android 10+ Standalone,内置 Relay、身份、媒体与状态编排 | a2dc9d8504a3f109d5009a6ade038d41ef7aeae5241bac351d72ae01f4dc54b5 |
AirSIM-iOS-0.9.6-unsigned.ipa |
iPhone App,含 Watch App 与 Live Activity Extension,需自行重签 | 5fdf0aee72334d20352de2f5a4a690b5363972db1e5319e286d018beb9551e63 |
SHA256SUMS.txt |
三个应用工件的校验清单 | — |
主要变化
- Android Standalone 支持不依赖 Relay、PushKit 和 CallKit 的本地模式;启用本地模式时云端开关不可操作,并保留 VoWLAN 控制与 PCM 通话音频。
- Android 增加可选
READ_SMS扫描兜底、去重游标与近期投递记录,降低厂商系统漏发短信广播时的漏收概率。 - Android 来电提供锁屏全屏页与通知接听、拒接、挂断操作,并加强 Telecom 通话目标选择、静音重试、PCM 监听恢复和进程守护。
- iPhone 拨号页集中显示当前 Android、手机号、Standalone/AVF、VoWLAN 与云端状态,并支持多个已配对 Agent 的列表和自动回退。
- iPhone 本地模式不再因 Relay 注册、PushKit token 或云端状态失败而阻塞配对;云端状态只在打开 App、拨号前和实时活动出现前查询。
- iPhone 在 VPN 关闭或网络路径变化后主动恢复 VoWLAN;实时活动增加显示开关,重新设计紧凑/展开布局与渐进式 Liquid Glass 背景。
- 修复 Android 已结束来电后 iOS 收到延迟 CallKit 挂断回调,错误重试后弹出“本地链路和云端语音都不可达”的问题。
- Relay 将高频心跳和设备状态迁入 Durable Objects,并增加云端控制幂等、超时救援、多 Agent 路由与配额降级路径。
安装与验证
AVF Bridge 包名为 com.airsim.phonecontrol;Standalone 包名为 com.airsim.phonecontrol.standalone。两者使用同一正式 Android 发布证书,但不能相互覆盖。公开 IPA 不含 Apple 签名或 provisioning profile,不能直接安装或提交 TestFlight;正式维护者构建使用 com.eric3u.airsim、production APNs 和 App Store Connect 分发签名。
发布前执行 Android AVF/Standalone、AVF Agent、Relay 和 iOS 测试,并验证两份 APK 的版本、release 签名与 debuggable=false,以及 iOS Release archive 的主 App、Watch App 和 Live Activity Extension 签名。实体三星与 iPhone Air 已用于本地来电、挂断、VoWLAN 与实时活动回归;不同运营商和机型仍需单独验收。
AirSIM AVF Agent v0.4.6
AirSIM AVF Agent 0.4.6-1
本版将 Android Standalone 与 iPhone 多 Agent/本地模式改造所需的 Agent 协议同步到 AVF Linux,并加强通话控制与 Relay 恢复能力。
主要变化
- 配对注册新增 Android Agent 身份、类型、设备名称、厂商、型号和手机号码;心跳同步这些字段,支持 iPhone 在多个 Android Agent 间显示和选择路由。
- 支持本地模式注册。本地模式不要求 Relay、PushKit、CallKit 或云端设备参数,并强制关闭云端命令与推送路径。
- VoWLAN 接听、拒接和挂断支持携带
call_id;Agent 会拒绝过期或不匹配的通话 ID,避免延迟通知控制下一通电话。 - 云端命令 WebSocket 增加分级退避重连,短时断网或 VPN 切换后不再高频重连 Relay。
- 云端挂断增加通话结束确认和重试,降低 iPhone 已挂断而 Android 仍响铃或仍处于通话中的概率。
- Debian 构建兼容 GNU tar 与 BSD tar;首次安装脚本继续支持已有安装的无损恢复和重新配对。
安装与更新
首次安装或恢复服务:
bash -o pipefail -c 'curl -fsSL --connect-timeout 10 --max-time 90 --retry 2 --proto =https --proto-redir =https --tlsv1.2 https://github.com/kai-wu-cortex/AirSIM/releases/download/v0.4.6/install-avf.sh | sudo sh'已安装 0.4.5-1 且 installerd 正常的设备,可直接在 Android AirSIM AVF 管理页更新到 0.4.6-1。仍停留在 0.4.4-1 的设备必须先按 AVF 安装指南执行一次性信任根迁移,不能直接使用 App 内更新。
发布信任
- 包名:
airsim-avf-agent - Debian 版本:
0.4.6-1 - 架构:
arm64 - Ed25519 原始公钥 Base64:
QQPJXjO2mcx13qhv74lXen8ytjJZ2hMCz+ERlz6w5qg= - 公钥 DER SHA-256:
4c39d5afdca2dddd8d22c0a5e02da18e7f07db789baac04bce4cfcd57491b3f4 - Debian 包 SHA-256:
d44bb3359609ba9ee563a214d0806bf049227b6ae149db5b887860f1b42ddb95 install-avf.shSHA-256:a306bcb1b7830d876e677b4b95ce781ef7a6743a0068e211533e798a8b6c9fc5rotate-avf-key.shSHA-256:a5af035818d2f91d3558e5ddb8ab254afb8a4fa553f95795eaceb02508fd725c
Release 同时提供版本化 Debian 包、稳定文件名 Debian 包、Ed25519 detached signature、公钥、SHA-256 文件、首次安装脚本和离线 bootstrap。安装器会在写入系统前验证签名、包名、版本与架构。
验收
dpkg-query -W airsim-avf-agent显示0.4.6-1。systemctl is-active airsim-agent airsim-installerd均返回active。http://<AVF-IP>:8575/api/health返回product=airsim、version=0.4.6。- 在 Android App 中重新配对后,验证本地模式、Relay 云端模式、拨号、接听、拒接、挂断、短信和双向 PCM 音频。
AirSIM Apps v0.9.5
AirSIM Apps v0.9.5
本版修复 Android Standalone 收不到运营商短信的问题,并改善短信发送等待、来电拒接、麦克风授权与本地通话音频上行恢复。AVF Agent 仍为独立的 v0.4.6,Relay 协议未变。
发布资产
| 文件 | 用途 | SHA-256 |
|---|---|---|
AirSIM-Android-Standalone-0.9.5.apk |
Android 10+ Standalone,正式签名,可覆盖升级 | 8198bd5e2a027da10c78b4e22125ac6dba691a25e53d600cbdc052e678756797 |
AirSIM-iOS-0.9.5-unsigned.ipa |
iPhone App,含 Watch App 与 Live Activity Extension,需自行重签 | 68b34226852e580aa9340727a7b466c84ab331c09c5051e15c0802448060cb33 |
SHA256SUMS.txt |
两个应用工件的校验清单 | — |
Android 发布证书 SHA-256 与 v0.9.4 一致:cde660af4c3e053615a4967e5188ca29eee084e50958ead1fd5cc80837b0965b。
主要变化
- Android 两种运行模式新增运营商
SMS_RECEIVED接收器与RECEIVE_SMS授权。Standalone 把收到的短信持久化后提供给 iPhone 的/api/sms和事件流;AVF 模式在 Agent 暂时离线时也会保留待转发短信。 - Standalone 的本地确认与 Relay 投递分别记录,避免 iPhone 确认后、云端尚未收到时丢弃短信。
- 本地短信发送等待窗口按 Android 系统回执及 AVF Agent 的最长执行时间调整,避免 iPhone 在 Android 仍处理时过早报超时。
- iOS 首次进入前台就请求麦克风权限,不再等到重新配对或通话音频启动。
- Android 拒接优先选择响铃中的来电;若通话已接通则执行挂断,并接受系统已移除通话作为结束确认。
- DTMF 弹窗使用 Liquid Glass 按键和按压高亮、缩放与触觉反馈。
- iPhone 本地 PCM 麦克风上行的发送错误不再被静默忽略,会触发有界重连;诊断统计只累计成功发送的帧。
安装与验证
Android Standalone 包名仍为 com.airsim.phonecontrol.standalone,可用 adb install -r 覆盖安装。升级后打开 Android App,并允许新增的“接收短信”权限;没有此权限不会收到运营商短信。
公开 IPA 不含 Apple 签名或 provisioning profile,不能直接安装或提交 TestFlight。为主 App、Watch App、Live Activity Extension 配置自己的 Bundle ID、Team 与 profiles;云端模式还要求 Relay/APNs 凭据匹配。参见 iOS README。
Android Standalone/Core 测试、iOS 模拟器测试、iOS Release iphoneos 归档均通过;APK 为 0.9.5 (78),minSdk 29、targetSdk 35、debuggable=false,apksigner verify 通过。发布时没有连接可用的 Android/iPhone 真机,因此运营商短信、真实来电拒接与双向音频仍需在实际设备和网络环境复测;本版不宣称已消除所有机型的语音路由限制。
AirSIM Apps v0.9.4
AirSIM Apps v0.9.4
AirSIM Apps v0.9.4 新增真正独立于云端基础设施的“仅本地模式”。开启后,iPhone 与 Android 的配对只交换 VoWLAN 本地密钥,不要求 Relay 地址、设备云身份或 APNs token;iOS 同时停用 PushKit、CallKit 和云端 ActivityKit token 注册,避免推送认证问题阻断局域网配对。
发布资产
| 文件 | 用途 | SHA-256 |
|---|---|---|
AirSIM-Android-Standalone-0.9.4.apk |
Android 10+(API 29+)Standalone App,正式签名、不可调试 | 2d0587983d9bb2012751ad92675ec7f9ae622defe8910fa5bc429b4b1c6c1d5a |
AirSIM-iOS-0.9.4-unsigned.ipa |
arm64 iPhone App,包含 Watch App 与 Live Activity Extension,必须自行重签 | 78bfc27ca7c8316953445ab3a84ba284cd5992d686bcdc8e4f674c53519a049e |
SHA256SUMS.txt |
两个应用工件的摘要清单 | — |
Android 发布证书 SHA-256 与 v0.9.1–v0.9.3 相同:
cde660af4c3e053615a4967e5188ca29eee084e50958ead1fd5cc80837b0965b
主要变化
- iOS 首次连接页和设置页新增“仅本地模式”开关;开启后强制关闭云端模式,并禁用云端开关、Relay 地址和云端自检。
- 本地配对负载只包含
local_mode、cloud_enabled=false和 VoWLAN 密钥,不再依赖 Relay、设备 Secret、PushKit/APNs token、Bundle ID 或 APNs 环境。 - 本地模式运行期间停止 PushKit、APNs、CallKit 和远程 Live Activity token 注册;关闭本地模式后恢复系统注册,云端模式仍由用户手动开启。
- Android Standalone 与旧 AVF Agent 均识别
local_mode,禁止本地模式重新开启 Relay,并把本地配对视为完整有效配置。 - iOS 拨号页移除重复标题与独立 VoWLAN 横幅,整体内容居中压缩到单页,不需要滚动。
- 锁屏实时活动与灵动岛加入当前 Android 设备名称、号码、Standalone/AVF 类型、配对数量以及 VoWLAN/云端状态。
Android 更新
- 下载
AirSIM-Android-Standalone-0.9.4.apk,核对本页 SHA-256 和发布证书 SHA-256。 - 使用
adb install -r或系统安装器覆盖 Standalone;包名仍为com.airsim.phonecontrol.standalone,不会覆盖旧 AVF 版 App。 - 在 iPhone 打开“仅本地模式”后重新配对,Android 会保存 VoWLAN 密钥并停止 Relay 心跳与云端命令轮询。
- 如需恢复云端功能,先关闭 iPhone 的“仅本地模式”,再手动开启云端模式并重新配对,使 Android 获得完整云端身份与 Push 参数。
iOS IPA 重签
公开 IPA 是 unsigned 构建,不包含开发证书、provisioning profile 或设备 UDID,不能直接安装。使用自己的 Apple Developer Team 为主 App、Watch App 与 Live Activity Extension 分别配置 Bundle ID、签名和 provisioning profile;需要云端模式时,还必须让自己的 Relay ALLOWED_BUNDLE_ID、APNs topic 与主 App 一致。完整步骤见 iOS README。
验证范围
- iOS 模拟器测试、Android Standalone/Core 测试与 Go Agent 测试全部通过。
- Android 正式 APK 为
0.9.4 (77)、minSdk 29、targetSdk 35、debuggable=false,发布签名与前四版一致,apksigner verify通过。 - iOS Release
iphoneos构建通过;主 App、Watch App 与 Live Activity Extension 均为0.9.4 (77),公开 IPA 内无_CodeSignature或embedded.mobileprovision。 - 已在 iPhone Air 与三星 SM-F766U 安装开发构建并确认应用可启动;局域网配对、通话和切回云端仍应按实际网络环境复测。
安全边界
本地模式不会绕过 VoWLAN 的六位配对码、加密交换、HMAC、时间戳或 nonce 校验。公开 APK/IPA 不包含 APNs 私钥、Dashboard token、Cloudflare token、AVF 控制 token、Android 发布私钥或 Apple 签名身份。AirSIM 不能替代系统紧急呼叫能力。
AirSIM Apps v0.9.3
AirSIM Apps v0.9.3
AirSIM Apps v0.9.3 为多 Android Agent 场景补齐可见性与自动云端接管。iOS 拨号页现在显示当前路由到的 Android 手机、号码、Agent 类型,以及 VoWLAN 和云端在线状态;同一 iPhone 配对多个 Standalone / AVF Agent 时,可打开完整列表查看每台设备。
发布资产
| 文件 | 用途 | SHA-256 |
|---|---|---|
AirSIM-Android-Standalone-0.9.3.apk |
Android 10+(API 29+)Standalone App,正式签名、不可调试 | f0a0cd8254828345adeb5f12887c8d4b0cd6b2244c6e3012647873fe0aba9f75 |
AirSIM-iOS-0.9.3-unsigned.ipa |
arm64 iPhone App,包含 Watch App 与 Live Activity Extension,必须自行重签 | 39716933aa1cd622c98a876d7fbdcb04728f017a711fd18fc700e4768460dcaf |
SHA256SUMS.txt |
两个应用工件的摘要清单 | — |
Android 发布证书 SHA-256 与 v0.9.1、v0.9.2 相同:
cde660af4c3e053615a4967e5188ca29eee084e50958ead1fd5cc80837b0965b
主要变化
- iOS 拨号页新增“当前 Android”卡片,显示设备名称、手机号码、Standalone/AVF 类型,以及 VoWLAN、云端两个独立状态。
- iPhone 配对多个 Android Agent 时显示“全部 N”入口,列表逐台展示同样的信息;没有可用当前路由时仍可查看离线设备。
- VoWLAN 优先选择本地可达的 Agent;VoWLAN 不可用时,Relay 选择最近 90 秒内最新心跳的 Agent 作为当前云端路由。
- Relay 按稳定
android_agent_id保存多个心跳,同时保留旧版单 Agent 镜像与legacy兼容项。 - Android Standalone 使用包名和
ANDROID_ID派生不可逆稳定标识,并上报设备名称、厂商、型号与可选 SIM 号码。 - AVF Agent v0.4.6 从已认证的 Android 配对信息读取相同元数据并加入云端心跳。
- 手机号码不进入 Bonjour 广播;VoWLAN 仅在 HMAC 鉴权后的健康接口返回,云端仅通过设备鉴权状态接口读取。运营商未写入号码或用户拒绝权限时显示“号码未提供”。
Android 更新
- 下载
AirSIM-Android-Standalone-0.9.3.apk,核对本页 SHA-256 和发布证书 SHA-256。 - 使用
adb install -r或系统安装器覆盖 Standalone;包名仍为com.airsim.phonecontrol.standalone,不会覆盖旧 AVF 版 App。 - 授予可选的“读取手机状态/号码”权限,才能在 iPhone 显示 SIM 号码;不授权不影响拨号、VoWLAN 或云端模式。
- 打开 App 确认 Relay 心跳恢复,再在 iPhone 拨号页核对设备名称、号码和当前路由。
iOS IPA 重签
公开 IPA 是 unsigned 构建,不包含开发证书、provisioning profile 或设备 UDID,不能直接安装。使用自己的 Apple Developer Team 为主 App、Watch App 与 Live Activity Extension 分别配置 Bundle ID、签名和 provisioning profile,并让自己的 Relay 的 ALLOWED_BUNDLE_ID、APNs topic 与主 App 一致。完整步骤见 iOS README。
验证范围
- Relay 40 项测试、iOS 23 项模拟器测试、Android Standalone/Core/Bridge 测试、Go Agent/Installer 测试与 Debian 打包测试全部通过。
- Android 正式 APK 为
0.9.3 (76)、minSdk 29、targetSdk 35、debuggable=false,发布签名与前两版一致,apksigner verify通过。 - iOS Release
iphoneos构建通过;主 App、Watch App 与 Live Activity Extension 均为0.9.3 (76),公开 IPA 内无_CodeSignature或embedded.mobileprovision。 - 多 Agent 的 Relay 保存、活跃路由选择、旧响应兼容与 iOS 解码已有自动化覆盖;小米/三星跨网自动切换仍需用正式包做端到端复测。
安全边界
本项目仅限许可证允许的非商业用途。APK/IPA 不包含 APNs 私钥、Dashboard token、Cloudflare token、AVF 控制 token、Android 发布私钥或 Apple 签名身份。AirSIM 不能替代系统紧急呼叫能力。
AirSIM Apps v0.9.2
AirSIM Apps v0.9.2
AirSIM Apps v0.9.2 首次发布 Android Standalone APK:AVF Agent 的 Relay 心跳、云端命令、设备身份、状态 API 与媒体编排已合并进 Android 前台服务。新安装不再需要 Linux Terminal、Debian、AVF 私网、8575/8576 或 airsim-installerd。旧 AVF Linux Agent v0.4.5 仍保留用于兼容与回退。
发布资产
| 文件 | 用途 | SHA-256 |
|---|---|---|
AirSIM-Android-Standalone-0.9.2.apk |
Android 10+(API 29+)Standalone App,正式签名、不可调试 | 604e00aac8317ae92d2e0e7e98b91b4eb16b20ec2719ab2a06980c79e4672658 |
AirSIM-iOS-0.9.2-unsigned.ipa |
arm64 iPhone App,包含 Watch App 与 Live Activity Extension,必须自行重签 | cee5307b9dd3297e3698acd6127fc13aff21e9f4c7cdc29b9769f1063487ca86 |
SHA256SUMS.txt |
两个应用工件的摘要清单 | — |
Android 发布证书 SHA-256 应与 v0.9.1 一致:
cde660af4c3e053615a4967e5188ca29eee084e50958ead1fd5cc80837b0965b
主要变化
- Android 内置 Agent 负责 Relay 注册、30 秒心跳、WebSocket/HTTP 命令、设备状态、Push 与单路云端 PCM 编排;状态读取改为进程内接口。
- Android Bridge 将 Agent 的
send_sms命令与 Telecom 通话操作分流,避免错误地进入通话 ID 校验并出现active call id mismatch。 - 发送短信前检查系统权限、短信功能及默认短信 SIM;使用 Android 系统短信服务分段发送,等待每段的系统发送回执后才向 Agent 报告结果。回执不等于收件人已收到;超时后应先核对,避免重复发送。
- 小米 HyperOS 无法打开默认电话角色选择页时,在用户已授权 Shizuku 后由 APK 自动完成角色设置;启动时清理遗留的旧 PCM Bridge 进程。
- 非三星 Android 通过系统
TYPE_TELEPHONY音频设备选择通话上下行;三星继续优先使用语音 TX 路由。小米 HyperOS 真机已验证通话声音在 iPhone 播放。 - iOS PCM 每次 TCP 重连都会生成新的握手 nonce,避免服务端把重连误判为重放并出现
cycle failed。 - iOS 短信通知接受 Agent 的纳秒精度时间戳,使用
delivery_id对齐推送与本地同步副本。点击短信通知可进入发件人会话,冷启动也会保留导航请求。 - 本次未新增三星系统短信收件广播采集;iOS 通知链路的前提仍是 Android/Agent 已生成并上传相应短信事件。不要把发信验收视为完整双向短信验收。
Android 更新
- 下载
AirSIM-Android-Standalone-0.9.2.apk,核对本页 SHA-256 和发布证书 SHA-256。 - Standalone 使用独立包名
com.airsim.phonecontrol.standalone,可与旧 AVF 版并存,但不会继承旧包的配对资料;安装前先记录 Relay、设备 ID 和配对信息。 - 启动 Shizuku 并授权 AirSIM Standalone,授予电话、短信和通知权限,再将它设为默认电话 App。HyperOS 系统页面不可用时回到 App,让它自动完成设置。
- 同一时间只让一个 AirSIM 包持有默认电话角色和 PCM 会话。Standalone 验证完成后可停止 AVF Agent;清除 AVF/Debian 数据不是安装步骤。
- 在 iPhone 分别验证拨号、接听、挂断、双向音频和短信;短信系统回执后仍需由收件方确认实际收到。
iOS IPA 重签
公开 IPA 是 unsigned 构建,不包含开发证书、provisioning profile 或设备 UDID,不能直接安装。使用自己的 Apple Developer Team 为主 App、Watch App 与 Live Activity Extension 分别配置 Bundle ID、签名和 provisioning profile,并让自己的 Relay 的 ALLOWED_BUNDLE_ID、APNs topic 与主 App 一致。完整步骤见 iOS README。
验证范围
- Android Standalone、Bridge/CoreTests、iOS 模拟器测试、Agent/Installer/Relay 回归测试及打包检查通过。
- Android 正式 APK 为
0.9.2 (74)、minSdk 29、targetSdk 35、debuggable=false,发布签名与 v0.9.1 相同,apksigner verify通过。 - iOS Release
iphoneos构建与 IPA ZIP 完整性检查通过;主 App、Watch App 与实时活动扩展均为0.9.2 (74),IPA 内无代码签名或 provisioning profile。 - 小米 HyperOS 真机已验证 Standalone 的默认电话角色、VoWLAN 配对和通话音频路由;短信发送路径此前使用相同代码的开发构建实测成功,收件方确认收到。正式签名 v0.9.2 APK 仍需安装复测;iOS 短信通知的前台、锁屏、冷启动与云端模式尚未完成端到端验收。
安全边界
本项目仅限许可证允许的非商业用途。APK/IPA 不包含 APNs 私钥、Dashboard token、Cloudflare token、AVF 控制 token、Android 发布私钥或 Apple 签名身份。AirSIM 不能替代系统紧急呼叫能力。
AirSIM Apps v0.9.1
AirSIM Apps v0.9.1
AirSIM Apps v0.9.1 发布三星 Android 控制 App 与可重签的 iOS/watchOS 构建产物。AVF Linux Agent 继续使用独立的 v0.4.5 Release;本次无需升级 Agent。
发布资产
| 文件 | 用途 | SHA-256 |
|---|---|---|
AirSIM-Android-0.9.1.apk |
Android 10+(API 29+)三星控制 App,正式签名、不可调试 | 8fe3407d41e5ce5b5f8f57a4643bb92c02a58d17b4a124249626b337c7ec3927 |
AirSIM-iOS-0.9.1-unsigned.ipa |
arm64 iPhone App,包含 Watch App 与 Live Activity Extension,必须自行重签 | 8ee0da0578b7ae1e98eb1578a5c3b850563e2b7bc14fb8bd6a905a7a802aff05 |
SHA256SUMS.txt |
两个应用工件的摘要清单 | — |
Android 发布证书 SHA-256 必须与 v0.9.0 相同:
cde660af4c3e053615a4967e5188ca29eee084e50958ead1fd5cc80837b0965b
主要变化
- 三星 VoWLAN 控制与 PCM 监听首选端口改为
7592/7593,避开 DJOneHub 的7590/7591。首选端口被占用时仅在已选热点地址上绑定系统分配端口,并通过 Bonjour 公布实际控制/PCM 端口,避免BindException使服务卡在准备中。 - Android 状态页明确当前 VoWLAN / 云端 / 离线模式,诊断链路更易区分。
- iOS 设置页显示传输模式与状态,提供云端模式四阶段自检:本机 Push 凭据、Relay 身份、设备注册、Agent 心跳。自检不会拨号或发送短信。
- 云端通话 PCM 增加有界接收缓冲、播放完成后补帧,以及 20 毫秒节奏的单路发送队列,减少网络突发与连续发送导致的卡顿风险。与既有 Relay PCM 协议兼容。
Android 更新
- 下载
AirSIM-Android-0.9.1.apk,核对 SHA-256 与上述发布证书指纹。 - 已安装正式签名 v0.9.0 的设备可直接覆盖更新,保留本地配对资料。若设备仍是旧 debug 签名包,则无法覆盖;先记录 AVF 地址和配对资料,再卸载旧包并安装新版。
- 启动三星端 AirSIM,确认它仍是默认电话 App 且 Shizuku 已授权。确认 VoWLAN 状态为就绪,诊断中可看到实际控制/PCM 端口;若 DJOneHub 同机运行,不应再出现端口
BindException。 - 在 iPhone 与三星同热点时复测拨号、接听、挂断及双向语音。再切换云端模式,用设置页自检确认 Relay/注册/Agent 心跳,再在真实通话中检查音频。
iOS IPA 重签
公开 IPA 是 unsigned 构建,不包含开发证书、provisioning profile 或设备 UDID,不能直接安装。需要用自己的 Apple Developer Team 为主 App、Watch App 与 Live Activity Extension 分别配置 Bundle ID、签名和 provisioning profile,并让自己的 Relay 的 ALLOWED_BUNDLE_ID、APNs topic 与主 App 一致。完整步骤见 iOS README。
验证范围
- Android CoreTests、iOS 模拟器测试、Agent/Installer/Relay 回归测试及打包检查通过。
- 正式 APK 为
0.9.1 (73)、minSdk 29、targetSdk 35、debuggable=false,apksigner verify通过且发布证书与 v0.9.0 相同。iOS Releaseiphoneos构建与 IPA ZIP 完整性检查通过;IPA 内主 App 为0.9.1 (73),包含 Watch App 和实时活动扩展,没有代码签名或 provisioning profile。 - 三星实体机上曾验证 VoWLAN 控制与 PCM 可同时就绪,且 DJOneHub 继续使用其原端口;发布版本仍需用户在真实拨号、接听和双向语音中复测。
- iPhone Air 已安装开发签名构建;云端优化的真实双向通话尚未完成端到端验收,不将构建通过等同于音频质量已验证。
安全边界
本项目仅限许可证允许的非商业用途。APK/IPA 不包含 APNs 私钥、Dashboard token、Cloudflare token、AVF 控制 token、Android 发布私钥或 Apple 签名身份。AirSIM 不能替代系统紧急呼叫能力。