Skip to content

feat: 支持独立 APK 输入源插件,为 CarLink 独立接入提供 SDK - #50

Merged
fython merged 6 commits into
mainfrom
feat/apk-projection-plugins
Oct 26, 2026
Merged

fython merged 6 commits into
mainfrom
feat/apk-projection-plugins

Conversation

@fython

@fython fython commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

安装兼容的第三方 APK 后,WheelPlay 可在「输入源 → 插件输入源」中发现、启用和连接其投影 Service。插件以独立 UID/进程运行,通过版本化 AIDL 接入现有投影运行时,支持将未来 ICCOA CarLink 的 SDK、native 库、权限和服务放入独立插件 APK。

  • 提供独立 projection-plugin-api SDK 与示例 APK。API v2 支持 Surface 视频、最多 10 点触控、昼夜模式和插件设置入口;只扫描元数据,默认禁用,授权绑定组件、签名与首次安装时间。
  • 内置 ICCOA 卡片通过 SOURCE_ID=iccoa-carlink 关联已安装插件,直接提供设置、启用、连接和停止控件。未安装时显示安装引导,同 ID 的多个插件逐个列出,接口不兼容时显示具体原因;关联 ID 不替代组件身份或用户授权。
  • 首页默认选择 CarPlay (iPhone),可切换并记住 Android Auto、VNC 或已启用且兼容的插件;连接和设置入口随选择更新,当前投影状态与停止操作仍指向实际会话。选择不会自动启停投影,失效插件回退 CarPlay,其他输入源被选中时不会误触发 CarPlay 自动连接。
  • 停止时立即撤销输入并等待插件确认清理。可选的专用进程模式还要求原 Binder 真正死亡,之后才关闭宿主输出并释放占用;解绑后卡住的专用进程有退出兜底,异常死亡或无线清理失败仍保留隔离。示例源运行在独立的私有进程,设置页面留在主进程。
  • 插件主动断开或报错时,SDK 先通知宿主撤销输入并启动清理超时,再等待实际资源释放。启动/运行失败原因保留在首页及对应插件页,刷新和 Activity 重建后仍可查看;重试或 APK 变更清除旧记录,清理成功仍正常释放占用。SDK 基类与真实宿主会话联动测试覆盖主动断开、清理挂起、握手拒绝、启动失败及手动停止。
  • API v2 使用精确版本匹配,宿主和插件需要一起更新,避免旧宿主误判进程清理已完成。升级/卸载/禁用会终止旧会话;回调验证 UID/token,停止超时固定为 15 秒。
  • 为 common 的完整 Robolectric 测试套件显式配置 2 GB 测试堆,避免默认 512 MB 导致加载 Android SDK 资源时内存耗尽;Gradle daemon 的堆配置不控制测试 JVM。
  • 提供中英繁体界面、开发文档及 CI SDK/APK 产物。Android 28/36 instrumentation 连续执行两次独立 APK 会话,覆盖 Surface 图像、触控、昼夜模式、停止确认和实际进程退出。

视频使用现有 JPEG/WebP 链路;暂未开放音频、麦克风与编码帧 IPC。PR 不包含 CarLink 专有 SDK 或其接入实现。

验证:已将 main(0db266b)合入功能分支,保留 Android Auto 麦克风授权流程与首页输入源选择记忆,并修正拒绝授权提示的资源命名空间。按 CI 全部构建任务本地执行成功:SDK 8、shared 478、common 422,共 908 项测试全部通过;SDK AAR、宿主/示例 APK、instrumentation APK、mobile/sample lint 均通过。Android 28/36 跨进程 instrumentation 由 CI 执行。现有插件需使用更新后的 SDK 基类重新构建,AIDL 和 API v2 版本号不变。

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Failed ❌

View logs ↗
5d70d6f 2026-10-26T01:20:31.344Z View logs ↗
  • Build: Failed ❌

View logs ↗
c6a93ae 2026-10-24T07:22:08.746Z View logs ↗
  • Build: Failed ❌

View logs ↗
68634ca 2026-10-23T18:03:49.576Z View logs ↗
  • Build: Failed ❌

View logs ↗
d3a73c7 2026-10-23T17:21:09.175Z View logs ↗
  • Build: Failed ❌

View logs ↗
dcc051c 2026-10-23T16:15:40.869Z View logs ↗

@fython
fython marked this pull request as ready for review October 26, 2026 01:40
@fython
fython merged commit 54a636a into main Oct 26, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant