1) Setup
# update and install packages
sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get install -y curl libxml2-utils docker.io docker-buildx git-lfs jq
sudo apt-get remove repo -y && sudo apt-get autoremove -y
# install 'repo'
mkdir -p ~/.bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
chmod a+x ~/.bin/repo
echo 'export PATH=~/.bin:$PATH' >> ~/.bashrc && source ~/.bashrc
# set git variables
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
# 可选。 add current user to Docker group so we don't have to type 'sudo' to run Docker
sudo usermod -aG docker ubuntu # Set your username here
sudo systemctl enable docker
sudo systemctl restart docker
# NOW YOU SHOULD LOGOUT AND LOGIN AGAIN FOR DOCKER TO RECOGNIZE OUR USER
# check if Docker is running
docker --version && docker ps -as
# Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
2) Fetch and sync Android and Redroid codes
mkdir ~/redroid && cd ~/redroid
# check supported branch in https://github.com/remote-android/redroid-patches.git
repo init -u https://android.googlesource.com/platform/manifest --git-lfs --depth=1 -b android-11.0.0_r48
# add local manifests
git clone https://github.com/remote-android/local_manifests.git ~/redroid/.repo/local_manifests -b 11.0.0
# sync code | ~100GB of data | ~20 minutes on a fast CPU + connection
repo sync -c -j$(nproc)
# get latest Dockerfile from Redroid repository
wget https://raw.githubusercontent.com/remote-android/redroid-doc/master/android-builder-docker/Dockerfile
# check if 'Webview.apk' files were properly synced by 'git-lfs'. Each .apk should be at least ~80MB in size.
find ~/redroid/external/chromium-webview -type f -name "*.apk" -exec du -h {} +
这里要重点确认git-lfs 是否安装成功了? webview.apk大小是否正确?
4) Apply Redroid patches, create builder and start it
# apply redroid patches
git clone https://github.com/remote-android/redroid-patches.git ~/redroid-patches
mkdir ~/redroid_link && ln -s ~/redroid/ ~/redroid_link/android-11.0.0_r48
~/redroid-patches/apply-patch.sh ~/redroid_link
docker buildx create --use
docker buildx build --build-arg userid=$(id -u) --build-arg groupid=$(id -g) --build-arg username=$(id -un) -t redroid-builder --load .
docker run -it --privileged --rm --hostname redroid-builder --name redroid-builder -v ~/redroid:/src redroid-builder
5) Build Redroid
Now we should be in the redroid-builder
docker container
cd /src
. build/envsetup.sh
lunch redroid_x86_64-userdebug
# redroid_arm64-userdebug
# redroid_arm64-userdebug
# redroid_x86_64_only-userdebug (64 bit only, redroid 12+)
# redroid_arm64_only-userdebug (64 bit only, redroid 12+)
# start to build | + ~100GB of data | ~ 2 hours on a fast cpu
m -j$(nproc)
#如果你想销毁容器就执行exit!!,否则按下ctrl+q、ctrl+p 可以出来。
# docker attach f442你的容器ID 就能进去
exit
6) Create Redroid image in HOST
cd ~/redroid/out/target/product/redroid_x86_64
sudo mount system.img system -o ro
sudo mount vendor.img vendor -o ro
#这里可以进行一些属性的编辑,例如 sudo vim vendor/build.prop
# set the target platform(s) with the '--platform flag' below. eg: --platform=linux/arm64,linux/amd64 ....
sudo tar --xattrs -c vendor -C system --exclude="./vendor" . | docker import --platform=linux/amd64 -c 'ENTRYPOINT ["/init", "qemu=1", "androidboot.hardware=redroid"]' - redroid
sudo umount system vendor
# inspect the created image to see if everything is ok
docker inspect redroid:latest | jq '.[0].Config.Entrypoint, .[0].Architecture'
[
"/init",
"qemu=1",
"androidboot.hardware=mt8766"
]
"amd64"
8) Run the container
sudo rm -rf ~/data_dev && docker run -itd --privileged --name Redroid11_Dev -v ~/data_dev:/data -p 5555:5555 redroid:latest
------
调试
获取日志:
curl -fsSL https://raw.githubusercontent.com/remote-android/redroid-doc/master/debug.sh | sudo bash -s 【容器ID】
或者
wget https://raw.githubusercontent.com/remote-android/redroid-doc/master/debug.sh && chmod +x debug.sh
./debug.sh | sudo bash -s 【容器ID】
进入容器:
did=`docker ps | grep "Redroid11_Dev" | awk '{print $1}'`;docker exec -it $did /system/bin/sh
停止和移除容器:
did=`docker ps | grep "Redroid11_Dev" | awk '{print $1}'`; docker stop $did && docker rm $did
---------
ROM二次开发
安装samba :Samba实现windows和Linux共享文件,环境搭建_samba windows共享 给 linux-CSDN博客