remote-android远程安卓项目
# 需要内核支持, 不支持就无法运行
lsmod | grep ashmem_linux
lsmod | grep binder_linux
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux
# 推荐使用reppium/redroid11-nb-gapps,安装了兼容性程序,可直接运行arm软件
docker run -itd --privileged \
-p 5556:5555 \
--name=redroid11nb \
reppium/redroid11-nb-gapps:latest
# 运行
# docker pull o9q4q7d2.mirror.aliyuncs.com/redroid/redroid:11.0.0-latest
# 其他版本 arm容器使用arm版本
9.0.0-latest
9.0.0-arm64
10.0.0-arm64
12.0.0-arm64
9.0.0-amd64
adb -s 192.168.1.20:5556 shell wm size 720x1280
adb -s 192.168.1.20:5556 shell wm density 320
adb -s 192.168.1.20:5556 shell wm density
作为下载器的话还是安装novnc虚拟机的版本,上面的版本不支持阿里云盘; 使用qemu的docker-android
# 无法运行
docker run -d -p 4001:6080 \
-e WEB_VNC=true \
-e EMULATOR_DEVICE="Samsung Galaxy S10" \
--device /dev/kvm \
--name android \
registry.cn-hangzhou.aliyuncs.com/jcleng/budtmo-docker-android:emulator_13.0
emulator -list-avds
emulator -avd samsung_galaxy_s10_13.0
# 数据目录是 /home/androidusr
# 配置安装 zeroTier 并设置wifi远程调试
scrcpy连接
# https://github.com/Genymobile/scrcpy
nix-shell -p scrcpy
adb connect localhost:5556
scrcpy -s localhost:5556
qemu运行安卓x86-BlissOs
# 镜像下载
https://sourceforge.net/projects/blissos-x86/files/
https://www.123pan.com/s/c8zA-ITVN3.html
# https://sourceforge.net/projects/primeos/files/64-bit/
# https://www.fosshub.com/Android-x86.html
# 使用systemd容器来跑
docker run -itd \
--privileged \
--cgroupns=host \
--cap-add=SYS_ADMIN \
-v /sys/fs/cgroup:/sys/fs/cgroup \
--name=biss \
registry.cn-hangzhou.aliyuncs.com/jcleng/ubuntu-systemd:20.04
# 准备镜像到容器里面去
docker cp Bliss-v16.9.6-x86_64-OFFICIAL-gapps-20240602.iso biss:/home
docker exec -it biss bash
apt update
apt install qemu-system
# zerotier组网, 略...
# 安装
# https://docs.blissos.org/installation/install-in-a-virtual-machine/install-in-qemu/
cd /home
qemu-img create -f qcow2 Bliss14.qcow2 800G
# 安装和启动命令一致
qemu-system-x86_64 \
-enable-kvm \
-M q35 \
-m 4096 -smp 4 -cpu host \
-bios /usr/share/qemu/OVMF.fd \
-drive file=Bliss14.qcow2,if=virtio \
-cdrom Bliss-v16.9.6-x86_64-OFFICIAL-gapps-20240602.iso \
-usb \
-device virtio-tablet \
-device virtio-keyboard \
-device qemu-xhci,id=xhci \
-machine vmport=off \
-device virtio-vga -display vnc=:8 \
-audiodev pa,id=snd0 -device AC97,audiodev=snd0 \
-net nic,model=virtio-net-pci -net user,hostfwd=tcp::4444-:5555
# 先用vnc安装系统: 进行磁盘分区(创建efi和ext4两个分区, 然后根据提示格式化并安装系统)
# vnc=:8 就是 5908 端口
192.168.195.130:5908
安装系统之后, 再次启动qemu选择最后一项, 然后选择boot
# 然后用adb控制系统
adb connect 192.168.195.130:4444
scrcpy -s 192.168.195.130:4444
手机上使用[甲壳虫adb助手]调整分辨率
waydroid
# 检测内核模块, 如果宿主机不支持这里内核, 就无法支持waydroid
lsmod | grep -E 'overlay|binder|ashmem'
ls /dev/{ashmem,binder}
# 宿主机是centos不支持, 这里使用docker来运行waydroid
# 要点是: 使用宿主机的.X11-unix的vnc服务(:1),以及nvidia显卡
docker run -itd \
--privileged \
--cgroupns=host \
--cap-add=SYS_ADMIN \
-v /sys/fs/cgroup:/sys/fs/cgroup \
--device /dev/kvm \
--name=waydroid \
-e DISPLAY=:1 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--device=/dev/snd \
--gpus=all \
--runtime=nvidia \
registry.cn-hangzhou.aliyuncs.com/jcleng/ubuntu-systemd:20.04
# 安装
apt install curl ca-certificates -y
curl https://repo.waydro.id | bash
apt install waydroid -y
# 初始化
waydroid init
# 下载镜像手动运行
# 下载 system.img 和 vendor.img 文件到 IMAGES_PATH
# https://docs.waydro.id/faq/using-custom-waydroid-images
waydroid init --help|grep -C 3 IMAGES_PATH
ls -lash /etc/waydroid-extra/images/
# 1.7G -rw-rw-r-- 1 jcleng users 1.7G 8月 9日 07:43 system.img
# 492M -rw-rw-r-- 1 jcleng users 492M 8月 9日 06:34 vendor.img
sudo waydroid init -f
# 运行,需要wayland环境
sudo systemctl start waydroid-container
waydroid session start
# 全屏
waydroid show-full-ui
# [20:58:56] WAYLAND_DISPLAY is not set, defaulting to "wayland-0"
# [20:58:56] Wayland socket '/run/user/1000/wayland-0' doesn't exist; are you running a Wayland compositor?
# ! 错误日志
journalctl -u waydroid-container -e
# 如果是x11使用 weston 来模拟wayland环境
weston
# ls /run/user/1000/wayland-0
export XDG_SESSION_TYPE=wayland
waydroid show-full-ui
[推荐]一键运行qemu-bliss_os支持图像加速
# https://github.com/sickcodes/dock-droid
# 直接运行了qemu-bliss_os,支持图像加速
# 使用adb估计需要先安装系统: https://github.com/sickcodes/dock-droid/issues/15
docker run -itd \
--privileged \
--device /dev/kvm \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e "DISPLAY=${DISPLAY:-:0.0}" \
-p 5555:5555 \
-p 3900:5900 \
-p 10022:10022 \
--device=/dev/dri \
--device=/dev/video0 \
--group-add video \
-e EXTRA='-display sdl,gl=on' \
--name=dockdroid \
registry.cn-hangzhou.aliyuncs.com/jcleng/sickcodes-dock-droid:latest
# 实际运行命令
qemu-system-x86_64 -m 4000 -enable-kvm -cpu host,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check, -smp 16 -machine q35,accel=kvm:tcg -smp 4,cores=4 -hda /home/arch/dock-droid/android.qcow2 -usb -device usb-kbd -device usb-tablet -smbios type=2 -audiodev alsa,id=hda -device ich9-intel-hda -device hda-duplex,audiodev=hda -device usb-ehci,id=ehci -netdev user,id=net0,hostfwd=tcp::10022-:22,hostfwd=tcp::5900-:5900,hostfwd=tcp::5555-:5555, -device vmxnet3,netdev=net0,id=net0,mac=00:11:22:33:44:55 -monitor stdio -boot menu=on -cdrom Bliss-v11.13--OFFICIAL-20201113-1525_x86_64_k-k4.19.122-ax86-ga-rmi_m-20.1.0-llvm90_dgc-t3_gms_intelhd.iso -vga vmware -display sdl,gl=on
# 安装完成之后记得保存文件
docker cp android-dockdroid-1:/home/arch/dock-droid/android.qcow2 ./