Skip to content

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 分发为不同构建。