最近鴻蒙 PC 剛發布完,但是發布會沒公布太多技術細節,基本上一些細節都是通過自媒體渠道獲取,首先可以確定的是,鴻蒙 PC 本身肯定是無法「直接」運行 win 原本的應用,但是可以支持手機上「原生鴻蒙」的應用,細節上無非就是 UI 兼容下大屏模式的支持,比如下圖是來自 差評XPIN 的鴻蒙 PC 截圖:
那么問題來了,HarmonyOS 「卓易通 」 作為生態過渡的豐富支持,甚至在應用商店都可以無縫銜接,那么鴻蒙 PC 是否也可以有類似的場景?
因為目前得到的消息是,鴻蒙 PC 不支持側載 ,這個結論我也不保熟,只是在這個大條件下討論,那么 鴻蒙 PC 是不是也可以有個 「W易通」?技術上是否可以支持?
當然,你要說鴻蒙 PC 和鴻蒙手機,本質它們是同源的,App 之間互通理論上沒毛病,從這個角度看,好像又支持側載?
那「W易通」?技術上是否可以支持?答案上還真可以,從某些媒體上說的,通過定制 Wine 來兼容已有的 win 軟件,這個或者是一條可行的路,但是其實我也并沒有找到官方下圖的說法和出處,但是不妨礙我們討論可行性。
Wine 這個名字本身就揭示了它核心特性:“Wine Is Not an Emulator”(Wine 不是模擬器),它其實已經被應用很久了,例如:
- Steam Deck 和 Proton,就是那個 Steam 的掌機,它用的就是為極致游戲定制的 Wine ,Proton 是一個為 Windows 游戲能在 Linux 上流暢運行而深度定制和優化的發行套件
- CrossOver 和 Whiskey,在 macOS 上運行 win 游戲,也是 Wine 的定制
所以 Wine 確實是一個可行的途徑,Wine 在實際場景里主要是充當一個兼容層,實時地將 Windows 應用的 API 調用轉換為宿主操作系統(如 Linux 或 macOS)能夠理解的等效 POSIX 調用 。
當然,這種設計也意味著 Wine 的兼容性直接取決于其對 Windows API 的重實現程度,所以 Wine 的核心就是重塑 Windows API ,在某種程度上鏡像了 Windows 的結構,例如:
-
wineserver
:在 Windows 中主要是由內核提供核心服務,在 Wine 中會由wineserver
在用戶空間實現 ,它的職責包括實現基本的 Windows 功能,如進程和線程管理、對象管理、進程間通信(IPC)、同步原語、將 Unix 信號轉換為 Windows 異常,處理窗口管理和輸入事件等 -
核心 DLL 的重實現:Wine 提供了大量核心 Windows DLL 版本,例如
NTDLL.DLL
(Windows NT 內核功能的核心接口)、KERNEL32.DLL
(基礎操作系統功能,如內存管理、文件 I/O)、GDI32.DLL
(圖形設備接口,負責 2D 繪圖)、USER32.DLL
(用戶界面元素、窗口管理、消息傳遞)等 ,這些 Wine 實現的 DLL 通常以 Unix 共享對象(.so
文件)的形式存在,它們可以直接調用宿主操作系統的函數
另外 還有 WineD3D ,將 Direct3D 和 DirectDraw API 調用翻譯成 OpenGL 調用的核心組件 ,另外還有 DXVK 這種專注于將 Direct3D API 調用高效地翻譯成 Vulkan 調用的支持。
前面的 Steam 的 Proton 也是一個針對游戲優化的
vkd3d
分支,負責將 D3D12 調用翻譯為 Vulkan ,而 macOS 上或者還需要比如 MoltenVK 將 Vulkan 轉為 Metal ?
當然,翻譯 API 的局限性就不用多說了,還有一些依賴底層驅動支持的場景,很難在通用性上做到完美,當時理論上做到部分應用通用的場景應該可以,甚至在游戲領域反而更有優勢?
當然,還有另外一條途徑就是直接跑虛擬機,或者說虛擬桌面,目前已經有不少人運行成功,比如就有博主用 Os-easy 虛擬機裝上了Windows 11 :
事實上 Linux 上運行 Win 虛擬機一直以來就有,用戶只需選擇鏡像文件并完成基礎配置,同樣也可以在鴻蒙 PC 上使用Windows系統。
安裝完成后,用戶可以在鴻蒙與 Windows 系統之間便捷切換,類似切換桌面的效果,這樣也算是一種場景支持:
當然,虛擬桌面的割裂感會更重,但是在通用軟件場景下會相對更好,但是性能也許會更差一下?
另外,目前也挺多覺得鴻蒙 PC 就是一個平板 PC 化的場景,其實這樣也算是一個趨勢?類似我前段時間一直在聊的 Android PC 化支持,目前 Android 桌面化已經集齊:
- Linux 終端控制臺支持
- 桌面模式
- 外部顯示器支持
- 窗口多任務,最小化,多實例支持
- 尚未明確的 Desktop View
- 外部顯示器排列和切換
- ·····
例如下方就是 Android 下的外部顯示器排列和切換支持:
最后,貌似目前鴻蒙 PC 雖然能進終端,但是不開放 sudo 權限,apt 也沒有?這部分能力不知道后續是否會開放,從 PC 角度看這部分能力還是有必要的:
比如小米這個 winplay 是不是也是 wine 的定制魔改?我個人感覺,鴻蒙 pc 上游戲通過 wine 體系支持可能會比虛擬桌面更好?
那么,對于鴻蒙 PC 場景,你有什么技術方向想聊的?