Я пытаюсь добавить Kotlin в свой проект, и мне нужно использовать proguard. Какие правила следует добавить в proguard для поддержки Kotlin?
Спасибо
Я пытаюсь добавить Kotlin в свой проект, и мне нужно использовать proguard. Какие правила следует добавить в proguard для поддержки Kotlin?
Спасибо
Вам не нужно ничего особенного делать. Котлин работает с ProGuard из коробки. Но вы можете столкнуться с некоторыми странными ошибками при обработке своего приложения с помощью ProGuard. В этом случае просто добавьте
-dontwarn kotlin.**
Также, если вы хотите избавиться от нулевых проверок во время выполнения, вы можете использовать следующее правило:
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}
В Kotlin 1.0.2 EAP proguard выделяется при сопоставлениях для перечислений, поэтому я должен держать их явно, поэтому
-keepclassmembers class **$WhenMappings {
<fields>;
}
достаточно для правильной обфускации. Хотя, если вы хотите улучшить производительность, вы также можете добавить
-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);
}
build gradle:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
Проверьте свой гардл, включили ли вы
реализация "org.jetbrains.kotlin: kotlin-stdlib-jre7: $kotlin_version"