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.**