Skip to content

Releases: kai-wu-cortex/AirSIM

AirSIM Apps v0.9.7.2 — Android 10–13 修复与 VoBLE 稳定性,推荐安装

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 16 Oct 14:51

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 Number 91,上传回执时间为 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 修复版,推荐安装

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 14 Oct 12:32

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.apk
  • AirSIM-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

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 13 Oct 17:44

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

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 12 Oct 08:48

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

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 12 Oct 09:39

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.sh SHA-256:a306bcb1b7830d876e677b4b95ce781ef7a6743a0068e211533e798a8b6c9fc5
  • rotate-avf-key.sh SHA-256:a5af035818d2f91d3558e5ddb8ab254afb8a4fa553f95795eaceb02508fd725c

Release 同时提供版本化 Debian 包、稳定文件名 Debian 包、Ed25519 detached signature、公钥、SHA-256 文件、首次安装脚本和离线 bootstrap。安装器会在写入系统前验证签名、包名、版本与架构。

验收

  1. dpkg-query -W airsim-avf-agent 显示 0.4.6-1。
  2. systemctl is-active airsim-agent airsim-installerd 均返回 active。
  3. http://<AVF-IP>:8575/api/health 返回 product=airsim、version=0.4.6。
  4. 在 Android App 中重新配对后,验证本地模式、Relay 云端模式、拨号、接听、拒接、挂断、短信和双向 PCM 音频。

AirSIM Apps v0.9.5

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 10 Oct 06:44

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

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 10 Oct 00:43

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 更新

  1. 下载 AirSIM-Android-Standalone-0.9.4.apk,核对本页 SHA-256 和发布证书 SHA-256。
  2. 使用 adb install -r 或系统安装器覆盖 Standalone;包名仍为 com.airsim.phonecontrol.standalone,不会覆盖旧 AVF 版 App。
  3. 在 iPhone 打开“仅本地模式”后重新配对,Android 会保存 VoWLAN 密钥并停止 Relay 心跳与云端命令轮询。
  4. 如需恢复云端功能,先关闭 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

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 09 Oct 08:42

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 更新

  1. 下载 AirSIM-Android-Standalone-0.9.3.apk,核对本页 SHA-256 和发布证书 SHA-256。
  2. 使用 adb install -r 或系统安装器覆盖 Standalone;包名仍为 com.airsim.phonecontrol.standalone,不会覆盖旧 AVF 版 App。
  3. 授予可选的“读取手机状态/号码”权限,才能在 iPhone 显示 SIM 号码;不授权不影响拨号、VoWLAN 或云端模式。
  4. 打开 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

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 09 Oct 02:07

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 更新

  1. 下载 AirSIM-Android-Standalone-0.9.2.apk,核对本页 SHA-256 和发布证书 SHA-256。
  2. Standalone 使用独立包名 com.airsim.phonecontrol.standalone,可与旧 AVF 版并存,但不会继承旧包的配对资料;安装前先记录 Relay、设备 ID 和配对信息。
  3. 启动 Shizuku 并授权 AirSIM Standalone,授予电话、短信和通知权限,再将它设为默认电话 App。HyperOS 系统页面不可用时回到 App,让它自动完成设置。
  4. 同一时间只让一个 AirSIM 包持有默认电话角色和 PCM 会话。Standalone 验证完成后可停止 AVF Agent;清除 AVF/Debian 数据不是安装步骤。
  5. 在 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

Choose a tag to compare

@kai-wu-cortex kai-wu-cortex released this 07 Oct 18:19

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 更新

  1. 下载 AirSIM-Android-0.9.1.apk,核对 SHA-256 与上述发布证书指纹。
  2. 已安装正式签名 v0.9.0 的设备可直接覆盖更新,保留本地配对资料。若设备仍是旧 debug 签名包,则无法覆盖;先记录 AVF 地址和配对资料,再卸载旧包并安装新版。
  3. 启动三星端 AirSIM,确认它仍是默认电话 App 且 Shizuku 已授权。确认 VoWLAN 状态为就绪,诊断中可看到实际控制/PCM 端口;若 DJOneHub 同机运行,不应再出现端口 BindException。
  4. 在 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 Release iphoneos 构建与 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 不能替代系统紧急呼叫能力。