Android Gradle Инструменты для обновления проекта до 21.0.1: aapt throws Exception
У нас есть проект android gradle. Сегодня я хотел обновить версию инструментов для сборки Android от 20 до 21.0.1, но теперь апат не работает.
* 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, все будет хорошо.
Кто-нибудь сталкивался с этой проблемой?
Ответы
Ответ 1
Это вызвано неисправностью 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"
При необходимости замените номера версий самыми последними.
Старый buildToolsVersion
21.0.2, рекомендуемая версия - 21.1.2 или новее
Ответ 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
P.S. Протестировано только на Mac.
Ответ 3
Предупреждения о libpng сообщаются здесь, но могут быть проигнорированы
https://code.google.com/p/android/issues/detail?id=77704
Участник проекта говорит, что новый libpng, который они построили, более строг относительно профиля цвета. Они исправит это в предстоящем выпуске, но это не должно быть проблемой.
И 21.0.2 решает другие проблемы.
Ответ 4
Я нашел способ удалить профиль цвета из png файлов, чтобы избежать этого предупреждения, используя pngcrush Википедия о pngcrush.
Если вы работаете в MacOS, вы также можете использовать инструмент ImageOptim для запуска pngcrush и замены нарезанных .png файлов на лету.
Ответ 5
21.0.1 также ломает мой проект - aapt не добавит ни одного строкового ресурса в APK.
Вернулось обратно к 20.0.0, отредактировав файл project.config:
sdk.buildtools=20.0.0
Ответ 6
У меня была такая же проблема с инструментами построения 21.0.0, но после обновления до 21.0.1 она была исправлена.
Ответ 7
Если по какой-то причине нецелесообразно вручную отделять метаданные от файлов, которые вы можете отключить от использования новой и более строгой дробилки png, установив в вашем файле build.gradle следующее.
aaptOptions.useNewCruncher = false
Ответ 8
Я получал те же предупреждения, и апат застревал даже с инструментами построения 22.0.1. Я сделал отметку в опции Компилировать независимые модули параллельно в настройках > компилятор, в результате чего было выполнено несколько экземпляров для запуска и сборки aapt.
Ответ 9
удалить зависимость com.android.support:appcompat-v7:xxx