Android Gradle Project将构build工具升级到21.0.1:aapt抛出exception

我们有一个Android gradle项目。 今天我想升级从20到21.0.1的Android构build工具版本,但是现在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 -MD:\_MY_PROJECT\trunk\myproject_bin\gradle\build\re lease\myproject-android\intermediates\manifests\full\debug\AndroidManifest.xml -SD:\_MY_PROJECT\trunk\myproject_bin\gradle\build\release\myproject-android\intermediates\res\debug -AD:\_MY_PROJECT\tr unk\myproject_bin\gradle\build\release\myproject-android\intermediates\assets\debug -m -JD:\_MY_PROJECT\trunk\myproject_bin\gradle\build\release\myproject-android\generated\source\r\debug -FD:\_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个。

如果我恢复构build工具版本到20一切工作正常。

有没有人遇到过这个问题?

  • ClassCastException:NoClassDefFoundError不能转换为RuntimeException
  • 在iOS中,我们在Android上有类似Gradle Build Flavors的东西
  • 如何在Android Studio 1.3中设置Gradle JVM设置
  • Gradle构build不工作:执行失败的任务':MyApp:compileDebug'
  • 按密度分割的APK仍包含所有资源
  • Android Studio 3中反应产生的资源问题
  • 属性'inputFile'指定的app-debug-unaligned.apk不存在
  • Android Gradle DexException:多个dex文件定义Lorg / hamcrest / Description
  • 这是由一个错误的aapt造成的。 在21.0.0也有类似的问题( Error Code: -1073741819 )。 您需要再次更新build-tools来修复它。

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

    • 然后改变你的build.gradle,看起来像这样。

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

    根据需要用最新版本replace版本号。

    buildToolsVersion版本21.0.2,推荐版本是21.1.2或更高版本

    这对我工作:

    它是由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

    PS仅在Mac上testing。

    关于libpng的警告在这里被报告,但是可以被忽略

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

    项目成员说,他们build立的新的libpng更严格的颜色configuration文件。 他们会在即将发布的版本中解决这个问题,但这不应该是一个问题。

    而21.0.2解决了其他问题。

    我发现了一种方法来从png文件中删除颜色configuration文件,以避免使用pngcrush 维基百科关于pngcrush这个警告。

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

    21.0.1也打破了我的项目 – aapt不会添加任何string资源的APK。 通过编辑project.config恢复到20.0.0:

     sdk.buildtools=20.0.0 

    我有与构build工具21.0.0相同的问题,但更新到21.0.1后,它已被修复。

    如果出于某种原因手动从文件中删除元数据是不现实的,你可以通过在你的build.gradle中设置以下内容来禁止使用新的和更严格的PNG破碎机。

     aaptOptions.useNewCruncher = false 

    我得到了相同的警告,并且即使使用了构build工具,aapt也陷入了困境22.0.1。我在设置>编译器中并行编译了独立模块并行编译,导致aapt的多个实例运行并且构build成功。

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