如何使用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 { ; }
对于正确的混淆是足够的。 虽然如果你想要一些性能改进,你也可以添加
-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 { ; } -keepclassmembers class kotlin.Metadata { public ; } -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'
检查你的gardle你包括
实施“org.jetbrains.kotlin:kotlin-stdlib-jre7:$ kotlin_version”