Прогард и Котлин-Отражение / Котлин Аннотации

Ищите какую-то помощь от кого-то, кто ставит профессионала в proguard.

Аннотации, используемые 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. Мы попытались добавить хороший олово, но ошибка все еще существует:

 -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-компиляторе, поэтому proguard их не может найти. Просто игнорируйте предупреждение вместо добавления kotlin-компилятора в качестве зависимости (поскольку эта проблема предполагает Невозможно разрешить символ @ReadOnly и @Mutable в компиляции Kotlin 1.1.0 ).

Это может быть ошибкой в ​​котлин-отражении; они должны предусматривать правила proguard, чтобы скрыть это от интеграции приложений.

Или более короткая версия:

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