【问题标题】:Error on changing "buildToolsVersion" of project in Android Studio在 Android Studio 中更改项目的“buildToolsVersion”时出错
【发布时间】:2018-08-13 03:45:10
【问题描述】:

我使用Android Studio 3.1.4android gradle plugin version 3.1.4

之前我在模块的build.gradle中设置了buildToolsVersion "27.0.3",构建/运行没有问题。今天我安装了较新版本的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>

是什么导致了这个错误,我该如何解决这个问题?

编辑

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

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

【问题讨论】:

    标签: android android-studio gradle build-tools


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不认为使用false 会导致问题;因为该文件中有另一行:&lt;item type="id" name="app_rate"&gt;false&lt;/item&gt; 但错误并未指向该行。
    • @hasanghaforian 问题是type="id" 不允许赋值。 AAPT2 可能会忽略该值,而 D8 可能会出错。即使它构建了 - 它也可能无法按预期运行。
    • 还有一个提示,inner element must either be a resource reference or empty ...正在讲述同样的事情;其中“内部元素”是&gt; &lt; 之间的元素。
    • 我把那行改成&lt;item type="id" name="bookmark"&gt;"foo"&lt;/item&gt;;但错误再次解决了该行。
    • @hasanghaforian "foo" 是一个字符串,而不是资源引用。老实说,把它留空:&lt;item type="id" name="bookmark"/&gt; 正如 Martin 建议的那样。
    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多