Repository navigation
v0.2.32: 恢复原始DiPlay正式签名,解决覆盖安装不兼容与有线连接死锁
·
216 commits
to main
since this release
🚀 v0.2.32 更新说明 (Release Notes)
1. 🔐 找回原始 DiPlay Private Beta 签名私钥库,彻底解决覆盖升级签名不兼容问题 (Issue #70)
- 根因分析:由于历史构建环境调整,自 v0.2.24 至 v0.2.31 的构建中误用了默认的 Android Debug 证书(证书指纹 SHA-256 前缀为
68b4917216c743bd),而早期正式版(如 v0.2.21)使用的是原始的DiPlay Private Beta官方签名(证书指纹 SHA-256 前缀为bca015c0cb43469f)。导致已安装早期版本的车主在覆盖安装最新版本时,Android 系统由于签名不匹配直接报错INSTALL_FAILED_UPDATE_INCOMPATIBLE(提示解析软件包失败或无法更新)。 - 精准解决:
- 已成功找回并恢复 v0.2.21 使用的原始正式签名私钥库(
release-signing.jks,完整 SHA-256 指纹:bca015c0cb43469fee55539b4054ff862671e7b41e6612eee0cb8566d327b7ae); - 本次发布的 v0.2.32 已切换回原始官方签名重新构建,所有此前安装 v0.2.21 及早期版本的使用者均可直接覆盖安装升级,无需卸载原有应用,保留全部配对记录与车机设置;
- 在工程构建脚本中加入了强制性证书白名单校验(
verifyReleaseSigningIdentity),如检测到非官方私钥库将立即阻断构建,从源头杜绝误签风险。
- 已成功找回并恢复 v0.2.21 使用的原始正式签名私钥库(
2. 🔌 修复 AC8227L 等车机有线连接卡在“CarPlay控制通道运行中”死锁故障 (Issue #61)
- 根因分析:在 AC8227L 等车机(Android 9 / API 27)有线连接中,车机向 iPhone 发送
carplay-start-session指令并完成图标传输后,底层的 NCM/VPN 桥接层在尚未收到入站数据帧时peerMac为空。- 当 iPhone 向 Android 发送邻居请求(NS)以解析
fe80::2时,Android 内核通过 TUN 回复的邻居通告(NA)为单播包;而桥接层由于尚未学习到peerMac,将该单播包静默丢弃; - 这导致 iPhone 始终无法获取车机 MAC 地址,无法向 AirPlay 监听端口发起 TCP 连接,最终在数十秒后因 USB 读取超时抛出
FAILED: Android could not queue USBMUX read request;
- 当 iPhone 向 Android 发送邻居请求(NS)以解析
- 精准修复:
- 在
Ipv6NcmBridge启动时,主动向全节点组播地址(ff02::1)发送携带 Override 标志与 Source Link-Layer 选项的无应答邻居通告(Unsolicited Neighbor Advertisement),让 iPhone 立即建立正确的邻居缓存与 MAC 映射,打通 AirPlay TCP 握手通道。
- 在
3. 🛠️ 增强老旧车机 USB 驱动瞬时 EBUSY 容错与单元测试套件
- 针对部分老旧车机 USB 驱动在切换配置时出现的瞬态
EBUSY(errno 16)增加平滑重试逻辑; - 补全测试套件的主机 JVM Conscrypt 依赖,确保单元测试 100% 通过。
校验信息:
- 文件名:
DiPlay-v0.2.32-legacy-release.apk - SHA-256:
7b1c2b694f760d6906f1efb84c535df5c59474fab4bca889f912897e3c54f8df - 签名证书:
CN=DiPlay, OU=Private Beta, O=DiPlay, C=CN - 证书指纹 (SHA-256):
bca015c0cb43469fee55539b4054ff862671e7b41e6612eee0cb8566d327b7ae - 签名方案: v1 (JAR) + v2 (APK Signature) 双重签名,兼容 Android 4.4 ~ Android 14+