Cordova构建Android时:app:mergeReleaseResources失败,提示Daemon启动失败
Cordova Android构建失败:AAPT2 Daemon启动失败(symbol not found)
使用setup-cordova GitHub Action构建Cordova项目,数月前可正常运行,现在执行cordova build android时,在:app:mergeReleaseResources步骤失败,提示"Daemon startup failed",同时出现大量"symbol not found"错误,相关日志如下:
cordova version: 11.1.0 Installed platforms: Available platforms: android ^10.1.1 browser ^6.0.0 electron ^3.0.0 Using cordova-fetch for cordova-android@^10.1.1 Adding android project... Creating Cordova project for the Android platform: Path: platforms/android Package: com.someapp.someapp Name: Some App Activity: MainActivity Android target: android-30 Subproject Path: CordovaLib Subproject Path: app Android project created with cordova-android@10.1.2 Checking Java JDK and Android SDK versions ANDROID_SDK_ROOT=/opt/android-sdk-linux (recommended setting) ANDROID_HOME=/opt/android-sdk-linux (DEPRECATED) Using Android SDK: /opt/android-sdk-linux Welcome to Gradle 7.5.1! Here are the highlights of this release: - Support for Java 18 - Support for building with Groovy 4 - Much more responsive continuous builds - Improved diagnostics for dependency resolution For more details see https://docs.gradle.org/7.5.1/release-notes.html Starting a Gradle Daemon (subsequent builds will be faster) > Task :wrapper Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: __longjmp_chk: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: __isnan: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: __isnanf: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: __vsnprintf_chk: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: __vfprintf_chk: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: __memmove_chk: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: __vasprintf_chk: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: strtoll_l: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: strtoull_l: symbol not found AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Unexpected error output: Error relocating /root/.gradle/caches/transforms-3/a15c26061a26a3ff1f644e99469209bc/transformed/aapt2-4.2.2-7147631-linux/aapt2: __longjmp_chk: symbol not found > Task :app:mergeReleaseResources FAILED > Task :CordovaLib:processReleaseManifest FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:mergeReleaseResources'. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > AAPT2 aapt2-4.2.2-7147631-linux Daemon #0: Daemon startup failed This should not happen under normal circumstances, please file an issue if it does. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 55s
解决方案
这些错误核心是AAPT2 4.2.2版本与当前运行环境的GLIBC版本不兼容,以下是几种可直接落地的修复方式:
1. 降级cordova-android版本
cordova-android@10.1.2默认绑定的AAPT2版本存在兼容性问题,降级到更稳定的10.0.0版本:
cordova platform remove android cordova platform add android@10.0.0
2. 强制指定兼容的AAPT2版本
在项目的platforms/android/build.gradle文件中添加配置,切换到兼容的AAPT2版本或禁用新AAPT2:
android { buildToolsVersion "30.0.3" aaptOptions { useNewAapt2 false } }
或者在项目根目录的build.gradle中全局指定AAPT2版本:
buildscript { dependencies { classpath 'com.android.tools.build:aapt2:3.6.4-6040484' } }
3. 升级GitHub Actions运行环境
将GitHub Actions的运行镜像切换到ubuntu-22.04(或更高版本),新版本系统自带更高版本的GLIBC,能兼容AAPT2 4.2.2:
jobs: build: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: apache/cordova-action@v1 with: cordova-version: '11.1.0'
4. 清理Gradle缓存
如果是缓存导致的版本冲突,清理Gradle缓存后重新构建:
rm -rf ~/.gradle/caches cordova build android
内容的提问来源于stack exchange,提问作者Gregory
相关产品推荐
相关产品推荐

