我正在尝试将Kotlin添加到我的项目中,我需要使用proguard。我应该向proguard添加哪些规则来支持Kotlin?
谢谢
答案 0 :(得分:35)
你不需要做任何特别的事情。 Kotlin开箱即用ProGuard。但是在使用ProGuard处理应用程序时,您可能会遇到一些奇怪的错误。在这种情况下,只需添加
-dontwarn kotlin.**
此外,如果您想在运行时删除空检查,您可以使用以下规则:
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}
答案 1 :(得分:14)
-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'
答案 2 :(得分:10)
在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);
}
答案 3 :(得分:0)
如果您使用的是android studio,默认情况下会附带proguards。但是您应该在 “启用代码缩减 ”和 “启用资源缩减” 选项上进行代码安全性和代码优化。
打开您的gradile文件并在下面检查。
@SuppressWarnings("JpaAttributeTypeInspection")
答案 4 :(得分:-1)
签入build.gradle
。你有没有包括:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"