在Android Studio中更改项目的“ buildToolsVersion”时出错

时间:2018-08-13 03:45:11

标签: android android-studio gradle build-tools

我使用Android Studio 3.1.4android gradle plugin version 3.1.4

以前,我在模块的buildToolsVersion "27.0.3"中设置了build.gradle,并且构建/运行没有问题。今天,我安装了较新版本的build tools,并将build.gradle更改为使用该版本:buildToolsVersion "28.0.2"

但是当我尝试sync project with gradle filesrebuild project时,它以AAPT2错误结束:

AGPBI: {"kind":"error","text":"error: \u003citem\u003e inner element must either be a resource reference or empty.","sources":[{"file":"<path to module>/src/main/res/values/ids.xml","position":{"startLine":16,"startColumn":4,"startOffset":752,"endColumn":55,"endOffset":803}}],"original":"","tool":"AAPT"}
....
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':<modulee-name>:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details

但是我不明白是什么原因导致了错误。例如错误的地址行是:

<item type="id" name="bookmark">false</item>

什么原因导致此错误,以及如何解决此问题?

修改

我在android.enableAapt2=false中添加了gradle.properties,它似乎忽略了错误,但是导致了以下警告:

  

不建议使用'android.enableAapt2'选项,因此不应使用   不再。使用'android.enableAapt2 = true'删除此警告。它   将于2018年底删除。

1 个答案:

答案 0 :(得分:1)

您不能为ID resource分配false(也不能是其他任何值,但它是name)。

  

ID是一种简单的资源,它使用name属性中提供的值(而不是XML文件的名称)进行引用。这样,您可以在一个元素下的一个XML文件中组合ID资源和其他简单资源。另外,请记住,ID资源没有引用实际的资源项;它只是一个唯一ID,您可以将其附加到其他资源或在应用程序中用作唯一整数。

使用android.enableAapt2=false可能会忽略逻辑错误,但不会“修复”。