Jenkins构建APK时AAPT2守护进程启动失败求助
问题:Jenkins Docker容器构建Capacitor APK时AAPT2守护进程启动失败
我正在用Jenkins流水线实现APK自动化构建,Jenkins部署在装有npm、Ionic、OpenJDK、Android SDK和Gradle的Docker容器里,项目基于Capacitor框架。
流水线「Build APK」阶段代码如下:
stage('Build APK') { sh 'npm run build' sh 'npx capacitor sync android' sh 'npx capacitor build android --keystorepath /keyfiles/<filename>.jks --keystorealias <alias> --keystorepass <pass> --keystorealiaspass <pass> --androidreleasetype APK' }
构建时Jenkins控制台报错:
> Task :app:mergeReleaseResources FAILED > Task :capacitor-google-maps:extractReleaseAnnotations FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:mergeReleaseResources'. > Multiple task action failures occurred: > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > AAPT2 aapt2-7.2.1-7984345-linux Daemon #0: Daemon startup failed This should not happen under normal circumstances, please file an issue if it does. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > AAPT2 aapt2-7.2.1-7984345-linux Daemon #2: Daemon startup failed This should not happen under normal circumstances, please file an issue if it does. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > AAPT2 aapt2-7.2.1-7984345-linux Daemon #1: Daemon startup failed This should not happen under normal circumstances, please file an issue if it does.
已经查过谷歌和Stack Overflow的方案,但问题没解决,求帮助。
可行解决方案
1. 调整Docker容器资源配额
AAPT2守护进程启动失败大概率和容器内存/CPU不足有关:
- 给Docker容器分配至少2GB内存,2核以上CPU
- 检查Jenkins构建节点的资源限制,避免和其他任务抢占资源
2. 禁用AAPT2守护进程模式
在项目的gradle.properties中添加配置,强制AAPT2以非守护进程运行:
android.enableAapt2=false
或者直接在构建命令中追加参数:
sh 'npx capacitor build android --keystorepath /keyfiles/<filename>.jks --keystorealias <alias> --keystorepass <pass> --keystorealiaspass <pass> --androidreleasetype APK -Pandroid.enableAapt2=false'
3. 更新Android SDK Build Tools版本
当前用的AAPT2版本是7.2.1,尝试升级到稳定的高版本:
- 在Docker容器中执行命令更新Build Tools:
sdkmanager "build-tools;33.0.2"
- 同步项目
android/build.gradle文件,指定新的Build Tools版本:
buildToolsVersion "33.0.2"
4. 清理构建缓存
缓存损坏可能导致AAPT2异常,在构建前增加清理步骤:
stage('Build APK') { sh 'npm run build' sh 'npx capacitor sync android' sh 'cd android && ./gradlew clean' // 新增清理gradle缓存 sh 'npx capacitor build android --keystorepath /keyfiles/<filename>.jks --keystorealias <alias> --keystorepass <pass> --keystorealiaspass <pass> --androidreleasetype APK' }
5. 补充Docker容器系统依赖
AAPT2需要32位系统库支持,如果是Ubuntu/Debian基础镜像,执行以下命令安装依赖:
apt-get update && apt-get install -y lib32z1 lib32stdc++6
内容的提问来源于stack exchange,提问作者Utkarsh
相关产品推荐
相关产品推荐

