安卓逆向环境指北 rk3588 orangepi5b macM1 cuttlefish redroid
省流
安卓现在有若干种方案
买个pixel6 真机 随便刷 rom多,文档直接看google官方的即可 缺点 贵 刷砖了难救
windows的安卓模拟器 傻瓜式部署 但是 安卓版本低 特征多 跑不了arm的so
AVD windows or mac or linux 有多个安卓版本 但是基本没办法自定义内核 想自定义内核再替换 最高只能支持到5.10
cuttlefish (rk3588 orangepi5b) 随便自定义内核 一键启动! 坏了一键remake 方便快捷 但是不是很方便自定义rom arm版本的cvdhost文件build不出 只能从ci里面偷 而且不支持各种arm板子的gpu加速 所以很卡
redroid arm or amd64 docker一键部署 傻瓜式操作 对于rk3588 只有几个docker可以gpu加速,但是很流畅(原神双开约35帧),对于mac arm芯片 直接使用pd部署redroid官方镜像即可直接gpu加速,对于amd64的linux ,可以上arm的转义层转移到arm,但是稳定性堪忧 总的来说可以方便自定义rom,但是内核和linux内核共享,不是很方便做自定义内核
环境
win11 wsl2 ubuntu22.04
orangepi5b
macbook air M1
rk3588 orangepi5b
板子环境配置
orange5b没有pd协商,不想烧板子就老实掏官方的5v4a充电器,或者掏出99元小米充电宝 最高支持到5v3a)
请刷系统 ubuntu22.04 5.10.160-rockchip server
完美支持
action中的ubuntu的mainline的 刷入不开机 建议是别搞了
只有官方网站上的几个镜像才可以直接刷入emmc中 其他的系统 如armbian什么的 都要先刷入sd卡再进入系统刷入emmc中
armbian的6.8内核的镜像,通通不识别wifi模块,但是hdmi是可以用的( 似乎挑显示器 我的没问题
armbian不会自动开启ssh,需要显示屏鼠标键盘,
所以不使用armbian)
默认启动顺序是先sd卡 再emmc,即使sd卡是空的,也不会自动启动到emmc
ubuntu22.04 5.10.160-rockchip server
刷机后会自动重启到系统,插根网线or插显示屏键盘or串口调试
如果你刷了desktop的话 必须要显示器鼠标键盘手动操作)
我使用ssh,ip通过路由器后台或
然后通过netplan来链接wifi
network:
ethernets:
zz-all-en:
dhcp4: true
match:
name: en*
optional: true
zz-all-eth:
dhcp4: true
match:
name: eth*
optional: true
wifis:
wlan0:
dhcp4: true
access-points:
void HatsuneMiku():
password: "12345678900"
optional: true
version: 2
使用 bash <(curl -sSL https://linuxmirrors.cn/main.sh)
换个apt源
使用 bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
安装docker即可
redroid方案
redroid https://github.com/remote-android/redroid-doc
如果你用的和我同款设备和系统 那么pi的内核已经默认支持了redroid的相关配置
安装docker
然后根据官方库一键启动即可
开启gpu加速
安装相关gpu驱动
sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
sudo add-apt-repository ppa:liujianfeng1994/rockchip-multimedia
sudo apt update
sudo apt dist-upgrade
sudo apt install mali-g610-firmware rockchip-multimedia-config
然后使用如下之一的docker
chisbread/rk3588-gaming:redroid-firefly
registry.cn-hangzhou.aliyuncs.com/whsyf/dobox:rk3588-202303017
docker run -itd --rm --privileged \
-v /data:/data \
-p 5555:5555 \
chisbread/rk3588-gaming:redroid-firefly \
androidboot.redroid_height=1600 \
androidboot.redroid_width=2560 \
androidboot.redroid_dpi=480 \
androidboot.redroid_gpu_mode=host \
--mount=type=bind,source=/dev/mali0,destination=/dev/mali0
注意 这个启动之后,不会默认链接adb,你应该手动使用 adb connect 127.0.0.1:5555
来链接
然后 scrcpy 链接即可
https://github.com/Genymobile/scrcpy
链接
cuttlefish
参考 https://source.android.com/docs/devices/cuttlefish?hl=zh-cn
在
for dir in base frontend; do
cd $dir
debuild -i -us -uc -b -d
cd ..
done
这一步里面
里面frontend里面调用go build,要去google拉镜像,这一步由于网络会必定报错
export http_proxy也不管用
frontend/src/goutil里面
换一个代理即可
镜像
请去 https://ci.android.com/ 里面各个分支去拉
找到对应分支后
带cf表示是cuttlefish的镜像
aosp-main-throttled 分支是arm cf 主线
aosp-android13-gsi 等分支的cf arm64也可以跑
但是gsi 14的镜像似乎有一些问题 叠加层没法载入,导致每一次启动cuttlefish镜像都是全新的 需要重新部署环境
13 和 主线镜像都是好的
但是推荐使用android13 内核较新(5.15
主线的镜像的话 使用的so版本较新,导出函数名称有一些变化 导致frida不能使用
拉一个 aosp_cf_arm64_phone-img-xxxx.zip
和 cvd-host_package.tar.gz
解压到同一目录
然后 使用
HOME=$PWD ./bin/launch_cvd --resume=true --daemon
来启动cvd
resume 为true的话 是继承以前的数据
会自动通过web服务暴露 也可以使用scrcpy来链接)
使用HOME=$PWD ./bin/stop_cvd
来关闭cvd 但是你在安卓中的操作有几率没保存
如果你需要保存 请先使用adb reboot重启安卓再关cvd)
kernel
https://source.android.google.cn/docs/devices/cuttlefish/kernel-dev
build kernel
使用 tools/bazel run --lto=thin --config=local //common-modules/virtual-device:virtual_device_aarch64_dist
来build
build出的新内核
使用
-kernel_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/Image \
-initramfs_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/initramfs.img
指定
然后注意 叠加层的数据不会在不同环境下保存,即你使用了两个kernel的话 数据是不通的(
build aosp
省流 build不出给cuttlefish用的aosp镜像 因为build不出cvd-host_package.tar.gz
aosp编译环境自己搜
嗯 如果你build了cf x86的 你应该在 /out/host/linux-x86/bin 找到cvd-host_package.tar.gz内的文件
如果你build了cf arm64的,你根本找不到cvd-host_package捏
尽管根据 https://sites.google.com/junsun.net/how-to-run-cuttlefish/home
文章所说
输出到了这里
或者根据mainline的配置文件 输出到这里
https://cs.android.com/android/platform/superproject/main/+/main:device/google/cuttlefish/host_package.mk?hl=zh-cn
但没有任何和cvd有关的文件被构建
)
实际上是有这个配置文件的 真的疑惑
经过搜索得知
没开源 绷不住了
但是也许可以拉ci中的host对应版本的源码来build 理论上是应该能使用的
mac m1 芯片
cuttlefish
需要支持嵌套虚拟化的linux环境 而mac上面所有的虚拟机或者docker方案都不支持嵌套虚拟化
但是Asahi Linux似乎是支持的 我的硬盘只有256g 没空间了 就没弄
redroid
直接使用pd 安装ubuntu22.04即可
使用 bash <(curl -sSL https://linuxmirrors.cn/main.sh)
换个apt源
使用 bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
安装docker即可
然后sudo su
apt install linux-modules-extra-`uname -r`
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux
docker run -itd --rm --privileged \
--pull always \
-v /home/ltlly/Desktop/data:/data \
-p 5555:5555 \
redroid/redroid:13.0.0_64only-latest
docker镜像只能选择带64only的镜像 因为m芯片不支持arm32的了
启动之后丝滑流畅,直接支持gpu加速
想玩一些ebpf什么的 直接去改linux的内核即可
直接pd开个桥接 mac上adb connect 然后scrcpy链接即可
甚至我觉得应该安装ubuntu的server版本来省一点内存)
似乎 utm虚拟机也可以开gpu加速 显卡方案要选 mesa3d 但是我没搞了