首页 > 解决方案 > 如何在 proguard 中保留包级 kotlin 函数?

问题描述

我在我的库中声明了一个包级函数作为实用程序,我想在我的主应用程序中使用它。

我的问题是我无法使用 proguard 防止代码混淆(因此在我的主应用程序中使用它)。

我的文件 it.blabla.util.Extensions.kt

fun foo(context: Context, action: String) { ... } 我已经尝试使用以下方法将其保留在 proguard 中:

-keep class it.blablabla.util.UtilPackage.** { *; }

或者

-keep class it.blablabla.util.** { *; }

但这些都不起作用。

在我的应用程序中,我尝试按如下方式使用 foo:

foo(applicationContext, "test")

但我无法找到正确的导入来让 foo 通过 aar 模块在我的应用程序中变得可见。我不断收到以下编译错误:

未解决的参考: foo

标签: androidkotlinproguardandroid-proguard

解决方案


您很可能必须保留类以及保留元数据(proguard doc):

-keep class it.blablabla.util.ExtensionsKt {
  *;
}
-keepkotlinmetadata

推荐阅读