如何使用Kotlin与Proguard

我正在尝试将Kotlin添加到我的项目中,并且需要使用proguard。 我应该将哪些规则添加到proguard来支持Kotlin?

谢谢

你不需要做任何特别的事情。 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); } 

检查你的gardle你包括

实施“org.jetbrains.kotlin:kotlin-stdlib-jre7:$ kotlin_version”

 -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); } 

建立gradle:

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' 

https://kotlinlang.org/docs/tutorials/kotlin-android.html