プロを保護する誰かからの助けを探しています。
Kotlin-reflect(jackson-module-kotlin v v2.8.8に必要な依存関係)で使用されるアノテーションは、kotlin1.1.2-3にアップグレードした後に削除されます。 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
のソースを見ると、@interface
がJava.lang.annotations.*
、@Documented
、@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-compilerに存在するため、proguardはそれらを見つけることができません。依存関係としてkotlin-compilerを追加する代わりに、警告を無視してください(この問題が示唆しているように、 Kotlin 1.1.0コンパイルでシンボル@ReadOnlyと@Mutableを解決できません )。
これはkotlin-reflectのバグである可能性があります。これをアプリの統合から隠すためのプロガードルールを提供する必要があります。
またはより短いバージョン:
-dontwarn kotlin.reflect.jvm.internal.**