android - 如何在 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
解决方案
您很可能必须保留类以及保留元数据(proguard doc):
-keep class it.blablabla.util.ExtensionsKt {
*;
}
-keepkotlinmetadata
推荐阅读
- mysql - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法
- python - 将 http 身份验证传递给 wsgi 不起作用
- node.js - 无法在嵌套的花括号内呈现 JSX
- c# - RemoteWebDriver 上是否有通用版本的 ExecuteChromeCommand 允许我使用 Selenium 截取整页截图
- firebase - Flutter Firebase Query with Double where with orderBy询问复合键
- php - WordPress the-guard主题安装错误
- c++ - 在堆上分配时为整数分配了多少位
- node.js - 如何通过“chrome devtool 协议”获取 DOM 树
- java - 具有非运算符性能问题的 Spring 数据 mongo 查询
- javascript - 异步承诺函数