Proguard和Kotlin-Reflect / Kotlin注释

寻找一些帮助pro pro的人的帮助。

在升级到kotlin 1.1.2-3之后,kotlin-reflect使用的注释(jackson-module-kotlin v v2.8.8所需的依赖项)正在被剥离。 从proguard错误是: Warning:kotlin.reflect.jvm.internal.impl.descriptors.CallableDescriptor: can't find referenced class org.jetbrains.annotations.ReadOnly

这只是一些注释,而不仅仅是ReadOnly。 我们已经尝试添加一个很好的醇'但所有错误仍然存​​在:

 -keep class org.jetbrains.kotlin.** { *; } -keep class org.jetbrains.annotations.** { *; } -keepclassmembers class ** { @org.jetbrains.annotations.ReadOnly public *; } 

查看ReadOnly的源代码,它是一个带有java.lang.annotations.* @RetentionPolicy.CLASS @Target java.lang.annotations.*@RetentionPolicy.CLASS @Target@RetentionPolicy.CLASS@RetentionPolicy.CLASS @Target

对我们来说,修正是为了反映警告而添加dontwarn

 -dontwarn kotlin.reflect.jvm.internal.impl.descriptors.CallableDescriptor -dontwarn kotlin.reflect.jvm.internal.impl.descriptors.ClassDescriptor -dontwarn kotlin.reflect.jvm.internal.impl.descriptors.ClassifierDescriptorWithTypeParameters -dontwarn kotlin.reflect.jvm.internal.impl.descriptors.annotations.AnnotationDescriptor -dontwarn kotlin.reflect.jvm.internal.impl.descriptors.impl.PropertyDescriptorImpl -dontwarn kotlin.reflect.jvm.internal.impl.load.java.JavaClassFinder -dontwarn kotlin.reflect.jvm.internal.impl.resolve.OverridingUtil -dontwarn kotlin.reflect.jvm.internal.impl.types.DescriptorSubstitutor -dontwarn kotlin.reflect.jvm.internal.impl.types.DescriptorSubstitutor -dontwarn kotlin.reflect.jvm.internal.impl.types.TypeConstructor 

这些注释存在于kotlin编译器中,这就是proguard找不到它们的原因。 只是忽略警告,而不是添加kotlin编译器作为依赖(因为这个问题建议无法解决在Kotlin 1.1.0编译@ReadOnly和@Mutable符号 )。

这可能是一个kotlin反射的错误; 他们应该提供proguard规则,以避免集成应用程序。

或者更短的版本:

-dontwarn kotlin.reflect.jvm.internal.**