GitLab CI升级后Android构建失败:AAPT2守护进程启动失败
解决GitLab CI中AAPT2守护进程启动失败导致的Android构建问题
我之前在GitLab CI的Docker环境里也碰到过一模一样的AAPT2启动失败问题,结合你的环境配置(Gradle 7.6、AGP 7.3.1,Android SDK 33),可以试试下面这些针对性的解决办法:
1. 检查Docker镜像中AAPT2的执行权限
Linux环境下AAPT2二进制文件需要可执行权限才能运行,很多时候Docker镜像构建时会忽略这一点。你可以在Dockerfile里添加一行命令确保权限正确:
RUN chmod +x $ANDROID_HOME/build-tools/$ANDROID_BUILD_TOOLS/aapt2
如果是使用现成的镜像,也可以在CI流水线的前置步骤里手动修改权限:
chmod +x $ANDROID_HOME/build-tools/33.0.1/aapt2
2. 强制禁用AAPT2守护进程
这是快速绕过问题的办法,虽然会稍微降低构建速度,但能直接避免守护进程启动失败的问题。在项目根目录的gradle.properties文件中添加:
android.enableAapt2Daemon=false
3. 调整GitLab CI Runner的内存限制
AAPT2守护进程启动需要足够的内存资源,GitLab CI默认给Docker容器的内存可能不足。你可以在.gitlab-ci.yml里增加内存配置:
variables: DOCKER_MEMORY: "4g"
或者在GitLab Runner的配置文件(config.toml)里修改memory参数,给容器分配更多内存。
4. 修正Gradle与AGP的版本兼容性问题
注意:AGP 7.3.1官方兼容的Gradle版本范围是7.3~7.5,而你使用的是Gradle 7.6,这很可能是兼容性冲突的根源。你有两个选择:
- 把AGP升级到7.4.2(官方适配Gradle 7.6的版本)
- 把Gradle降级到7.5版本
5. 彻底清理CI项目缓存
除了服务器缓存,GitLab CI的项目专属缓存也可能残留损坏的文件。你可以:
- 手动进入项目的
Settings -> CI/CD -> Cache页面清理缓存 - 在
.gitlab-ci.yml里修改缓存的key值,比如加个版本号,强制重新下载所有依赖:
cache: key: "gradle-cache-v2" paths: - .gradle/
另外,本地构建正常是因为本地环境的权限、内存资源、依赖缓存都处于稳定状态,而CI的Docker环境是完全隔离的,更容易出现权限不足、资源受限或者版本不兼容的问题。
内容的提问来源于stack exchange,提问作者Osama Mattar
相关产品推荐
相关产品推荐

