android - Kotlin 中的 String 属性可以有多长?

标签 android base64 kotlin

我创建了简单的 Base64Images 辅助类,其中包含这个主体:

companion object{
  val ABSTRACT_COLORS = "[image encoded in base64]"
}

ABSTRACT_COLORS 实际上是一个有 570438 个字符的字符串。

在编译过程中我得到:

org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: Failed to generate property ABSTRACT_COLORS
...
...
The root cause was thrown at: ByteVector.java:213 at org.jetbrains.kotlin.codegen.MemberCodegen.genFunctionOrProperty(MemberCodegen.java:205)
Caused by: java.lang.IllegalArgumentException

我以为我可以存储 2147483647 (231 - 1)字符串中的字符。

这是为什么?

我在下面发布了这张图片。
您可以使用 this tool生成 base64。

提示:编辑此类或编译项目会卡住 Android Studio。
我会使用一些轻量级的编辑器来编辑和终端来编译它。

enter image description here

最佳答案

正如@mfulton26 在评论中提到的那样,编译器在加载字符串时发生了一些事情。应报告给 Kotlin issue tracker 的崩溃错误.

作为变通方法,您可以将其作为文件添加到您的 src/main/resources 目录中,并以 String 的形式动态加载字符串>字节数组

例如,如果文件是src/main/resources/abstract-colors.txt,你可以read the entire file into a string :

val ABSTRACT_COLORS = javaClass.getResourceAsStream("/abstract-colors.txt")
                               .bufferedReader().use { it.readText() }

如果您不需要对其进行 base64 编码,您可以将图像存储为二进制并将其读入 ByteArray

val ABSTRACT_COLORS = javaClass.getResourceAsStream("/abstract-colors.jpg")
                               .use { it.readBytes() }

关于android - Kotlin 中的 String 属性可以有多长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39573984/

相关文章:

android - 如何建立双人关系室

php - 使用 json_encode 和 PHP 处理 base64 编码的图像

python-3.x - python : How to use speech_recognition or other modules to convert base64 audio string to text?

asp.net - 在 Ruby 中重新实现 ASP.NET 成员资格和用户密码哈希

java - 在 '@'之前屏蔽电子邮件中的中间字符

android - 类型不匹配。必需:观察员<in int!>找到:?

Android listview 项目没有获得焦点

java - 如何将 C++ 函数指针传递给库的 JNI 函数

Android - 找不到 onButtonClick(View) 方法

kotlin - 搜索 kotlin 空数据类主构造函数的解决方法