夜雨聆风学习资料网

ARTICLE · 1151992

把 Steam 装进安卓掌机

把 Steam 装进安卓掌机

它不是模拟器,也不是串流。它在安卓设备上跑起一个 Linux 运行时,把 Valve 官方的 Steam 客户端装进去,开出 Steam Deck 那套界面,然后用 ARM64 版 Proton 直接跑 Windows 游戏。


先说结论

如果你手上有一台骁龙 8 Gen 2 以上的安卓掌机或手机,这个项目能让它看起来、用起来都像一台 Steam Deck——Steam 大屏界面、快捷菜单、性能浮层、手柄映射,一整套。

它的技术路线值得单独说:不串流、不模拟。设备上会跑一个精简的 Linux 用户环境(不需要 root),Steam 的 ARM64 Linux 客户端跑在里面,Windows 游戏走 Proton + FEX 指令翻译。

但有两个必须先知道的前提:

第一,性能是有天花板的。 实测独立游戏能玩,3A 大作基本别想。

第二,它有一个非常特别、也非常需要警惕的分发方式——同一个构建会以四个不同的包名发布,其中三个伪装成别家的应用。 这件事背后的原因比表面看起来有意思。

它到底是什么

先排除两个误解:

  • • 它不是模拟器。 不是通过模拟 x86 硬件来跑游戏,走的是 Proton 兼容层 + FEX 指令翻译。
  • • 它不是串流客户端。 不需要一台 PC 在背后推流,游戏直接下载到你设备上跑。

它做的事情是:在 Android App 里启动一个 Linux 运行时,把 Steam 装进去。而且这个 Linux 环境是用 proot 构建的用户态环境,不需要 root——这是它能被普通用户接受的关键。

界面上,它刻意保持 Deck 模式常开。README 说这是有意为之:一旦允许切换,Steam 就会开始提供"降级"选项(也就是回到桌面模式),而桌面模式在手机上并不好用。关掉一个功能,是为了不让用户走错路。

技术栈从外到内大概是:

Android App  └─ Linux 运行时(proot,无需 root)       ├─ Gamescope 合成器       ├─ Steam 客户端(ARM64 Linux 原生)       │    └─ Proton(ARM64 版)       │         └─ FEX:x86 / x64 → ARM 指令翻译       └─ DXVK / Vulkan:把 D3D 调用翻译到 Vulkan

最特别的设计:四个 APK,三个是"假名"

这是这个项目最值得聊的一段,因为它同时展示了移动端的一个真实行业怪象,和它会带来的安全风险。

0.3.0 版本一共发布四个 APK,除了它自己的包名,另外三个分别是:

  • • com.tencent.ig —— PUBG Mobile 的包名
  • • com.antutu.benchmark.full —— 安兔兔评测的包名
  • • com.ludashi.benchmark —— 鲁大师评测的包名

仓库里的 tools/release/variants.txt 解释了原因:这些构建除了清单文件里的包名,其他完全相同。 这么做的理由是——

有些手机只肯把性能模式开放给特定名字的应用。

换句话说,厂商在系统里做了一层白名单:只有检测到"这是某款游戏"或"这是某款跑分软件",才解除频率限制、放开调度策略。

这个做法绕开的是厂商的门禁,而不是软件的授权。它没有盗用别人的代码,也没有修改别人的应用,只是在自己的 APK 上贴了一个不同的包名。四个变体可以并排安装,各自有独立的数据目录。

但风险必须讲清楚:这三个包名对应的应用与实际内容完全无关。README 特意提醒——下载时务必看清文件名,这四个文件里没有一个是它名字看起来的那个游戏或跑分工具。 如果一个用户看到"安兔兔"就装,他装到的是一个 Steam 运行时。

它能做到什么程度

先说硬件门槛,因为这是最容易买错的地方:

项目
要求
系统
Android 9 或更高
GPU
Adreno 730 或更新,或 Adreno 8xx
明确不支持
Mali、Xclipse、PowerVR、Adreno 710
Adreno 6xx
实验性:DX11 走 DXVK 2 可能能跑,DX12 游戏仍可能崩
root
不需要
空间
运行时约 3GB,桌面与模拟器再加 1.1GB

一个绕不过去的手动步骤:启动 Steam 之前,必须去开发者选项里关掉"限制子进程"(Restrict child processes)。在 Android 12 / 13 上这个选项可能压根不存在——这时首次启动会出现一个"帮我修好"(Fix it for me)的按钮,自动完成配置。

这个细节其实反映了一个更大的问题:在别人的操作系统里跑一套完整的 Linux 用户态,注定要和 Android 的进程限制、权限模型反复打架。 那个"帮我修好"按钮,就是给打不赢的那部分准备的兜底。

性能上,第三方实测给了很具体的数字:《潜水员戴夫》在最低画质下约 46 FPS,完全可玩;《对马岛之魂》即使全低、贴图中等也难上 30 FPS。

结论很清楚:独立游戏和轻量 3D 是甜蜜区,3A 大作不是。

一些用心的细节

GPU 驱动单独成页。 它会识别你的 Adreno 型号,为你维护成对的运行时驱动 + 显示驱动(包括项目自己的 DD-Turnip 构建),并提供 Manual 选项让你自己选一对;设备没验证过时会给出警告。在一台靠驱动吃饭的机器上,把驱动配对当作一等公民是对的。

帧生成用的是你自己的软件。 它不是自己打包一份帧生成,而是从你自己的 Steam 库里取 Lossless Scaling,沿着 lsfg-vk 的思路、由贡献者移植过来,加上 60 / 90 / 120 FPS 三档目标。README 写得很干脆:不附带那个软件的任何着色器,你必须自己拥有它。 这是一个很干净的合规处理方式。

手柄映射是"被当成 Steam Deck"。 在 Steam 会话里,客户端把设备识别成 Steam Deck 控制器,有真正的快捷菜单键和设备陀螺仪;游戏收到的是 Steam Input 的虚拟手柄,所以你已有的布局能直接沿用。不想用 Steam Input 的游戏,还有 Xbox 360 手柄选项兜底。触屏也做了——屏幕摇杆闲置时隐藏,在你触碰的位置重新出现。

双屏设备有第二块屏的用法。 双屏掌机的副屏可以当作 Steam Deck 的背键和触摸板;也可以切成键盘、触摸板或者辅助终端,主屏留给游戏。

第三方商店能接进 Steam。 它带了 GOG、Epic、Amazon Games 的登录入口,可以浏览目录和库、把游戏下到 Games 存储区,然后作为非 Steam 游戏加进 Steam 客户端——于是它们和别的游戏一样走 Proton 启动。这个"统一入口"的设计省掉了多套启动器切换的痛苦。

还有一个纯工程上的成绩:Steam 的启动时间从约 31 秒降到约 6 秒,而这正是"离线模式"能用的前提——如果每次开 Steam 都要等半分钟联网,离线模式就没有意义。

边界与风险

第一,下载渠道。 README 里有一行加粗警告:

DroidDeck 没有独立官网。任何声称是 DroidDeck 团队提供的下载链接,都不要点。

这不是客套话。第三方整理资料里提到一个真实历史问题:0.1.6 之前的构建是用公开的测试密钥签名的,也就是说任何人都可以伪造一个看起来合法的更新包。再加上"没有官网"这个前提,搜索引擎上排在前面的一半"下载页"都可能是投毒的。

所以正确做法只有一条:只从项目的 Releases 页面下载,并且逐个核对 SHA-256。 对于一个要跑完整 Linux 环境、还要你登录 Steam 账号的东西,这条没有商量余地。

第二,反作弊。 内核级反作弊在这个环境里不可能工作,而且不会有。所以计划的时候就把带反作弊的多人对战排除掉,只考虑单机和无内核反作弊的游戏。

第三,它不替换 Android。 这一点比起 ROCKNIX 之类方案是优势:它是一个普通 App,可以装、可以卸,游戏都在 App 自己的目录里,不接管系统。你最多可以把它设成启动器,让设备开机进 Steam,但 Android 还在下面。

第四,几个实现上的妥协,README 自己写了:

  • • 桌面合成走的是软件渲染——所以桌面模式不该指望性能;
  • • 在 proot 下,Firefox 的沙箱是被削弱的——这是一个安全相关的让步,用它上网要有意识;
  • • 硬件验证覆盖有限,兼容性和性能因设备而异。

第五,日志。 日志保留在 App 私有目录(files/logs/,最近 30 个会话)。"分享日志"会把最新一次会话连同商店和工具日志打成一个已脱敏的 zip,方便贴给社区排查。

第六,它和 Valve 无关。 Steam 和 Proton 属于 Valve,项目不附带任何 Valve 的二进制文件,也没有得到 Valve 的认可或支持。

和同类方案比

方案
游戏跑在哪
要不要 root
会不会替换系统
串流(Steam Link / Moonlight)
你的 PC
不要
不会
Winlator 等 Windows 兼容层
设备本地
不要
不会
ROCKNIX 等独立 Linux 系统
设备本地
要动引导
会,替换成 Linux
DroidDeck
设备本地
不要
不会

它的位置很独特:既要本地跑、又不要 root、还不接管系统。 代价就是前面那个 proot 环境——沙箱被削弱、桌面只能软件渲染、遇到 Android 的进程限制得靠"帮我修好"按钮。

这台设备真正的天花板不在软件,在芯片:当 Adreno 730 是硬性下限时,能玩什么基本就由你手里那台机器决定了。

总结

这个项目把"在安卓上跑真正的 Steam"这件事做成了:不是串流,不是模拟,而是在一个无需 root 的 Linux 用户环境里跑 Valve 官方的 ARM64 客户端,Windows 游戏走 Proton + FEX 翻译。

它最有意思的地方不在技术栈,而在那个四包名分发——它诚实地暴露了移动端的一层潜规则:有些性能是被应用的名字解锁的,不是被硬件。 而这层绕行的代价,是用户必须在下载时格外小心。

要用它的前置条件也很清楚:Adreno 730 起步的机器、能接受独立游戏级别的性能、只从 Releases 下载并核对哈希、以及放弃带内核级反作弊的网游。 这四条都符合的话,它可能是目前把安卓掌机变成 Steam 掌机最省事的一条路。

相关学习资料