Aapt未知命令'--output-text-symbols'

时间:2018-09-04 06:11:52

标签: android gradle aapt

我刚刚将Android环境升级到:

  • macOS 10.13.5
  • Andorid Studio 3.1.4
  • 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 :(得分:1)

我找到了解决方法。

在我的build.gradle中,有一个aaptOptions { noCompress "" // <- zero length string } ,字符串参数的长度为零:

aapt

它曾经在2.x gradle插件上运行,但在最新的3.x版本上失败。新插件似乎为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

我猜现在争论变成了:

#select!

然后为我解决问题。