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