ARTICLE · 1151992
把 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 运行时。
它能做到什么程度
先说硬件门槛,因为这是最容易买错的地方:
一个绕不过去的手动步骤:启动 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 的认可或支持。
和同类方案比
| 会,替换成 Linux | |||
它的位置很独特:既要本地跑、又不要 root、还不接管系统。 代价就是前面那个 proot 环境——沙箱被削弱、桌面只能软件渲染、遇到 Android 的进程限制得靠"帮我修好"按钮。
这台设备真正的天花板不在软件,在芯片:当 Adreno 730 是硬性下限时,能玩什么基本就由你手里那台机器决定了。
总结
这个项目把"在安卓上跑真正的 Steam"这件事做成了:不是串流,不是模拟,而是在一个无需 root 的 Linux 用户环境里跑 Valve 官方的 ARM64 客户端,Windows 游戏走 Proton + FEX 翻译。
它最有意思的地方不在技术栈,而在那个四包名分发——它诚实地暴露了移动端的一层潜规则:有些性能是被应用的名字解锁的,不是被硬件。 而这层绕行的代价,是用户必须在下载时格外小心。
要用它的前置条件也很清楚:Adreno 730 起步的机器、能接受独立游戏级别的性能、只从 Releases 下载并核对哈希、以及放弃带内核级反作弊的网游。 这四条都符合的话,它可能是目前把安卓掌机变成 Steam 掌机最省事的一条路。