在安卓手机上跑 PC 游戏:Winlator 从安装、建容器到跑起第一个程序全流程

安卓手机上玩老游戏的路子这些年一直在变。从最早的移植版,到各种主机模拟器,到云游戏串流——每一条路都有自己的天花板。Winlator 走的是第四条路:不模拟主机,而是直接在手机上造一个能跑 Windows 程序的环境。

它的原理并不神秘:把 Wine(Windows API 的兼容层)、Box86/Box64(x86 到 ARM 的指令翻译层)和一个精简的 Linux rootfs 打包进一个安卓应用,再配上一套触控与手柄映射的界面。手机上真正运行的是 ARM 指令,遇到 x86 程序时由 Box64 翻译过去。这决定了它的能力上限,也决定了它适合跑什么、不适合跑什么。

先确认你的设备够不够格

在安卓手机上跑 PC 游戏:Winlator 从安装、建容器到跑起第一个程序全流程

在装之前先对一下条件,能省掉后面很多无用功:

  • 芯片:高通骁龙 8 系列、天玑 9000 系列及以上的旗舰最稳,中端芯片能跑但帧率谈不上去。原因在于 GPU 驱动——Winlator 的 3D 性能高度依赖 Turnip 这类开源驱动,而它们在 Adreno(高通)GPU 上的成熟度最高。
  • 内存:建议 8GB 起步,12GB 更舒服。整套环境本身就要吃掉一两个 GB,再留出给游戏的空间。
  • 存储:一个 Windows 游戏动辄几个到几十个 GB,手机剩余空间最好留出两倍于目标的余量,因为安装过程和最终文件会各占一份。
  • 系统版本:Android 10 以上,版本太老的部分接口不可用。

还需要提前建立一个预期:带反作弊机制的网络竞技游戏基本跑不起来。这类游戏会检测运行环境,Wine 环境在它们的判定里属于异常,轻则拒绝启动,重则封号。Winlator 的主场是单机游戏、老游戏、独立游戏和模拟器套娃,不是竞技网游。

下载与安装

在安卓手机上跑 PC 游戏:Winlator 从安装、建容器到跑起第一个程序全流程

Winlator 的官方分发渠道是开发者的 GitHub 仓库,APK 直接放在 Releases 页面,没有中间商:

在 Releases 里挑最新版本,下载形如 winlator-x.x.x.apk 的文件。安装时系统会提示「来自未知来源的应用」——因为不是通过应用商店分发,这个提示是正常的,在设置里给对应的浏览器或文件管理器放开安装权限即可。

APK 体积不小,因为它内含 rootfs 和运行库。安装完成后第一次启动会做一段初始化,把内置环境解压到应用私有目录,这一步会慢一些,等它跑完再操作。

第一次运行:认识容器(Container)

在安卓手机上跑 PC 游戏:Winlator 从安装、建容器到跑起第一个程序全流程

Winlator 的核心概念是「容器」。一个容器就是一套独立的 Windows 环境——有自己的 C 盘、注册表、Wine 版本和驱动设置。你可以建多个容器,互不干扰:一个专门跑老游戏用老版本 Wine,另一个跑新游戏用 Turnip 驱动。

主界面右上角可以新建容器,需要设的项不多,但每一项都有讲究:

  • Screen size(分辨率):建议和手机物理分辨率成整数比。比如 1080p 的屏幕用 720p 渲染再放大,比直接跑 1080p 更省性能。
  • Graphics driver(图形驱动):选 Turnip(基于 Mesa 的开源 Adreno 驱动),3D 性能通常比系统驱动好一大截。切换驱动后需要重启手机才能生效,这是官方文档里的明确要求。
  • DX wrapper(DirectX 兼容层):这是决定能不能跑的关键项之一。跑 DirectX 9/10/11 的老游戏选 DXVK,把 DX 调用翻译成 Vulkan,效率最好;跑 DirectX 12 的游戏要用 VKD3D;如果遇到显示异常,可以退回 WineD3D,兼容性更好但速度慢。
  • Box64 preset(翻译预设):控制 x86 指令翻译的激进程度。性能不够时可以先调高一档,遇到崩溃再退回兼容性优先的档位。这是最常需要来回试的一项。
  • Video memory size(显存大小):按手机实际内存给,一般给到 2048 到 4096MB。

建好容器后点进去,会看到一个类似 Windows 桌面的界面,里面有 Wine 的文件管理器和控制面板。第一次进入时它会做一轮配置,稍等即可。

把游戏装进去:两条路线

Winlator 访问手机存储的方式是通过「Drives」挂载。默认会挂载下载目录等位置,你也可以在设置里添加自定义目录。

路线一:绿色版 / 免安装版。直接把游戏文件夹整个拷到手机上,在容器里用文件管理器找到目录,双击主程序 exe 运行。这是最省事的方式,前提是游戏本身不需要安装。

路线二:需要安装的游戏。把安装包 exe 拷进手机,在容器里运行安装程序,安装路径选容器内的 C 盘。装完之后如果桌面没生成快捷方式,需要手动在容器里找到安装目录执行。

对于通过 PC 游戏平台购买的作品,可以先用平台的客户端下载到电脑,再把已经装好的游戏目录整体拷到手机上——但要注意很多平台的游戏带启动器校验,直接拷目录可能无法运行,这类情况建议优先选「无 DRM 的独立游戏」或带 GOG 版本。

触控、手柄与性能调优

Winlator 内置了一套输入映射界面,可以把屏幕上的虚拟按键映射到鼠标、键盘按键或手柄按钮。对于键鼠操作的游戏,建议先在电脑上想清楚常用按键组合,再在手机上照着配一遍,比现场摸索快得多。

外接手柄的体验明显好于触控。蓝牙连上之后,在 Input Controls 里把手柄设备选进去,多数游戏能被自动识别为 XInput 手柄。玩动作类和赛车类时,这一步几乎是必需的。

性能不够的话,可以按这个顺序试:先把渲染分辨率降一档;再把 DXVK 版本换成更轻量的版本;然后调整 Box64 预设;最后考虑降低容器里的 Windows 图形效果。前两项通常就能带来最明显的提升。

启动失败怎么办,按这个顺序排查

  • 点开就闪退:多半是 DX wrapper 选错了。DX12 游戏用 DXVK 会直接失败,换成 VKD3D;反过来老游戏用 VKD3D 也跑不起来。
  • 黑屏但有声音:驱动或分辨率问题。换 Turnip 驱动后重启手机,或把容器分辨率调低再试。
  • 报缺 DLL 之类:在容器的 Winetricks 里补装对应的运行库,常见的如 .NET Framework、Visual C++ 运行库。
  • 能进游戏但卡到不能玩:这通常不是配置问题,而是硬件上限。ARM 翻译 x86 的开销摆在那里,对性能要求高的现代 3D 大作,手机跑不动是正常的。
  • 画面错位、贴图乱飞:先换 DXVK 版本,再换渲染后端,最后考虑降分辨率。

最后补一句务实的判断:Winlator 适合的定位是「在手机上把那些配置要求不高的老游戏和独立游戏随时带在身上」,而不是「用手机替代 PC」。抱着后者预期去装,大概率会失望;按前者用,它能带来的惊喜其实不小——尤其是那些你电脑上早就不装、偶尔想起来想玩两把的小体量作品。