如何使用Kotlin与Proguard

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

谢谢

4 Solutions collect form web for “如何使用Kotlin与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 { ; } 

对于正确的混淆是足够的。 虽然如果你想要一些性能改进,你也可以添加

 -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' 

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

检查你的gardle你包括

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

  • 如何使用自定义setter检查参数的有效性?
  • 如何使用Gradle和Kotlin创建单独的测试?
  • 通过kotlin android应用程序连接MySql
  • Android与Kotlin - 如何使用HttpUrlConnection
  • 使用Kotlin在Android中添加数字
  • 内部类inheritanceKotlin
  • Kotlin中的有什么不同?
  • 我怎样才能抑制未经检查的强制性警告?
  • 如何使用ByteArray.getOrElse
  • Kotlin将对象转换为另一个对象
  • 我怎样才能重写一个java方法,并改变参数的可空性?
  • Kotlin language will be the best programming language for Android.