1. 为什么选择清华大学镜像站获取Android源码在国内下载Android源码时直接连接Google官方服务器会遇到两个主要问题首先是网络连接不稳定其次是下载速度缓慢。清华大学开源软件镜像站Tuna提供了完整的AOSPAndroid Open Source Project镜像同步频率为每4小时一次基本与官方源保持同步。镜像站的工作原理是通过rsync协议定期从上游源同步数据。对于Android源码这种大型代码仓库整个AOSP代码库超过150GB使用国内镜像可以带来以下优势下载速度提升5-10倍实测可达50MB/s避免因网络问题导致repo sync中断减少跨国网络传输带来的数据包丢失提示虽然本文以清华大学镜像站为例但也可选择中科大、阿里云等镜像源配置方法类似只需替换镜像URL即可。2. 环境准备与工具安装2.1 系统要求编译Android 13当前最新稳定版需要满足以下硬件条件64位Linux系统推荐Ubuntu 20.04 LTS至少16GB内存官方推荐32GB250GB可用磁盘空间实际需要约200GB多核CPU建议8核以上软件依赖可通过以下命令安装sudo apt update sudo apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig python32.2 配置Repo工具Repo是Google开发的用于管理多个Git仓库的工具。由于官方repo脚本需要连接Google服务器我们需要使用清华修改版mkdir ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo chmod ax ~/bin/repo将以下内容添加到~/.bashrc文件末尾export REPO_URLhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo export PATH~/bin:$PATH执行source ~/.bashrc使配置生效。可以通过repo version验证安装是否成功。3. 下载Android源码3.1 初始化仓库创建一个工作目录并初始化repomkdir aosp cd aosp repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r41这里-b参数指定分支android-13.0.0_r41代表Android 13的第41个发布版本。可以通过访问 清华AOSP镜像页面 查看所有可用分支。3.2 同步代码执行同步命令repo sync -j4 --current-branch --no-tags参数说明-j4使用4个线程并行下载可根据网络情况调整--current-branch只下载当前分支代码--no-tags不下载标签以节省空间首次同步需要下载约50GB数据完整代码库约150GB建议在稳定的网络环境下进行。如果中断可以重复执行repo sync命令继续下载。注意如果遇到error: Exited sync due to fetch errors可能是网络问题导致可以尝试更换镜像源如将tuna替换为mirrors.ustc.edu.cn减少并行线程数如改为-j2使用repo sync --fail-fast快速失败模式定位问题4. 编译Android源码4.1 准备编译环境加载编译环境变量source build/envsetup.sh选择目标设备配置。如果是模拟器测试选择aosp_x86_64-englunch aosp_x86_64-eng4.2 开始编译使用以下命令启动编译make -j16这里的-j16表示使用16个线程并行编译建议设置为CPU核心数的1.5-2倍。完整编译过程可能需要2-6小时取决于硬件性能。常见问题处理内存不足添加交换空间或减少并行线程数sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfileJava版本冲突Android 13需要OpenJDK 11sudo apt install openjdk-11-jdk sudo update-alternatives --config java4.3 运行编译结果编译完成后可以通过以下命令启动模拟器emulator如果要刷入真机如Pixel系列需要先解锁bootloader并下载对应驱动fastboot flashing unlock fastboot flashall -w5. 高级配置与优化5.1 增量编译修改代码后只需重新编译变更部分make -j16 installclean # 清除之前编译结果 make -j16 # 增量编译5.2 使用ccache加速在~/.bashrc中添加export USE_CCACHE1 export CCACHE_DIR/path/to/ccache export CCACHE_SIZE50G然后初始化ccacheprebuilts/misc/linux-x86/ccache/ccache -M 50G5.3 模块化编译只编译特定模块如Settings应用make -j16 Settings输出路径out/target/product/generic_x86_64/system/priv-app/Settings6. 常见问题排查repo sync卡住不动检查网络连接尝试更换镜像源使用repo sync --verbose查看详细日志编译时报头文件缺失确认所有依赖包已安装检查out/error.log获取具体错误信息尝试make clean后重新编译模拟器启动黑屏确认已启用KVM加速尝试不同渲染模式emulator -gpu swiftshader_indirect检查显卡驱动是否正常我在实际编译过程中发现使用SSD存储可以显著提升编译速度相比HDD可节省40%时间。另外保持Ubuntu系统更新也很重要特别是内核和显卡驱动版本。