【问题标题】:unescaped apostrophe in string字符串中未转义的撇号
【发布时间】:2018-09-01 10:54:01
【问题描述】:

我已经搜索了很多,但没有找到以下答案/解决方案:

在 Android Studio 中,我有一个可以正常运行多年的项目。在 'build.grandle' 文件中将 compileSdkVersion 更新为 '28',将 buildToolsVersion 更新为 '28.0.2' 和 targetSdkVersion 更新为 '28' 后,由于以下原因无法成为干净的构建:

错误:字符串中未转义的撇号 消息{kind=ERROR, text=error: 字符串中未转义的撇号,sources=[/home/.../app/src/main/res/values/arrays.xml:77:5-89:20],原始消息=, 工具名称=Optional.of(AAPT)}

错误:无法解析数组项。 消息{kind=ERROR, text=error: could not parse array item., sources=[/home/.../app/src/main/res/values/arrays.xml:77:5-89:20], original message=, tool name=Optional.of(AAPT)}

处理撇号问题的网络上有很多类似的问题,但就我而言,'arrays.xml:77:5-89:20' 中没有撇号:

...
77    <string-array name="textFontSizeValues">
78        <item>0</item>
79        <item>1</item>
80        <item>2</item>
81        <item>3</item>
82        <item>4</item>
83        <item>5</item>
84        <item>6</item>
85        <item>7</item>
86        <item>8</item>
87        <item>9</item>
88        <item>10</item>
89    </string-array>
...

编辑: 也只有

...
<string-array name="textFontSizeValues">
</string-array>
...

给出相同的错误,这对我来说没有意义,因为没有“撇号”

【问题讨论】:

  • 您是否有机会从某处复制粘贴此代码?在 AS 编辑器中通常看不到 unicode/linebreak 字符。
  • 我不知道。我也尝试从同一个文件中复制上面的工作字符串数组,这没有问题..但这没有帮助......
  • 制作values.xml 的备份副本,或确保您的当前版本受版本控制。从textFontSizeValues 数组中删除所有&lt;item&gt; 元素。然后尝试构建 APK 并查看编译错误是否消失。如果确实如此,那么这些&lt;item&gt; 元素确实有些可疑,并且重新键入它们可能是最简单的。如果编译错误仍然存​​在,请恢复备份的values.xml...我不确定从那里去哪里(超出标准的“构建 > 清洁项目”建议)。
  • 除此之外......为什么你需要一个字符串数组,如果它包含整数
  • 在哪里可以找到“values.xml”文件?我还没有找到它...我从textFontSizeValues 数组中删除了所有&lt;item&gt; 元素,并尝试了一个新的“Build > Clean Project”,由于同样的错误仍然没有成功编译(这次只有行号信息不同):(

标签: android aapt


【解决方案1】:

我想您已经找到了解决方案,但以防万一。

我遇到了同样的错误并找到了错误的撇号,但在你的情况下很奇怪,因为你似乎只有数字。

我会做同样的事情:删除数组中的所有项目,检查是否没有收到错误,然后手动逐一写入,无需复制和粘贴。它是一个简短的代码,因此您可以管理。

祝你好运!

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 2011-01-25
    • 2016-10-24
    • 2017-01-30
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    相关资源
    最近更新 更多