Kotlinをプロジェクトに追加しようとしていますが、proguardを使用する必要があります。 Kotlinをサポートするために、どのルールをプロガードに追加する必要がありますか?
ありがとうございました
特別なことをする必要はありません。 Kotlinは、ProGuardをそのまま使用できます。ただし、ProGuardを使用してアプリケーションを処理するときに、奇妙なエラーが発生する場合があります。この場合、追加するだけです
-dontwarn kotlin.**
また、実行時にnullチェックを削除する場合は、次のルールを使用できます。
-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);
}
ビルドグラドル:
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
Kotlin 1.0.2では、列挙型のマッピング時にEAPプロガードが削除されるため、明示的に保持する必要があるため、
-keepclassmembers class **$WhenMappings {
<fields>;
}
正しい難読化には十分です。パフォーマンスの改善が必要な場合は、追加することもできます
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
static void checkParameterIsNotNull(Java.lang.Object, Java.lang.String);
}