Aapt неизвестная команда '--output-text-символы' - PullRequest
0 голосов
/ 04 сентября 2018

Я только что обновил свою среду Android до:

  • macOS 10.13.5
  • Andorid Studio 3.1.4
  • Gradle 4,6
  • плагин gradle 'com.android.tools.build:gradle:3.1.4'
  • Android SDK 28
  • Инструмент сборки 28.0.2

Однако, когда я собирался построить свой проект, он всегда терпел неудачу в задаче processXXXDebugResources с такой ошибкой:

AAPT err(Facade for 111853366) : No Delegate set : lost message:error: unknown command '--output-text-symbols'.
AAPT err(Facade for 111853366) : No Delegate set : lost message:Error
Failed to execute aapt

Понятия не имею, откуда взялся --output-text-symbols. Похоже, что --output-text-symbols был параметром для программы aapt, но последний плагин gradle использует другой новый aapt2.

android.enableAapt2=false может заставить эту проблему исчезнуть, но предупреждение говорит, что эта опция устарела.

The option 'android.enableAapt2' is deprecated and should not be used anymore.
Use 'android.enableAapt2=true' to remove this warning.
It will be removed at the end of 2018..

1 Ответ

0 голосов
/ 04 сентября 2018

Я нашел решение.

В моем build.gradle был aaptOptions с строковым параметром нулевой длины:

aaptOptions {
    noCompress ""  // <- zero length string
}

Раньше он работал на плагине 2.x gradle, но не работал в последней версии 3.x. Похоже, что новый плагин предоставил неверные аргументы для команды aapt.

Мое подозрение:

В старой версии аргументы могут быть:

aapt -0 '' --output-text-symbols
        ^
this is the zero-length string from aaptOptions in bulid.gradle

Но в последней версии это становится:

aapt -0 --output-text-symbols
        ^
something is missing

А потом я попытался использовать строку пробела длиной в один символ:

aaptOptions {
    noCompress " "  // <- one char length space string
}

Полагаю, теперь аргументы становятся такими:

aapt -0 ' ' --output-text-symbols
         ^
  the space comes back

Тогда это решит проблему для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...