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 ./