Пожалуйста, объясните мне, каковы цель и значение таких классов, как StringsKt__StringsKt (т. Е. Двойное имя класса с одним или несколькими символами подчеркивания между ними) и, аналогично, StringsKt__StringsJVMKt?
Пример - не только струны, но и множество других. Я вижу их, когда смотрю в структуру файла classes.dex в моем .apk.
Я спрашиваю, потому что столкнулся с ситуацией, когда мне пришлось явно указать некоторые из них в моих правилах proguard. Без него приложение вылетало.
Это сгенерированный файл. Такой файл будет сгенерирован, если есть несколько файлов Kotlin с одинаковым именем JvmName.
Возьмем для примера Strings.kt и StringNumberConversions.kt:
// StringNumberConversions.kt
@file:kotlin.jvm.JvmMultifileClass
@file:kotlin.jvm.JvmName("StringsKt")
...
// Strings.kt
@file:kotlin.jvm.JvmMultifileClass
@file:kotlin.jvm.JvmName("StringsKt")
...
Оба они имеют @file:kotlin.jvm.JvmName("StringsKt"), поэтому для их различения генерируются StringsKt и StringsKt__StringNumberConversionsKt.
Спасибо! Я подозревал что-то подобное. Странно, но мне приходится писать -keep class kotlin.collections.MapsKt* { *; } (со звездочкой в конце) в правилах proguard, чтобы моя программа работала.
Скорее всего, они сгенерированы, я не могу найти ссылку на один класс с таким именем.