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 字符串的主要内容,如果未能解决你的问题,请参考以下文章