<![CDATA [“'”]]>返回两个结果。某些应用程序版本打印“'”,另一应用程序版本打印“”。为什么?

时间:2019-09-10 08:34:21

标签: java android xml kotlin jvm

我在string.xml中使用了。 就像getText(R.string.something)一样使用。

某些应用程序版本会打印类似“'”的字符串。 另一个应用版本显示为“。

搜索该关键字“ android”,“ CDATA”,“ quote”,“ getText”,“ update”

<string name="example"><![CDATA["'"]]>example<![CDATA["'"]]></string>
Timber.d(getText(R.id.example))

// some app print "'"
// another app print '

该代码之前返回了'。 但是在版本升级后,一些与GTM和glide相关的库 该代码返回“'”。


更新

我的最佳目标是使用<![CDATA["'"]]>打印'。


更新

除非不能,否则想知道为什么。因为它是从gradle /库版本升级的副作用中发生的。


更新

我发现了为什么会发生此问题。

问题来自将com.android.tools.build:gradle版本3.2.1升级到(3.3.0〜3.4.2) 但是,如果将gradle版本设置为3.5.0,则<![CDATA["'"]]>返回'(我想要的)


更新

我从Google问题跟踪器分配器那里得到了答案 “ gradle插件3.3.0〜3.4.2的输出是aapt2中的错误。3.5.0恢复了正确的行为。”

如果想知道更改,请搜索“ aapt2 quote”关键字。

4 个答案:

答案 0 :(得分:0)

您的目标只是显示引号吗?如果是这样,请尝试使用以下方法:

<string name="example">\'example\'</string>

用例:Timber.d(getString(R.string.example)); CDATA是您要将HTML与getText打包在一起的时候。我认为您不需要在这里。

答案 1 :(得分:0)

尝试一下,应该可以正常运行

“ \'”

答案 2 :(得分:0)

通过XML标准:

<string name="example">&apos;example&apos;</string>

尽管可能不容易。 ({{1}中的&quot;)。

答案 3 :(得分:0)

我认为这是您使用CDATA语句的方式,如果您仍然想使用它,可能就像

Just

使用<string name="example"><![CDATA[&#039;example&#039;]]></string> &#039;作为撇号。