在Linux上安裝Bliss OS (Android-x86) QEMU虛擬機

要在Linux上跑Android APP,於Android-x86安裝教學一文便有提及用Android-x86虛擬機 + QtScrcpy的安裝過程,本篇文章則是要來嘗試一點不一樣的Android-x86:“BlissOS”。

雖然新版BlissOS 14.10 (Android 11)尚在開發中,但開發者已經放出了測試用的映像檔。內建Google Play商店,不用另外裝轉譯器也能玩64位元的3D遊戲,可以說是很大的進步了。

本文將討論在Linux上安裝Bliss OS 14.10的QEMU虛擬機。

0. 為何要選擇Bliss OS?

Bliss OS是什麼呢?它是基於Android-x86開發的Android系統,專門設計給桌上型電腦跑Android用。在Android-x86的基礎上預載了許多實用工具,並持續更新Linux核心和Android版本,提昇新硬體相容性。除此之外Bliss OS團隊也會將成果貢獻給Waydroid專案。

比較一下便可知道,Android-x86官方網站最新的版本是Android 9.0,而Bliss OS最新測試版已來到Android 12。

Android版本舊看似不是大問題,但是在ARM轉譯上就有很大差距。Android-x86 9.0依賴Intel的"liboudini"技術,在x86架構的Android系統上執行ARM架構的APK,但只支援到32位元ARM-v7eabi的APK而已,現在有越來越多開發者只提供64位元ARM-v8a的APK哪。因此就得改用Android 11以上的libhoudini或libndk,以相容64位元ARM架構的APK。

除了Android版本較新能相容更多電腦硬體外,Bliss OS也加入了一些讓Android變得像是電腦的功能,例如浮動視窗,還有"Gearlock"取代傳統的Android recovery。

1. 系統資訊 & 需要的軟體

  • Host OS: Arch Linux
  • CPU:Intel i5-10210U
  • GPU:Intel® UHD Graphics 620
  • Android-x86版本:11.0
  • QEMU版本:7.1.0
  • virglrender版本:0.9.1

確認CPU已經開啟虛擬化、KVM核心模組已經載入。

在Linux系統上安裝QEMULibvirtVirt Manager套件。Arch Linux詳情參考這裡

2. 開始安裝Bliss OS虛擬機

Bliss OS官方網站目前提供Android 9 ~ Android 12的ISO。

為了執行64位元ARM應用程式,故使用Bliss OS開發團隊在Telegram群組釋出的測試版映像檔,從MEGA下載Bliss-v14.10-x86_64-OFFICIAL-opengapps-20221030.iso的檔案。

參照Android-x86 QEMU虛擬機安裝教學建立虛擬機。RAM建議分配至少6GB。

Bliss OS 14.10內建Google Play商店;ARM轉譯器預設已啟用,不用手動安裝。

3. 實際在Bliss OS玩遊戲

為了測試Bliss OS轉譯器能耐,以下遊戲全部用ARM-v8架構的APK測試。如果Google Play不給安裝,自行找APK。

《水果忍者》、《Temple Run 2》正常執行。如果滑鼠點選沒反應,必須用QtScrcpy來模擬觸控點選。

Reddit網友建議測試《Fortnite》 Android版,結果這個遊戲連處理器架構都會偵測,看來Android-x86是沒辦法跑的了。

接著是《原神》,直接開會崩潰,要配合這個指令稿才能進入遊戲。

另一款大型遊戲《幻塔》不用任何指令稿就能成功進入遊戲。嘗試寫了QtScrcpy的指令稿如下,可用鍵盤控制角色移動:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
	"switchKey": "Key_QuoteLeft",
	"keyMapNodes": [
		{
			"comment": "Moving",
			"type": "KMT_STEER_WHEEL",
			"centerPos": {
				"x": 0.19,
				"y": 0.71
			},
			"leftOffset": 0.1,
			"rightOffset": 0.1,
			"upOffset": 0.1,
			"downOffset": 0.1,
			"leftKey": "Key_A",
			"rightKey": "Key_D",
			"upKey": "Key_W",
			"downKey": "Key_S"
		},
		{
			"comment": "Moving camera",
			"type": "KMT_STEER_WHEEL",
			"centerPos": {
				"x": 0.5,
				"y": 0.5
			},
			"leftOffset": 0.1,
			"rightOffset": 0.1,
			"upOffset": 0.1,
			"downOffset": 0.1,
			"leftKey": "Key_Left",
			"rightKey": "Key_Right",
			"upKey": "Key_Up",
			"downKey": "Key_Down"
		}
	]
}

另外這個build有個bug,那就是播放影片會變成綠色的。正好可以驗證遊戲哪些場景是用影片草草帶過XD

如果本網站文章對您有幫助,歡迎贊助我。