Android APK编译
环境准备:多核的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.04
2. 下载cmdline tools和ndk
更新软件源
进入家目录,并安装相关工具
下载cmdline安装包
解压
设置PATH环境变量
设置ANDROID_SDK_ROOT环境变量
安装android ndk21.1.6352462版本
如果命令执行过程中遇到"Accept?(y/N):",请按y。
3. 编译systemui apk
获取源码,并进入boringdroidsystemui目录
设置JAVA_HOME环境变量
执行gradle构建apk
贴心提示:在使用此命令构建apk过程中,会先下载gradle安装包,如果构建过程比较漫长,可以参照下面四个步骤加快本环节的速度。
第一步,执行```./gradlew build```命令,会生成一个目录,如下面给的示例里/root/.gradle/wrapper/dists/gradle-7.6-bin/9l9tetv7ltxvx3i8an4pb86ye/
。其中9l9tetv7ltxvx3i8an4pb86ye
是随机生成的一串字符,请找到你自己的gradle-7.6-bin目录下生成的文件夹。
第二步, 手动下载gradle安装包
第三步,将gradle压缩包拷贝到生成的目录下去,这里记得9l9tetv7ltxvx3i8an4pb86ye
改成你自己的目录
最后,再次执行build构建过程,此时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源码
进入remote-desktop-clients目录,构建bVNC-app
5. 编译gallery_fde
进入家目录,获取gallery-fde源码
进入gallery-fde目录,并修改目录权限
构建应用
6. 拷贝apk文件到aosp源码目录
打开新的linux shell终端,将3.3节和3.4节编译好的apk文件从容器中拷贝出来。
其中$AOSP_TOP_DIR 表示aosp的源码树顶层目录。