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

问题描述 投票:1回答:1

我刚刚将我的Android环境升级为:

  • macOS 10.13.5
  • Android Studio 3.1.4
  • gradle 4.6
  • gradle plugin'com.android.tools.build:grad:3.14'
  • 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..
android gradle aapt
1个回答
1
投票

我找到了解决方案。

在我的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

然后我尝试使用一个char长度的空格字符串:

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

我想这些争论现在变成了:

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

然后它解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.