【问题标题】:Android Gradle Project upgrading build tools to 21.0.1: aapt throws ExceptionAndroid Gradle 项目将构建工具升级到 21.0.1:aapt throws Exception
【发布时间】:2014-12-14 07:28:39
【问题描述】:

我们有一个 android gradle 项目。今天想把android build tools版本从20升级到21.0.1,但是现在aapt失败了。

* What went wrong:
Execution failed for task ':myproject-android:processDebugResources'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
        c:\_DEVELOP\AndroidSDK\sdk\build-tools\21.0.1\aapt.exe package -f --no-crunch -I c:\_DEVELOP\AndroidSDK\sdk\platforms\android-16\android.jar -M D:\_MY_PROJECT\trunk\myproject_bin\gradle\build\re
lease\myproject-android\intermediates\manifests\full\debug\AndroidManifest.xml -S D:\_MY_PROJECT\trunk\myproject_bin\gradle\build\release\myproject-android\intermediates\res\debug -A D:\_MY_PROJECT\tr
unk\myproject_bin\gradle\build\release\myproject-android\intermediates\assets\debug -m -J D:\_MY_PROJECT\trunk\myproject_bin\gradle\build\release\myproject-android\generated\source\r\debug -F D:\_PIVOSC
ORE_P4\trunk\myproject_bin\gradle\build\release\myproject-android\intermediates\res\resources-debug.ap_ --debug-mode --custom-package com.myproject.app -0 apk --output-text-symbols D:\_MY_PROJECT\trunk\
myproject_bin\gradle\build\release\myproject-android\intermediates\symbols\debug
Error Code:
        255

我有一些警告说:

libpng warning: iCCP: Not recognizing known sRGB profile that has been edited

我修复了这些,但 appcompat-v7 库中还有 6 个。

如果我将构建工具版本恢复为 20,一切正常。

有人遇到过这个问题吗?

【问题讨论】:

  • 请注意,AAPT 中有几个不同但相关的错误;该错误报告有点混乱。您的错误不是报告返回错误-1073741819 的主要错误。请跟进,如果该错误已被关闭并且您仍然遇到问题,请打开一个新错误。
  • 显示你的 build.gradle

标签: android gradle android-gradle-plugin build-tools


【解决方案1】:

这对我有用:

它是由 Photoshop 等工具添加的元数据,Android 甚至不支持它。剥离它。

brew install exiftool
find . -path '*src/main/res/*' -name '*.png' -exec exiftool -overwrite_original -all= {} \;

来源:https://groups.google.com/forum/#!msg/adt-dev/rjTQ_STR3OE/-UcNQRISTKsJ

附:仅在 Mac 上测试。

【讨论】:

  • 实际命令(来自提供的链接)是find . -path '*src/main/res/*' -name '*.png' -exec exiftool -overwrite_original -all= {} \; 如果没有path 中的*,该命令将不起作用
  • 我应该把这行放在哪里?
  • 终端。 'cd' 到你的根项目文件夹并粘贴命令。
  • 嗨,我已经尝试了上面提到的命令。但它没有得到它。我得到的回应是:FIND: Parameter format not correct Please let me know how to execute it.
  • 我在 mac 上,对我不起作用,我用 find ./ -name '*.png' | xargs -L 1 -I '{}' exiftool -overwrite_original -all= '{}' 代替。谢谢
【解决方案2】:

这是由错误的aapt 引起的。 21.0.0 也有类似的问题 (Error Code: -1073741819)。您需要再次更新build-tools 才能修复它。

  • 打开 SDK 管理器并安装 build-tools 21.1.2

  • 然后更改您的 build.gradle 使其看起来像这样。

    apply plugin: 'com.android.application'
        android {
            compileSdkVersion 21
            buildToolsVersion "21.1.2"
    

根据需要将版本号替换为最新的。

buildToolsVersion21.0.2,推荐21.1.2或更高版本

【讨论】:

  • 更新到 21.1.1 后我也遇到同样的错误
  • 即使使用 21.1.2 仍然存在
  • 22.0.1 仍在发生
  • 22.1.2 中仍在发生
  • 23.0.0 rc3 中仍在发生
【解决方案3】:

此处报告了有关 libpng 的警告,但可以忽略

https://code.google.com/p/android/issues/detail?id=77704

项目成员说他们构建的较新的 libpng 对颜色配置文件更加严格。他们将在即将发布的版本中解决此问题,但这应该不是问题。

而 21.0.2 解决了其他问题。

【讨论】:

【解决方案4】:

我找到了一种从 png 文件中删除颜色配置文件的方法,使用 pngcrush Wikipedia about pngcrush 来避免此警告。

如果您在 MacOS 上工作,您还可以使用名为 ImageOptim 的工具来运行 pngcrush 并即时替换剥离的 .png 文件。

【讨论】:

  • 在安装后(apt-get install pngcrush 在 ubuntu 上)你可以像这样运行它:find . -path '*src/main/res /*' -name '*.png' -exec bash -c 'pngcrush $0 ${0}' {} \;
【解决方案5】:

21.0.1 也破坏了我的项目 - aapt 不会向 APK 添加任何字符串资源。 通过编辑 project.config 恢复到 20.0.0:

sdk.buildtools=20.0.0

【讨论】:

  • 您遇到了什么问题或错误?它工作得很好。
  • PackageManager 在找不到应用名称的字符串资源时崩溃。 Aapt d strings 在 APK 中根本不显示任何字符串。
【解决方案6】:

我在使用构建工具 21.0.0 时遇到了同样的问题,但在更新到 21.0.1 后问题已得到修复。

【讨论】:

    【解决方案7】:

    如果由于某种原因无法手动从文件中删除元数据,您可以通过在 build.gradle 中设置以下内容来禁用新的更严格的 png 粉碎器。

    aaptOptions.useNewCruncher = false
    

    【讨论】:

      【解决方案8】:

      我收到了同样的警告,即使使用构建工具 22.0.1,aapt 也卡住了。我在设置>编译器中勾选了并行编译独立模块选项,这导致多个 aapt 实例运行并且构建成功。

      【讨论】:

        【解决方案9】:

        删除com.android.support:appcompat-v7:xxx 依赖

        【讨论】:

          猜你喜欢
          • 2014-04-10
          • 1970-01-01
          • 1970-01-01
          • 2017-08-02
          • 1970-01-01
          • 2021-11-03
          • 1970-01-01
          • 1970-01-01
          • 2018-08-21
          相关资源
          最近更新 更多