Как долго свойство String может находиться в Котлине?

Я создал простой вспомогательный класс 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 (2 31 – 1) символов в строке.

Почему это?

Я разместил этот снимок ниже.
Вы можете использовать этот инструмент для генерации base64.

Подсказка: редактирование этого класса или компиляция проекта замораживает Android Studio.
Я бы использовал небольшой редактор для редактирования и терминал, чтобы скомпилировать его.

введите описание изображения здесь

    Как упоминалось в комментарии от @ mfulton26, что-то происходит с компилятором при загрузке строки. Ошибка сбоя, о которой следует сообщать трекеру Kotlin .

    В качестве рабочего процесса вы можете добавить это как файл в каталог src/main/resources и загружать строку динамически либо как String либо как ByteArray .

    Например, если файл был src/main/resources/abstract-colors.txt вы можете прочитать весь файл в строке :

     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() }