2017-05-24 20 views
10

Szukasz pomocy od kogoś, kto stawia profesjonalistę w proguardzie.Adnotacje Proguard i Kotlin-Reflect/Kotlin

Adnotacje używane przez kotlin-reflect (wymagana zależność dla jackson-module-kotlin v v.8.8.8) są usuwane po aktualizacji do wersji kotlin 1.1.2-3. Błąd od proguard: Warning:kotlin.reflect.jvm.internal.impl.descriptors.CallableDescriptor: can't find referenced class org.jetbrains.annotations.ReadOnly

Dzieje się to w przypadku kilku adnotacji, a nie tylko ReadOnly. Próbowaliśmy dodanie good ol”złapać wszystko ale błąd nadal istnieje:

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

Patrząc na źródło dla ReadOnly jest to @interface z java.lang.annotations.* sprowadzany na @Documented, @RetentionPolicy.CLASS, @Target

+0

Dodawanie pamiętać, że mamy próbował dodanie keepclassmembers i mamy keepAttributes '-keepattributes * Adnotacja *' '-keepclassmembers klasa ** { @ org.jetbrains.annotations.ReadOnly public *; } ' – Bryan

+0

Jeśli to się zaczęło dziać po aktualizacji Kotlin, proponuję złożyć bilet [w systemie śledzenia błędów] (https://youtrack.jetbrains.com/issues/kotlin). – m0skit0

Odpowiedz

6

poprawkę dla nas było dodanie dontwarn do odzwierciedlenia ostrzeżeń.

-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 

Te adnotacje istnieją w kompilatorze kotlin, dlatego program nie może ich znaleźć. Po prostu zignoruj ​​ostrzeżenie zamiast dodawać kompilator kotlin jako zależność (ponieważ ten problem sugeruje Cannot resolve symbol @ReadOnly and @Mutable in Kotlin 1.1.0 compilation).

Może to być błąd w kotlin-reflect; powinny zapewniać reguły proguardowe, aby ukryć to przed integracją aplikacji.

7

Albo krótsza wersja:

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