我的桌面环境

OS : Arch Linux x86_64
Kernel : Linux 6.12.4-zen1-1-zen
Packages : 1025 (pacman), 37 (flatpak-user)
Display : 2560x1440 @ 60 Hz in 27 " [External]
Display : 1920x1080 @ 60 Hz (as 1280x720) in 15 " [Built-in]
WM : Hyprland (Wayland)
Terminal : kitty 0.37.0
CPU : Intel(R) Core(TM) i3-8100
GPU : GeForce GTX 1050 Mobile
GPU : UHD Graphics 630
GPU Driver : nvidia (proprietary) 565.77
GPU Driver : i915
Memory : 6.25 GiB / 23.35 GiB (27%)
OS Age  : 27 days
Uptime  : 9 hours, 9 mins

由于我使用 hyprland, 同时我的笔记本是双显卡,GPU 可以使用集显 UHD Graphics 630, 所以我选择使用 Waydroid

安装步骤

安装载入 binder 核心模组

从 AUR 安装 binder 模组

1
yay -s binder_linux-dkms

载入 binder 核心模组

1
sudo modprobe binder-linux devices=binder,hwbinder,vndbinder

设定卡机自启动

1
2
3
echo "binder_linux" | sudo tee -a /etc/modules-load.d/binder_linux.conf

echo "options binder_linux devices=binder,hwbinder,vndbinder" | sudo tee -a /etc/modprobe.d/binder_linux.conf

安装 Waydroid

从 AUR 安装 Waydroid

1
2
3
yay -S python-pyclip xclip wl-clipboard mailcap

yay -S waydroid

初始化 Waydroid,下载含有 GAPPS 的 Android 系统映像

1
sudo waydroid init -s GAPPS -f

启动 Waydroid 服务

1
2
3
4
sudo systemctl start waydroid-container

# 開機自動啟動
sudo systemctl enable waydroid-container

如果 Waydroid 没有网络,运行其通过 UFW 防火墙

1
2
3
4
5
6

sudo ufw allow 53
sudo ufw allow 67
sudo ufw default allow FORWARD
sudo ufw reload
sudo systemctl restart waydroid-container

将注册 Waydroid 注册为 Google 装置

Waydroid 第一次开机可能收到 Device is not Play Protect certified 的通知
,无法登录 Google 账户

使用以下指令取得 Waydroid 的装置 ID

1
2
3
sudo waydroid shell

ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"

进入 Google 装置注册网站 输入装置 ID 注册,等待半小时后应该就能登录 Google 了,如果依旧不行,重启 Waydroid 服务

1
sudo systemctl restart waydroid-container

现在可以安装 APP 了,Google Play 和 F-Droid 会自动筛选适合 x86 架构的 APP

安装 ARM 转译器

很多 APP 只为手机的 ARM 架构打造,多数的电脑为 x86 架构,因此我们还需要安装 ARM 转译器才能执行 ARM 架构的 APP
目前 ARM 转 x86 的转译器有 libhoudini 和 linndk,前者较为稳定。casualsnek 指令集的 libhoudini 是从 Microsoft Android Subsytem for Windows 抽取出来的
安装 libhoudini:

1
2
3
4
5
6
7
8
sudo pacman -S lzip sqlite python3 python-pip
cd ~
git clone https://github.com/casualsnek/waydroid_script
cd waydroid_script
python3 -m venv venv
venv/bin/pip install -r requirements.txt
cd ~/waydroid_script
sudo venv/bin/python3 main.py install libhoudini

重启 Wayland:

1
sudo systemctl restart waydroid-container

Waydroid 相关指令

开启 Wayland 主界面

1
waydroid show-full-ui

启动/停止 Waydroid 容器

1
2
sudo systemctl start waydroid-container
sudo systemctl stop waydroid-container

Waydroid 启动后进入 Android shell,并具有 root 权限:

1
sudo waydroid shell

安装 APK:

1
waydroid app install <APK文件>.apk

开启多窗口模式,启动后按 F11 切换:

1
2
waydroid prop set persist.waydroid.multi_windows true
sudo systemctl restart waydroid-container

完全移除 Waydroid:

1
2
3
4
waydroid session stop
sudo systemctl stop waydroid-container
yay -Rsn waydroid
sudo rm -rf /var/lib/waydroid /home/.waydroid ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid

安装完之后需要做的事

强制旋转屏幕

安装 Rotation Control 这类 APP

开启模拟 wifi 和模拟触控

1
2
waydroid prop set persist.waydroid.fake_wifi "com.aniplex.fategrandorder"
waydroid prop set persist.waydroid.fake_touch "com.aniplex.fategrandorder"

使用无限指令传输文件,或者把文件放入 ~/.local/share/waydroid/data/media/0/ 的 waydroid 内存目录