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一切工作正常。
有没有人遇到过这个问题?
这是由一个错误的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
依赖项