【问题标题】:Error executing aapt: Return code 132 problems执行 aapt 时出错:返回码 132 问题
【发布时间】:2015-02-27 05:04:48
【问题描述】:

自从大约一个月前更新我的 Android SDK 以来,我遇到了无穷无尽的问题,让我的开发环境无法正常工作。

最初的问题在于 v7-appcompat 支持库,它引发了大约 100 个与各种资源相关的错误。很明显它们是与 Android v5 相关的资源,在 Stack Overflow 上快速搜索意味着我意识到 v7-appcompat 库的目标是 API 19。将相关设置更改为目标 API 21 修复了资源错误。

然而,从那以后我遇到的问题是任何构建库项目的尝试都会以...

执行 aapt 时出错:返回码 132

...库项目没有正确构建。

我最初的设置是使用 Eclipse Kepler,但后来我尝试了 Android Studio v1.0.1(相同的 aapt 错误代码),今天我将 Eclipse Luna 安装到了 Kepler 的单独目录中,并全新安装了 ADT 和 SDK。每个版本的 Eclipse 也有自己的工作区。

所以基本上我有两个版本的 Eclipse(每个都有自己的 ADT / SDK 设置和工作区)和 Android Studio 有自己的目录结构,所有三个都表现出同样的问题。

问题是,我该如何诊断这个问题?共同点显然是一个合适的问题,但我不知道如何解决它。

我在 Debian Wheezy(32 位)设置上运行,并且已正确安装 Java 1.7(按照建议)。

【问题讨论】:

    标签: android adt android-sdk-tools aapt


    【解决方案1】:

    在某些 32 位系统上似乎存在 aapt 问题。它在 app:processDebugResources 上引发错误 132,此时 aapt 正在“处理”准备包含在 apk 包中的 png 文件。您可以在https://code.google.com/p/android/issues/detail?id=75110查看更多详情

    有人报告说“修复”有问题的 png 文件(例如,通过在 Gimp 中打开并保存)可以解决问题。当它们“内置”到 appcompat 中时,当然会更难做到。

    在详细介绍之前,您能否先说一下您是否确实在 32 位处理器上运行,如果是,是哪一个?用 lscpu 找出来。

    好的,如果有人感兴趣,这里有一个解决方法,您可以使用旧笔记本电脑使用 Android Studio 构建应用程序。基本上,您剥离 appcompat-v7 库中的所有 png 文件,然后使用两个版本的 aapt 进行构建。呵呵。

    1. 找到 appcompat-v7.aar,它类似于 ~/Android/Sdk/extras/android/m2repository/com/android/support/appcompat-v7/22.0.0

    2. 将其(实际上是一个 zip 文件)解压到一个临时目录

    3. 剥离所有 png 文件:find . -name "*.png" -exec mogrify -strip {} \;

    4. 再次打包文件备份:pushd appcompat-v7-22.0.0; zip -r ../appcompat-v7-22.0.0.aar; popd
    5. 移动新的 aar 文件以替换原始文件(这可能足以获得良好的构建,但它不适合我)
    6. 现在找到一个旧版本的 aapt(我去了https://dl-ssl.google.com/android/repository/build-tools_r17-linux.zip
    7. 将您刚刚下载的 zip 中的 aapt 版本复制到 Android/Sdk/build-tools 目录中,作为 aapt-17 或其他格式
    8. 将原来的 aapt 重命名为 aapt-0
    9. 在 aapt 的两个版本之间交替(例如ln -sf aapt-17 aapt),您应该会发现您可以获得一个好的构建。一个版本会在一个地方失败,另一个版本会在另一个地方失败,让您克服所有困难。
    10. 我知道它很臭,但我很绝望!!

    【讨论】:

    • 谢谢。直到周末我才有时间检查这个,但我会告诉你它是否适合我。事实上,我已经通过 Git 存储库将我的主要项目迁移回了我的 Win XP,并且我能够再次编码。不过,让 Linux 机器正常工作会很好。
    【解决方案2】:

    这就是我所做的,这足以成功构建。受到 peterthevicar 回答的启发。

    • 将 sdk 降级到 19.1.0,你可以从 studio 安装它,然后在 build.gradle 中更改 buildToolsVersion
    • 将 aapt 重命名为 aapt.bin 并在其位置放置一个 shell 脚本,该脚本仅拦截 png 紧缩(参数:s -i infile -o outfile)并执行简单的 cp。将其粘贴在这里,但 SO 的语法突出显示 suuuucks

    【讨论】:

      猜你喜欢
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      相关资源
      最近更新 更多