首页 > 解决方案 > 在 Android Studio 中更改项目的“buildToolsVersion”时出错

问题描述

我使用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 projectAAPT2错误结束时:

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=falsegradle.properties它似乎忽略了错误,但会导致此警告:

'android.enableAapt2' 选项已弃用,不应再使用。使用 'android.enableAapt2=true' 删除此警告。它将在 2018 年底被删除。

标签: androidandroid-studiogradlebuild-tools

解决方案


您不能将false(也不是任何其他值,但它是name)分配给ID 资源

ID 是使用 name 属性中提供的值(不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中的一个元素下将 ID 资源与其他简单资源结合起来。另外,请记住 ID 资源不引用实际的资源项;它只是一个唯一 ID,您可以将其附加到其他资源或用作应用程序中的唯一整数。

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


推荐阅读