寻找一些将职业选手放入项目的人的帮助。
kotlin-reflect使用的注释(jackson-module-kotlin v v2.8.8所需的依赖关系)在升级到kotlin 1.1.2-3后被剥离。 proguard的错误是:
Warning:kotlin.reflect.jvm.internal.impl.descriptors.CallableDescriptor: can't find referenced class org.jetbrains.annotations.ReadOnly
这种情况发生在一些注释中,而不仅仅是ReadOnly。我们尝试过添加一个好的ol'捕获所有但错误仍然存在:
-keep class org.jetbrains.kotlin.** { *; }
-keep class org.jetbrains.annotations.** { *; }
-keepclassmembers class ** {
@org.jetbrains.annotations.ReadOnly public *;
}
查看ReadOnly
的来源@interface
java.lang.annotations.*
导入了@Documented
,@RetentionPolicy.CLASS
,@Target
答案 0 :(得分:10)
或更短的版本:
-dontwarn kotlin.reflect.jvm.internal.**
答案 1 :(得分:7)
我们的修复是为反射警告添加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-compiler添加为依赖项(因为此问题表明Cannot resolve symbol @ReadOnly and @Mutable in Kotlin 1.1.0 compilation)。
这可能是kotlin-reflect中的一个错误;他们应该提供proguard规则来隐藏它以免集成应用程序。