Kotlin 中的 STRING_TOO_LARGE 字符串

Posted

技术标签:

【中文标题】Kotlin 中的 STRING_TOO_LARGE 字符串【英文标题】:STRING_TOO_LARGE String in Kotlin 【发布时间】:2018-10-20 14:52:46 【问题描述】:

当我在我的项目中添加插件以支持 Kotlin 时,然后在它从我的项目的 string.xml 文件中读取大字符串之后。它在下面给了我以下错误。

错误:字符串太大,无法使用 UTF-8 进行编码,而是改为“STRING_TOO_LARGE”。

【问题讨论】:

我有同样的问题,但是当使用支持 lib 28 alpha 时。我找到了这个github.com/material-components/material-components-android/… 检查你是否有一个大的vector drawable,如上面帖子中的建议 我已经在string.xml中声明了长字符串 你使用的是什么 gradle 版本? 3.2 beta (issuetracker.google.com/issues/110853846) 可能存在错误。尝试降级到 3.1.3 看看是否有帮助。 Downgrading Gradle Build Tools to 3.1.0 (classpath 'com.android.tools.build:gradle:3.1.0') 为我修复了这个问题 【参考方案1】:

这是 gradle 插件的问题。

如果您将插件升级到3.3.0-alpha06 或更高版本并将gradle 升级到4.9,它应该可以工作。这并不理想,因为它是 alpha,但它为我解决了这个问题。

<?xml version="1.0" encoding="utf-8"?> 添加到任何缺少它的资源 .xml 文件的顶部。

【讨论】:

是的,它有效..谢谢【参考方案2】:

在处理矢量资源时,您只需要找到并分割一个长度超过 32kb 的字符串,在我的情况下,这是一条复杂的路径,我稍微简化以匹配 32kb 的标准

【讨论】:

荒谬的是,Android 在指定问题所在方面做得不够好。我有一个几十万文件的项目,无法手动搜索哪个文件有问题【参考方案3】:

这并不是真正的 Kotlin 问题,它与构建工具有关。这在 Build Tools 27 (Gradle 3.1) 上没有发生,但在升级到 Build Tools 28 (Gradle 3.2) 后发生在我身上。

解决方案发布在这里STRING_TOO_LARGE Java compiler error。

【讨论】:

伙计...我只是不能认为这是一个答案,而是一种解决方法。降级版本不是解决方案 这不是解决方案!【参考方案4】:

似乎造成这种情况的一个常见原因是您的 app/build.gradle 中有一个 Stripe,似乎它有一个矢量文件被读取为超过 32kB 的字符串。

要解决此问题,请将您的条带版本更改为 7.0.0 之后的版本,这是他们修复它的地方。当前的 Stripe 版本是 8.1.0。

【讨论】:

这解决了我的问题!【参考方案5】:

在没有看到任何代码的情况下,除了猜测可能存在的问题之外,很难做任何事情。

目前我们所能看到的是,很可能存在一个太大而无法编码的字符串,否则您将不会收到错误消息。

该字符串是如何构建的以及它存在的原因......

这是一个我们无法真正回答的问题。您可能想进一步详细说明您的问题,以便我们可以更深入地了解兔子洞并帮助找到解决方案。 :)

【讨论】:

【参考方案6】:

转到文件 > 使缓存无效/重新启动。这解决了我的问题。

【讨论】:

以上是关于Kotlin 中的 STRING_TOO_LARGE 字符串的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin在Android中的发展趋势

使用 kotlin-maven-plugin 构建的 jar 中的 Kotlin 类

Kotlin小笔记kotlin中的小技巧

Kotlin中级- - - 初识Kotlin中的对象.md

Kotlin 中的意图

Kotlin小笔记kotlin中的空指针检查