Kotlin 反映 proguard SmallSortedMap

Posted

技术标签:

【中文标题】Kotlin 反映 proguard SmallSortedMap【英文标题】:Kotlin reflect proguard SmallSortedMap 【发布时间】:2018-02-02 22:44:15 【问题描述】:
Warning: kotlin.reflect.jvm.internal.KClassImpl: can't find referenced class kotlin.reflect.jvm.internal.KClassImpl$kotlin.reflect.jvm.internal.KClassImpl$Data
Warning: kotlin.reflect.jvm.internal.KClassImpl: can't find referenced class kotlin.reflect.jvm.internal.KClassImpl$kotlin.reflect.jvm.internal.KClassImpl$Data
Warning: kotlin.reflect.jvm.internal.KClassImpl$data$1: can't find referenced class kotlin.reflect.jvm.internal.KClassImpl$kotlin.reflect.jvm.internal.KClassImpl$Data
Warning: kotlin.reflect.jvm.internal.KClassImpl$data$1: can't find referenced class kotlin.reflect.jvm.internal.KClassImpl$kotlin.reflect.jvm.internal.KClassImpl$Data
Warning: kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap: can't find referenced class kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$Entry
Warning: kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap: can't find referenced class kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$EntrySet
Warning: kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$Entry: can't find referenced class kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$Entry
Warning: kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$Entry: can't find referenced class kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$kotlin.reflect.jvm.internal.impl.protobuf.SmallSortedMap$Entry

我收到了这些警告,它们破坏了我在任务 transformClassesAndResourcesWithProguardForAppRelease 上的发布版本。

我知道我可以忽略警告或使用 -dontwarn 通知 proguard 不要发出警告,但我想知道是否有其他人遇到过这个问题并实际上找到了正确的解决方法。

我使用的是 Kotlin 版本1.1.4-2

【问题讨论】:

我没有找到另一个修复程序,然后将 -dontwarn 添加到我的 proguard 文件中。你找到解决办法了吗? 不 :( 我真的希望它得到修复 【参考方案1】:

引用问题 KT-7652 中的 Alexander Udalov:

无论如何,当kotlin.* 被混淆时,反射失败是预料之中的。我们可以做的是为 proguard 制定一套有用的规则,以最小化反射库的二进制大小。

所以目前没有正确的解决办法。

【讨论】:

以上是关于Kotlin 反映 proguard SmallSortedMap的主要内容,如果未能解决你的问题,请参考以下文章

带有 Proguard 的 Kotlin 反射失败

启用 Proguard 时未找到 kotlin.Any

kotlin android proguard错误

Kotlin、Proguard 和 lambdas

启用 proguard 后无法访问 kotlin 类中使用的伴随对象

如何使用 Kotlin 为 Android 版本构建配置 ProGuard