带下划线的Kotlin类别

时间:2018-09-06 14:44:28

标签: android kotlin proguard

请向我解释一下StringsKt__StringsKt这样的类(例如,类名加倍,中间有一个或多个下划线)和StringsKt__StringsJVMKt这样的类的目的和意义是什么?

字符串不是唯一的例子,还有很多其他例子。在我的.apk文件中查看classes.dex文件的结构时,我会看到它们。

screenshot here

我之所以问是因为我面临着这样一种情况,我必须在我的保护规则中明确说明其中的一些内容。没有它,应用程序崩溃了。

1 个答案:

答案 0 :(得分:1)

这是一个生成的文件。如果有多个以相同的JvmName命名的Kotlin文件,将生成这样的文件。

我们以Strings.ktStringNumberConversions.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"),因此生成了StringsKtStringsKt__StringNumberConversionsKt来区分它们。