Сумасшедшая запись UTF-8 в постоянном пуле класса kotlin - PullRequest
2 голосов
/ 05 июня 2019

При изучении содержимого файла .class из источника Kotlin (просто «Hello World», ничего больше) я обнаружил строку UTF-8 в пуле констант, которая (а) нигде не используется и (б) сстранное содержание.

Кто-нибудь может сказать мне, что это?

enter image description here

1 Ответ

5 голосов
/ 05 июня 2019

Это содержание kotlin.Metadata аннотации.Он кодируется с помощью Protobuf и используется как компилятором, так и Kotlin-Reflect.

Kotlin использует String вместо byte[], потому что формат класса очень расточителен при хранении массивов.

Когда выне используя Kotlin-Reflect, метаданные не используются и могут быть удалены ProGuard.

...