021 年微軟正式推出了 Windows 11 桌面操作系統(tǒng),相比于舊版本,Windows 11 除了在系統(tǒng)界面上有著相當(dāng)大的變化之外,更多的變化在于其加入了對(duì) Android 子系統(tǒng)的支持,從而將移動(dòng)端最大的生態(tài)系統(tǒng)融入其中。但微軟對(duì)可以升級(jí)到 Windows 11 的設(shè)備硬件做出限制,這導(dǎo)致市面上絕大多數(shù)的可以支持 Windows 10 的設(shè)備無(wú)法升級(jí)到 Windows 11,也就無(wú)法體驗(yàn)到 Windows 11 帶來(lái)的諸多新功能特性。
但經(jīng)過(guò)一年時(shí)間的迭代,即便屬于支持末期的 Windows 10,在這幾次年度功能更新后也獲得了 Windows 11 才有的新特性,比如通過(guò) WSLg 已經(jīng)可以讓 Windows 10 可以運(yùn)行圖形化的 Linux 應(yīng)用,作為 Windows 11 獨(dú)占的 WSA 在 Windows 10 上運(yùn)行自然也變得不再遙遠(yuǎn)。
相比直接使用虛擬機(jī)或者模擬器在 Windows 10 上運(yùn)行 Android 應(yīng)用,通過(guò) WSA 運(yùn)行 Android 應(yīng)用顯得效率更高:依賴(lài) Windows 自身的虛擬化引擎,無(wú)需先啟動(dòng)虛擬機(jī)從而資源占用更低,對(duì)于 Android 應(yīng)用的系統(tǒng)架構(gòu)無(wú)要求,最重要的是可以完全窗口化運(yùn)行從而可以和當(dāng)前的 Windows 生態(tài)充分融合。而目前就有兩種方法讓 Windows 10 運(yùn)行 WSA,適用于不同的系統(tǒng)場(chǎng)景,如果你有在 Windows 10 上運(yùn)行 Android 應(yīng)用需求不妨「按需索取」。
WSAPatch 顧名思義就是讓 Windows 10 也能運(yùn)行 WSA 的補(bǔ)丁,通過(guò)一系列該項(xiàng)目中提供了兩個(gè)補(bǔ)丁文件,我們可以讓 Windows 10 也可以安裝上 WSA。
首先我們需要將 Windows 10 更新至最新版本(Windows 10 22H2),對(duì)應(yīng)的版本至少 Windows 10 10.0.19045.2311,如果不確定可以在終端或者 PowerShell 中輸入winver 來(lái)查看 Windows 版本。
同時(shí),Windows 10 版本至少為專(zhuān)業(yè)版,原因是后面我們需要安裝 Hyper-V 虛擬化平臺(tái),而這也是 WSL 以及 WSA 的基礎(chǔ)。如果你 Windows 10 使用的是家庭版,那么可能就無(wú)法使用這個(gè)辦法來(lái)體驗(yàn) WSA 了。
以上的準(zhǔn)備工作就緒之后,首先依舊是在 BIOS 中開(kāi)啟虛擬化支持,并打開(kāi)Windows 10 中的相關(guān)功能:
打開(kāi)「控制面板」-「程序和功能」-「啟用或關(guān)閉 Windows 功能」,在其中找到并開(kāi)啟 Hyper-V 、「虛擬機(jī)平臺(tái)」、「Windows 虛擬機(jī)監(jiān)控程序平臺(tái)」以及「適用于Linux 的 Windows 子系統(tǒng)」。勾選安裝后重啟設(shè)備,最基礎(chǔ)的工作已經(jīng)準(zhǔn)備完畢了。
緊接著,我們需要在 Windows 10 中開(kāi)啟相關(guān)開(kāi)發(fā)者權(quán)限,在「設(shè)置」-「更新和安全」中,找到「開(kāi)發(fā)者選項(xiàng)」,打開(kāi)「開(kāi)發(fā)人員模式」,同時(shí)在 Powershell 項(xiàng)目中勾選「更改執(zhí)行策略,以允許本地 PowerShell 腳本在未簽名的情況下運(yùn)行。遠(yuǎn)程腳本需要簽名」并點(diǎn)擊「應(yīng)用」。
之后我們需要下載 WSA,為了方便后面的使用,我們可以自己定制 WSA,比如通過(guò) MagiskOnWSA 項(xiàng)目將 Google 服務(wù)以及 Magisk 植入到 WSA。而生成對(duì)應(yīng)的安裝包則可以有下面兩種方式:第一種方式即不依賴(lài) GitHub Actions 服務(wù)的 MagiskOnWSALocal,這需要在本地安裝 WSL 并安裝 Ubuntu 來(lái)運(yùn)行,具體可以參見(jiàn):
另一個(gè)辦法是相對(duì)比較懶人的做法,依舊是通過(guò)依賴(lài) GitHub Actions 服務(wù)的 Magisk on WSA 的 fork 項(xiàng)目,將其 fork 到自己 Github 賬戶下,在 fork 項(xiàng)目中點(diǎn)擊 Action 后,點(diǎn)擊 Build WSA -- Run workflow,在配置菜單中選擇想要的版本,這里 Build arch 選擇X64,WSA release Type 選擇insider slow,Magisk version 這里選擇 stable。
如果需要集成 Google 服務(wù),那么下面在 Variants of Gapps 選擇pico,如果需要 root,那么 Root solution 中選擇 magisk,其他默認(rèn)點(diǎn)擊Run workflow,等待一會(huì)兒在 Artifacts 中下載生成的 WSA 包即可。
接下來(lái)我們解壓縮生成的 WSA 包。緊接著下載需要的兩個(gè) dll 文件,這里我們可以直接從 WSAPatch 項(xiàng)目中的 Releases 中下載,將下載的壓縮包解壓后,拷貝到剛剛解壓的 WSA 目錄下的 WsaClient 文件夾中。
然后,我們需要使用代碼編輯器修改 WSA 目錄下的 AppxManifest.xml 文件。首先使用編輯器搜索 AppxManifest.xml 中的TargetDeviceFamily 這個(gè)關(guān)鍵字,然后定位到下面這段代碼:
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.22000.120" MaxVersionTested="10.0.22000.120"/>
將其中的 MinVersion中的 10.0.22000.120修改為10.0.19045.2311。
然后再搜索customInstall ,注釋掉下面兩段內(nèi)容:
<rescap:Capability Name="customInstallActions"/>
以及:
<desktop6:Extension Category="windows.customInstall">
<desktop6:CustomInstall Folder="CustomInstall" desktop8:RunAsUser="true">
<desktop6:RepairActions>
<desktop6:RepairAction File="WsaSetup.exe" Name="Repair" Arguments="repair"/>
</desktop6:RepairActions>
<desktop6:UninstallActions>
<desktop6:UninstallAction File="WsaSetup.exe" Name="Uninstall" Arguments="uninstall"/>
</desktop6:UninstallActions>
</desktop6:CustomInstall>
</desktop6:Extension>
完成之后保存,接下來(lái)我們使用管理員權(quán)限打開(kāi) Powershell,定位到 WSA 目錄后,執(zhí)行腳本.\Install.ps1 來(lái)安裝 WSA。
如果一切操作順利,則可以看到 WSA 以及 Magisk 都已經(jīng)陸續(xù)啟動(dòng),你可以像在 Windows 11 上使用 WSA 那樣通過(guò) ADB 命令來(lái)安裝應(yīng)用,或者通過(guò)商店來(lái)安裝。并且可以通過(guò)多窗口的形式來(lái)多個(gè) Android 應(yīng)用,相比運(yùn)行虛擬機(jī)或者模擬器要更為方便,最重要的是,他同樣支持支持顯卡加速,在運(yùn)行一些對(duì)圖形化有要求的應(yīng)用也更為穩(wěn)定。不過(guò)如果你的設(shè)備較舊,那么可能依舊會(huì)存在部分應(yīng)用顯示不全等問(wèn)題。
將 Windows 11 的 WSA 移植到 Windows 10 的做法對(duì)于不少一般用戶來(lái)說(shuō)還是過(guò)于復(fù)雜,一方面需要生成 MagiskOnWSA,同時(shí)還需要修改相關(guān)的配置參數(shù)。那么有沒(méi)有更為簡(jiǎn)單辦法來(lái)實(shí)現(xiàn)類(lèi)似的功能呢?
兆懿移動(dòng)應(yīng)用運(yùn)行平臺(tái)就是這樣一款「類(lèi) WSA」的實(shí)現(xiàn)方案,相比在 WSA 上直接打補(bǔ)丁來(lái)實(shí)現(xiàn) Windows 10 上運(yùn)行 Android 應(yīng)用,兆懿移動(dòng)應(yīng)用運(yùn)行平臺(tái)對(duì)于系統(tǒng)要求更低(并不需要最新版本的 Windows 10),同時(shí)對(duì)于不具備 WSL2 支持的系統(tǒng)也可以得到很好的兼容,因此更適合運(yùn)行較老硬件的 Windows 10 硬件。
和通過(guò) WSAPatch 安裝類(lèi)似,使用兆懿移動(dòng)應(yīng)用運(yùn)行平臺(tái)來(lái)運(yùn)行 Android 應(yīng)用之前,我們同樣需要在「控制面板」-「程序和功能」,找到「啟用或關(guān)閉 Windows 功能」,在其中找到并開(kāi)啟 Hyper -V 來(lái)啟動(dòng)虛擬化平臺(tái)。
重啟后在兆懿移動(dòng)應(yīng)用運(yùn)行平臺(tái)下載最新的 兆懿 2.0 Beta 1 安裝包,然后根據(jù)步驟雙擊安裝包進(jìn)行安裝,在安裝過(guò)程中安裝程序會(huì)完成環(huán)境配置等一系列操作,我們只需要等待完成即可。
安裝完成之后我們可以雙擊打開(kāi)桌面上的「兆懿應(yīng)用商城」,點(diǎn)擊左上方的設(shè)置頁(yè)面進(jìn)行環(huán)境設(shè)置,在功能上類(lèi)似于 WSA 的設(shè)置頁(yè)面,我們可以設(shè)置 Android 是否常駐后臺(tái),性能上是否采用增強(qiáng)模式,分配給 Android 的處理器核心數(shù)以及內(nèi)存數(shù),安裝的 Android 應(yīng)用是否生成桌面快捷方式等等。
同樣在這里還可以設(shè)置機(jī)型以及對(duì)應(yīng)的快捷鍵等等,還可以在高級(jí)設(shè)置中調(diào)整 DPI 以及是否啟用 ADB 日志打印等等。
設(shè)置完成后,我們就可以通過(guò)兆懿應(yīng)用商城來(lái)安裝 Android 應(yīng)用,下載和安裝應(yīng)用時(shí)會(huì)同步加載應(yīng)用運(yùn)行庫(kù)來(lái)運(yùn)行,默認(rèn)兆懿采用的 Android 7.0 的運(yùn)行庫(kù),對(duì)于較新的應(yīng)用則可以在「我的應(yīng)用」中,在右上角切換到 Android 9.0 的運(yùn)行庫(kù)來(lái)運(yùn)行。
兆懿應(yīng)用平臺(tái)上支持窗口化運(yùn)行多個(gè) Android 應(yīng)用。只不過(guò)其窗口 UI 并非系統(tǒng)原生而是經(jīng)過(guò)了重新設(shè)計(jì)。同時(shí)也支持直接使用 Windows 上輸入法在 Android 進(jìn)行文本輸入。只不過(guò)或許是顯卡硬件加速支持還不夠完善問(wèn)題,在兆懿上運(yùn)行 Android 應(yīng)用會(huì)明顯比 WSA 要卡頓不少,很多應(yīng)用也只是勉強(qiáng)能夠運(yùn)行,但幀數(shù)確實(shí)十分「感人」。
除了在商店中下載應(yīng)用運(yùn)行之外,兆懿也支持本地安裝已經(jīng)下載好的 APK 軟件包運(yùn)行,這一點(diǎn)上要比 WSA 要靈活不少(WSA 需要借助 ADB 或者輔助工具實(shí)現(xiàn))。并且由于平臺(tái)的限制,也無(wú)法通過(guò)類(lèi)似 MagiskOnWSA 的方案,在兆懿上實(shí)現(xiàn)安裝 Google 服務(wù)框架以及安裝 Magisk 模塊,所以你只是想要省心地在 Windows 10 運(yùn)行 Android 應(yīng)用,兆懿的這個(gè)「類(lèi)WSA」方案倒是值得一試。
在經(jīng)過(guò)近一年的嘗試之后,現(xiàn)在我們終于可以實(shí)現(xiàn)在 Windows 10 上通過(guò) WSA 來(lái)運(yùn)行 Android 應(yīng)用,如果你恰好有這方面的需求,不妨試試以上的兩種方法來(lái)在 Windows 上運(yùn)行 Android 應(yīng)用。
讀懂內(nèi)容第一步,科普定義走一幕
WSL是(Windows Subsystem for Linux)的簡(jiǎn)稱(chēng),是一種環(huán)境,可幫助我們?cè)赪indows 10 中獲得純控制臺(tái)Linux體驗(yàn),也是在Windows中運(yùn)行Linux命令的最佳方法之一。
最近,Microsoft在在線開(kāi)發(fā)者大會(huì)上宣布了WSL(又名WSL 2)的一系列新功能。
Windows Package Manager,Windows Terminal 1.0等等..
當(dāng)中支持GPU硬件加速到WSL2讓小編直呼 Amazing!
微軟計(jì)劃使用全新的Linux Kernel驅(qū)動(dòng)程序dxgkrnl使其實(shí)現(xiàn)。以下引用他們的聲明中的描述:
Dxgkrnl是Linux的全新內(nèi)核驅(qū)動(dòng)程序,它將/ dev / dxg設(shè)備公開(kāi)給用戶模式Linux。 / dev / dxg公開(kāi)了一組IOCTL,它們與Windows上的本機(jī)WDDM D3DKMT內(nèi)核服務(wù)層非常相似。 Linux內(nèi)核中的Dxgkrnl通過(guò)VM總線連接到Windows主機(jī)上的老兄,并使用此VM總線連接與物理GPU進(jìn)行通信。
這意味著WSL上的Linux應(yīng)用程序?qū)⒕哂信c本機(jī)Windows應(yīng)用程序相同的GPU訪問(wèn)權(quán)限,能夠和常規(guī)Windows應(yīng)用一起運(yùn)行
一旦該功能上線,這就意味著Windows用戶不需要使用X11 forwarding的情況下就能啟用Linux GUI應(yīng)用程序,能夠和Windows應(yīng)用一起運(yùn)行Linux integrated development environments (IDE) 。
微軟之所以在其平臺(tái)上采用Linux是因?yàn)樗麄冎篮芏嚅_(kāi)發(fā)或運(yùn)維人員更愛(ài)使用Linux系統(tǒng)
但是,隨著 WSL 2的更新,如果這種情況持續(xù)下去,小編傾向意Abhishek的看法:
最終,桌面版Linux將會(huì)是Windows下的一個(gè)應(yīng)用程序
當(dāng)然,現(xiàn)在我們很少會(huì)看見(jiàn)有使用linux系統(tǒng)的用戶在其上面跑Windows。
這個(gè)問(wèn)題你怎么看?歡迎大家留言討論!