请向我解释一下StringsKt__StringsKt
这样的类(例如,类名加倍,中间有一个或多个下划线)和StringsKt__StringsJVMKt
这样的类的目的和意义是什么?
字符串不是唯一的例子,还有很多其他例子。在我的.apk文件中查看classes.dex
文件的结构时,我会看到它们。
我之所以问是因为我面临着这样一种情况,我必须在我的保护规则中明确说明其中的一些内容。没有它,应用程序崩溃了。
答案 0 :(得分:1)
这是一个生成的文件。如果有多个以相同的JvmName
命名的Kotlin文件,将生成这样的文件。
我们以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
来区分它们。