android - 执行 aapt 时出错 : Return code 132 problems

标签 android adt android-sdk-tools aapt

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

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

但是,从那时起我遇到的问题是任何试图快速构建库项目的尝试都...

Error executing aapt: Return code 132

...并且库项目未正确构建。

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

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

问题是,我该如何诊断这个问题?公分母显然是一个 aapt 问题,但我不知道如何解决它。

我在 Debian Wheezy(32 位)设置上运行并且我已经正确安装了 Java 1.7(按照推荐)。

最佳答案

aapt 在某些 32 位系统上似乎存在问题。它在 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. 找到类似于 ~/Android/Sdk/extras/android/m2repository/com/android/support/appcompat-v7/22.0.0 的 appcompat-v7.aar

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

  3. 去除所有 png 文件:找到 . -name "*.png"-exec mogrify -strip {}\;

  4. 再次打包备份文件:pushd appcompat-v7-22.0.0;压缩-r ../appcompat-v7-22.0.0.aar;弹出
  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. 我知道它很臭,但我很绝望!!

关于android - 执行 aapt 时出错 : Return code 132 problems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27715506/

相关文章:

android - 在 SDK 中找不到工具

java - 注册表错误 : JAVA 1. 7 而不是 1.6

android-manifest - 最大 sdk 版本和目标 sdk 版本有什么区别?

android - 如何在 Crashlytics (Android) 中将开发 session 与生产 session 隔离开来

android - Android 生命周期方法的 Eclipse 快捷方式

android - sdkmanager 警告 : Failed to download any source lists

android - Eclipse:无法从 SDK 获取所需的 ADT 版本号

android - 内存不足加载 imageViews

android - 从 Activity 到 Main Activity 的返回列表?

java - 使用 Active Android 将日期保存到 sqlite 数据库