kli*_*mat 5 base64 android kotlin
我创建了简单的Base64Images辅助类,其中包含此主体:
companion object{
val ABSTRACT_COLORS = "[image encoded in base64]"
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我认为我可以在字符串中存储2147483647 (2 31 - 1) 个字符。
这是为什么?
我在下面发布了这张图片。
您可以使用此工具生成base64。
提示:编辑此类或编译项目会冻结 Android Studio。
我会使用一些轻量级编辑器来编辑并使用终端来编译它。
正如 @mfulton26 的评论中提到的,加载字符串时编译器发生了一些事情。应向Kotlin 问题跟踪器报告的崩溃错误。
作为解决方法,您可以将其添加为src/main/resources目录中的文件,并将字符串动态加载为 aString或ByteArray.
例如,如果文件是,src/main/resources/abstract-colors.txt您可以将整个文件读入字符串:
val ABSTRACT_COLORS = javaClass.getResourceAsStream("/abstract-colors.txt")
.bufferedReader().use { it.readText() }
Run Code Online (Sandbox Code Playgroud)
如果您不需要对其进行 Base64 编码,您可以将图像存储为二进制并将其读入ByteArray.
val ABSTRACT_COLORS = javaClass.getResourceAsStream("/abstract-colors.jpg")
.use { it.readBytes() }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2208 次 |
| 最近记录: |