J'essaie d'ajouter Kotlin à mon projet et je dois utiliser proguard. Quelles règles dois-je ajouter à proguard pour prendre en charge Kotlin?
Merci
Vous n'avez rien à faire de spécial. Kotlin fonctionne avec ProGuard prêt à l'emploi. Mais vous pouvez rencontrer des erreurs étranges lors du traitement de votre demande avec ProGuard. Dans ce cas, ajoutez simplement
-dontwarn kotlin.**
De plus, si vous souhaitez vous débarrasser des contrôles nuls lors de l'exécution, vous pouvez utiliser la règle suivante:
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
static void checkParameterIsNotNull(Java.lang.Object, Java.lang.String);
}
-keep class kotlin.** { *; }
-keep class kotlin.Metadata { *; }
-dontwarn kotlin.**
-keepclassmembers class **$WhenMappings {
<fields>;
}
-keepclassmembers class kotlin.Metadata {
public <methods>;
}
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
static void checkParameterIsNotNull(Java.lang.Object, Java.lang.String);
}
construire gradle:
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
Dans Kotlin 1.0.2 EAP proguard supprime les mappages pour les énumérations, donc je dois les garder explicitement, donc
-keepclassmembers class **$WhenMappings {
<fields>;
}
est suffisant pour une obfuscation correcte. Bien que si vous souhaitez des améliorations de performances, vous pouvez également ajouter
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
static void checkParameterIsNotNull(Java.lang.Object, Java.lang.String);
}