android - 在 Android Studio 中更改项目的“buildToolsVersion”时出错
问题描述
我使用Android Studio 3.1.4
和android gradle plugin version 3.1.4
。
以前我设置buildToolsVersion "27.0.3"
了build.gradle
模块,构建/运行没有问题。今天我安装了更新版本build tools
并更改build.gradle
为使用它:buildToolsVersion "28.0.2"
但是当我尝试sync project with gradle files
或rebuild 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 年底被删除。
解决方案
您不能将false
(也不是任何其他值,但它是name
)分配给ID 资源。
ID 是使用 name 属性中提供的值(不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中的一个元素下将 ID 资源与其他简单资源结合起来。另外,请记住 ID 资源不引用实际的资源项;它只是一个唯一 ID,您可以将其附加到其他资源或用作应用程序中的唯一整数。
它android.enableAapt2=false
可能会忽略逻辑错误,但不会“修复它”。
推荐阅读
- excel - Excel VBA 用户窗体编辑器不断自行调整大小
- google-api - Youtube 数据 API 搜索端点 401 错误
- javascript - 使用 htmlToImage 时,请求的资源上不存在“Access-Control-Allow-Origin”标头
- flutter - firebase 存储颤动中的下载链接问题
- django - Django-Compressor 无法在自定义 S3 域的离线模式下工作
- javascript - Document.scroll 不适用于多个 html 页面
- .net - 如何在 Visual Studio 设计器中启用窗体的视觉样式?
- neo4j - 如何在 neo4j 中显示所有节点和两个节点之间的关系?
- jenkins - 詹金斯构建过程永远运行
- plotly - 如何在同一行中制作三个绘图图表?