如何将 Kotlin 与 Proguard 一起使用

问题描述 投票:0回答:6

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

谢谢你

android proguard kotlin
6个回答
43
投票

您不需要做任何特别的事情。 Kotlin 与 ProGuard 开箱即用。但在使用 ProGuard 处理应用程序时,您可能会遇到一些奇怪的错误。在这种情况下只需添加

-dontwarn kotlin.**

此外,如果您想在运行时摆脱空检查,您可以使用以下规则:

-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
    static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}

20
投票
-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'

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


11
投票

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

0
投票

如果你使用android studio,proguards是默认自带的。但是您应该启用 “启用代码收缩”和 “启用资源收缩”选项,以确保代码安全和代码优化。

打开你的 gradile 文件并检查以下内容。

android {
    buildTypes {
        release {
            // Enables code shrinking, obfuscation, and optimization for only
            // your project's release build type.
            minifyEnabled true

            // Enables resource shrinking, which is performed by the
            // Android Gradle plugin.
            shrinkResources true

            // Includes the default ProGuard rules files that are packaged with
            // the Android Gradle plugin. To learn more, go to the section about
            // R8 configuration files.
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

来源:https://developer.android.com/studio/build/shrink-code


0
投票

您应该在 compose.desktop ->application->

下添加配置
compose.desktop {
       application {
            buildTypes.release.proguard {
                obfuscate.set(true)
                configurationFiles.from(project.file("proguard-rules.pro"))
              }
          }
    }

-3
投票

检查您的

build.gradle
。您是否包括:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
© www.soinside.com 2019 - 2024. All rights reserved.