2017-05-24 6 views
10

Auf der Suche nach etwas Hilfe von jemandem, der den Pro in Proguard setzt.Proguard und Kotlin-Reflect/Kotlin Anmerkungen

Anmerkungen, die von Kotlin-Reflect verwendet werden (erforderliche Abhängigkeit für jackson-modul-kotlin v v2.8.8) werden nach dem Upgrade auf Kotlin 1.1.2-3 entfernt. Der Fehler von prouard ist: Warning:kotlin.reflect.jvm.internal.impl.descriptors.CallableDescriptor: can't find referenced class org.jetbrains.annotations.ReadOnly

Dies geschieht für ein paar Anmerkungen, nicht nur ReadOnly. Wir haben versucht, eine gute ol Zugabe‘alle fangen, aber der Fehler noch vorhanden:

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

an der Quelle der Suche nach ReadOnly es ein @interface mit java.lang.annotations.* für @Documented importiert ist, @RetentionPolicy.CLASS, @Target

+0

eine Notiz hinzufügen, dass wir die keepclassmembers Hinzufügen versucht haben, und wir tun keepAttributes haben '-keepattributes * Anmerkung *' ' -keepclassmembers Klasse ** { @ org.jetbrains.annotations.ReadOnly public *; } ' – Bryan

+0

Wenn dies nach dem Kotlin-Upgrade passiert, schlage ich vor, dass Sie ein Ticket [auf ihrem Bug-Tracking-System] (https://youtrack.jetbrains.com/issues/kotlin) einreichen. – m0skit0

Antwort

6

Die Fehlerbehebung für uns war hinzuzufügen dontwarn für die Reflect-Warnungen.

Diese Anmerkungen existieren im Kotlin-Compiler, weshalb Proguard sie nicht finden kann. Ignorieren Sie einfach die Warnung, anstatt den Kotlin-Compiler als Abhängigkeit hinzuzufügen (wie in diesem Problem vorgeschlagen Cannot resolve symbol @ReadOnly and @Mutable in Kotlin 1.1.0 compilation).

Dies kann ein Fehler in Kotlin-Reflect sein; Sie sollten Proguard-Regeln bereitstellen, um dies vor der Integration von Apps zu verbergen.

7

Oder eine kürzere Version:

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