环境准备:多核的X86主机,内存要求16G。
1. 下载ubuntu镜像并运行容器
安装docker
sudo apt update -y && sudo apt install docker.io从docker镜像仓库中拉取ubuntu:22.04镜像
sudo docker pull ubuntu:22.04运行镜像并进入容器
sudo docker run -it --name ubuntu_build_apk ubuntu:22.042. 下载cmdline tools和ndk
更新软件源
apt update进入家目录,并安装相关工具
cd ~ && apt install wget zip openjdk-11-jre git openjdk-17-jre -y下载cmdline安装包
wget https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip解压
unzip commandlinetools-linux-10406996_latest.zip设置PATH环境变量
export PATH=$PATH:/root/cmdline-tools/bin/设置ANDROID_SDK_ROOT环境变量
mkdir /root/sdk_root && export ANDROID_SDK_ROOT=/root/sdk_root/安装android ndk21.1.6352462版本
sdkmanager --sdk_root=/root/sdk_root/ 'ndk;21.1.6352462'如果命令执行过程中遇到"Accept?(y/N):",请按y。
3. 编译systemui apk
获取源码,并进入boringdroidsystemui目录
git clone https://gitee.com/openfde/boringdroidsystemui && cd boringdroidsystemui设置JAVA_HOME环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/执行gradle构建apk
./gradlew build贴心提示:在使用此命令构建apk过程中,会先下载gradle安装包,如果构建过程比较漫长,可以参照下面四个步骤加快本环节的速度。
第一步,执行```./gradlew build```命令,会生成一个目录,如下面给的示例里/root/.gradle/wrapper/dists/gradle-7.6-bin/9l9tetv7ltxvx3i8an4pb86ye/。其中9l9tetv7ltxvx3i8an4pb86ye是随机生成的一串字符,请找到你自己的gradle-7.6-bin目录下生成的文件夹。
第二步, 手动下载gradle安装包
wget https://services.gradle.org/distributions/gradle-7.6-bin.zip第三步,将gradle压缩包拷贝到生成的目录下去,这里记得9l9tetv7ltxvx3i8an4pb86ye改成你自己的目录
cp gradle-7.6-bin.zip /root/.gradle/wrapper/dists/gradle-7.6-bin/9l9tetv7ltxvx3i8an4pb86ye/最后,再次执行build构建过程,此时build过程就会快很多啦!
./gradlew build说明: 由于sdkmanager要求java 17才能运行,而编译apk只能在java11上编译,所以这里需要重新设置JAVA_HOME为java11。如果使用java17编译的话会报如下错误:
Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io " to unnamed module @71cff6a8.
编译完成后可以在app/build/outputs/apk目录下找app/build/outputs/apk/release/BoringdroidSystemUI.apk文件。
4. 编译fusion linux application apk
回到家目录,获取fde-vnc源码
cd ~ && git clone https://gitee.com/openfde/remote-desktop-clients 进入remote-desktop-clients目录,构建bVNC-app
cd remote-desktop-clients && ./gradlew :bVNC-app:assembleRelease -PVersionName="1.0.5"5. 编译gallery_fde
进入家目录,获取gallery-fde源码
cd ~ && git clone https://gitee.com/openfde/gallery_fde进入gallery-fde目录,并修改目录权限
cd gallery_fde && chmod +x gradlew构建应用
./gradlew build -PappVersion=1.0.66. 拷贝apk文件到aosp源码目录
打开新的linux shell终端,将3.3节和3.4节编译好的apk文件从容器中拷贝出来。
docker cp ubuntu_build_apk:/root/boringdroidsystemui/app/build/outputs/apk/release/BoringdroidSystemUI.apk $AOSP_TOP_DIR/vendor/prebuilts/bdapps/bin/BoringdroidSystemUI.apk
docker cp ubuntu_build_apk:/root/remote-desktop-clients/bVNC-app/build/outputs/apk/release/FdeVncClient.apk $AOSP_TOP_DIR/device/openfde/fde/fde_vnc/其中$AOSP_TOP_DIR 表示aosp的源码树顶层目录。