树莓派编译Android应用时AAPT2报错求助
在树莓派编译Android应用时遭遇AAPT2执行错误
我正尝试在树莓派上编译一款Android应用,执行gradlew assembleRelease命令时出现如下AAPT2错误,全网未找到可行解决办法,盼求帮助:
AAPT2 aapt2-7.2.0-7984345-linux Daemon #0: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: �@��@8 > :app:mergeReleaseResources @#!@@@����T�T�: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #0: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: �: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #0: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: ELF: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #0: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 2: Syntax error: "(" unexpected AAPT2 aapt2-7.2.0-7984345-linux Daemon #1: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: �@��@8 > :app:mergeReleaseResources @#!@@@����T�T�: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #1: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: �: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #1: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: ELF: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #1: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 2: Syntax error: "(" unexpected AAPT2 aapt2-7.2.0-7984345-linux Daemon #2: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: �@��@8 > :app:mergeReleaseResources @#!@@@����T�T�: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #2: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: �: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #2: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 1: ELF: not found AAPT2 aapt2-7.2.0-7984345-linux Daemon #2: Unexpected error output: /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/transformed/aapt2-7.2.0-7984345-linux/aapt2: 2: Syntax error: "(" unexpected > Task :app:mergeReleaseResources FAILED
问题原因
报错本质是架构不兼容:树莓派采用ARM架构,而Gradle缓存中下载的aapt2-7.2.0-7984345-linux是x86_64架构的二进制文件,ARM系统无法直接执行x86程序,因此出现"ELF: not found"、语法错误等提示。
解决办法
方法1:强制使用ARM64版本的AAPT2
- 清理现有错误的AAPT2缓存文件:
rm -rf /root/.gradle/caches/transforms-3/b4396707ed6be3225c88a086a05435f8/ - 在项目根目录的
gradle.properties文件中添加以下配置,指定下载ARM64架构的AAPT2:android.aapt2FromMavenOverride=com.android.tools.build:aapt2:7.2.0-7984345:linux-arm64 - 重新执行编译命令:
./gradlew assembleRelease
方法2:降级Android Gradle Plugin版本
部分较新的AGP版本可能未默认提供ARM架构的AAPT2包,可尝试降级到7.0.x系列版本(如7.0.4),这类版本通常自带兼容ARM的AAPT2。修改项目根目录build.gradle中的AGP版本:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.0.4' } }
修改后清理缓存并重新编译。
内容的提问来源于stack exchange,提问作者Torralba
相关产品推荐
相关产品推荐

