快轉到主要內容

在Linux玩原神Android版 ~ Waydroid安裝Android 11測試版映像檔

分類  
標籤   Waydroid Genshin Impact
🗓️ 民國111年 壬寅年
✍ 切換正體/簡體字
目錄

注意:本文已經過時。現在Waydroid已經更新到Android 11,casualsnek的libhoudini也出新版了,不需要手動裝測試版了。

請看Waydroid的正常裝法: Ubuntu安裝Waydroid

另外,本文僅是概念驗證。如果你真的想在Linux玩原神,請看 這篇裝PC版原神。


介紹如何使用自訂Waydroid映像檔,安裝新版Android嘗試最新技術。

目前原神(v4.1.0)在下載遊戲資料仍會隨機閃退,需要慢慢重試等待下載完成。不過資料一旦下載好後就不需要用指令稿啟動了。

Waydroid以前Android 10的映像檔沒有穩定的ARM轉譯器可用。為此自行安裝Android 11測試版映像檔+libhoudini,並測試能否執行原神(ARM64-v8a架構)這類大型遊戲。

需要使用支援Wayland的桌面環境(或者在X11下用Weston跑),另外Waydroid不支援Nvidia顯示卡,所以我用Intel內顯UHD 630測試。

影片操作示例:

如果之前已經有安裝過Android 10的舊版Waydroid,建議先將其 完全移除再來嘗試。

另外,你可以加入 Waydroid的Telegram群組與開發者聯絡。

1. 設定Waydroid
#

  1. Sourceforge下載Waydroid最新版映像檔,例如我下載的是lineage-18.1-20221030-MAINLINE-waydroid_x86_64-vendor.ziplineage-18.1-20221030-GAPPS-waydroid_x86_64-system.zip

  2. 解壓縮,將system.img和vendor.img放到/waydroid-extra/images

sudo mkdir -p /usr/share/waydroid-extra/images
sudo mv system.img vendor.img  /usr/share/waydroid-extra/images
  1. 準備casualsnek的Waydroid指令稿:
# 安裝前置依賴套驗:lzip和sqlite
sudo emerge --ask lzip sqlite

cd ~
git clone https://github.com/casualsnek/waydroid_script.git
cd waydroid_script
sudo python3 -m pip --user install -r requirements.txt
  1. 安裝Waydroid套件,不要初始化。

  2. 編輯gbinder設定

sudo mkdir /etc/gbinder.d
sudo vim /etc/gbinder.d/anbox.conf
  1. 參考 此文,填入API版本30:
[Protocol]
/dev/anbox-binder = aidl3
/dev/anbox-vndbinder = aidl3
/dev/anbox-hwbinder = hidl

[ServiceManager]
/dev/anbox-binder = aidl3
/dev/anbox-vndbinder = aidl3
/dev/anbox-hwbinder = hidl

[General]
ApiLevel = 30
  1. 初始化Waydroid
sudo waydroid init -f -i /usr/share/waydroid-extra/images
  1. 啟動Waydroid服務
sudo systemctl start waydroid-container

*若出現Failed to parse config file "/var/lib/waydroid/lxc/waydroid/config" at line "lxc.apparmor.profile = unconfined"錯誤,編輯/var/lib/waydroid/lxc/waydroid/configlxc.apparmor.profile = unconfined註解掉,再重新啟動Waydroid服務。 參考來源

  1. 進入Waydroid桌面
waydroid show-full-ui
  1. 執行casualsnek的指令稿取得裝置ID,進行 Google Play認證,等30分鐘才能登入Google Play。
cd ~/waydroid_script
sudo python3 waydroid_extras.py -i

2. 安裝新版libhoudini
#

此處要將casualsnek Waydroid指令稿提供的libhoudni換成從WSA抽取的libhoudni,版本較新。

  1. 製作自訂libhoudini
git clone https://github.com/natsumerinchan/libhoudini-package.git
cd libhoudini-package
zip -r libhoudini.zip system
  1. 取得該壓縮檔的MD5數值
md5sum libhoudini.zip
  1. 將這個zip移動到Waydroid指令稿的下載目錄
sudo mv  libhoudini.zip ~/.cache/waydroid_script/downloads/
  1. 編輯casualsnek的Waydroid指令稿
cd ~/waydroid_script
vim waydroid_extras.py
  1. 找到函數install_houdin(),將下載檔案的MD5改成上面取得的MD5數值
def install_houdini():
    sys_image_mount = "/tmp/waydroidimage"
    houdini_zip_url = "https://raw.githubusercontent.com/casualsnek/miscpackages/main/libhoudini_a11.zip"
    dl_file_name = os.path.join(download_loc, "libhoudini.zip")
    extract_to = "/tmp/houdiniunpack"
    act_md5 = "填入上面取得的MD5"
    loc_md5 = ""
  1. 將Waydroid服務停止
sudo systemctl stop waydroid-container
  1. 安裝libhoudini,這樣指令稿會直接使用剛剛製作的libhoudini.zip。
sudo python3 waydroid_extras.py -l
  1. 重新啟動Waydroid並進入桌面
sudo systemctl start waydroid-container
waydroid show-full-ui

3. 在Waydroid啟動原神
#

有了libhoudini轉譯器,大部分ARM64遊戲應該都能執行了。不過Google Play仍只會顯示x86架構的APP,因此要自行去ApkPure找APK來裝。

至於《原神》還需要一點特殊處理,首先Google Play版的APK會在載入時出現31-4302錯誤,得改從 TapTap下載APK才可以(搜尋"Genshin Impact")。第二,原神需要用特殊手段啟動。

  1. 安裝原神後開啟遊戲,登入帳號,下載遊戲資源。下載中如果當掉,則將原神APP強制停止、清除快取,接著重開遊戲繼續下載。

  2. 下載後在讀取遊戲資料時會閃退,同樣將原神APP強制停止和清除快取。

  3. 開啟Waydroid的系統設定,點選關於手機,查看Waydroid的IP。

  4. 開啟終端機,將 ilhan-athn7的指令稿透過ADB傳送到Waydroid內部。

cd ~
git clone https://github.com/ilhan-athn7/WSA_houdini_A12.1.git
adb connect <Waydroid的IP>:5555
adb -s <Waydroid的IP>:5555 push ~/WSA_houdini_A12.1/GI_affinity_workaround/* /sdcard
  1. 開啟Waydroid shell
sudo waydroid shell
cd /sdcard
  1. 執行第一個指令稿。此指令稿不會對遊戲作任何修改,僅是啟動原神,並限制只使用二個CPU核心,這樣才能解決原神讀取資料閃退的問題。
sh Genshin_start.sh
  1. 在讀取完遊戲資料(看到大門)後,執行第二個指令稿解除核心限制
sh Genshin_8core.sh
  1. 這樣應該就可以玩了,Intel UHD 630內顯跑中等畫質的FPS還行。因為是Android版,RAM佔用不多,但畫質再調高可能就會閃退。

  2. Scrcpy目前無法配合Waydroid執行,鍵盤映射暫時不可用。不過Waydroid在最新版本加入了將滑鼠點擊轉換成觸控事件的功能,還有假裝Wifi連線:

waydroid prop set persist.waydroid.fake_touch "*"

waydroid prop set persist.waydroid.fake_wifi "*"

希望Android 11和這些功能可以盡早進入穩定階段囉。

相關文章

自行給MSI Modern 15筆電加裝RAM記憶體
分類   資訊科技 資訊科技應用
在Arch Linux上安裝QEMU/KVM和Virt Manager虛擬機軟體
分類   資訊科技 虛擬機與容器技術
標籤   Arch Linux QEMU-KVM Libvirt
Android-x86 QEMU虛擬機安裝教學,在Linux上執行手機APP,支援GPU加速的VM
分類   資訊科技 虛擬機與容器技術
標籤   Android-X86 Linux QEMU-KVM VirGL Scrcpy

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。