在 Ubuntu 上用 Wine 9.0 跑 Windows 版网易云,经常会撞上两个大坑。一个是点开直接闪退,另一个是好不容易登进去了,界面都好好的,点播放却死活没声音。
先说闪退这事。终端里跑一下看崩溃日志,报错停在 0x707e39e5 libcef+0x55f39e5: int3。看这行报错就大概明白了,网易云是个套壳 Chromium 的程序。Wine 对这玩意儿的沙盒机制和 GPU 加速支持一直很差,渲染进程一启动就直接断点崩溃。
怎么办呢,只能在启动的时候强行把那些不兼容的特性关掉。我试了一圈,最后发现得加上这几个参数才行。
wine "C:\Program Files (x86)\NetEase\CloudMusic\cloudmusic.exe" --no-sandbox --disable-gpu --single-process --disable-features=HardwareMediaKeyHandling,MediaSessionService
这里头最关键的是 --single-process。如果不加这个,主进程去拉起子渲染进程的时候,前面那些参数根本传不进去,照样崩。强制单进程跑,才算把闪退按住了。
闪退解决了,扫码登录也没问题,但新坑马上来了。能看不能听。歌单刷得出来,点播放没声音,进度条不走。
排查了一阵发现是证书的事。网易云播歌得动态去请求 CDN 链接,但 Wine 里的系统证书链一直不太完整,CEF 内核一验证 HTTPS 证书就报错,流媒体请求直接被掐断了。
解决办法特别简单,再加个 --ignore-certificate-errors,让内核直接忽略证书校验就行。
把这两步的参数合一块,最终能正常用的完整命令就是这样。
wine "C:\Program Files (x86)\NetEase\CloudMusic\cloudmusic.exe" --no-sandbox --disable-gpu --single-process --disable-features=HardwareMediaKeyHandling,MediaSessionService --ignore-certificate-errors
为了以后省事,不用每次都在终端里敲这一长串,可以去改一下桌面快捷方式或者 ~/.local/share/applications/ 里的 .desktop 文件。找到 Exec= 那一行,把上面这串参数全追加到末尾存盘就行。
以后直接双击图标就能听歌了。虽然为了稳当把 GPU 加速关了,界面滑动可能稍微掉点帧,但能正常出声就谢天谢地了。
浙公网安备 33010602011771号