带 proguard 的 Kotlin AAR 库:如何仅保留类和方法名称?

2023-12-30

我正在使用 Kotlin 构建一个 android 库(aar 文件)。我需要以第三方用户将看到类和方法名称的方式混淆代码,他必须能够使用它们(它们是公开的),但我需要隐藏/混淆代码本身。 我尝试将此文件用于 myLibrary\proguard-rules.pro 文件:https://github.com/mohitrajput987/android-utility/blob/master/preference/proguard-rules.pro https://github.com/mohitrajput987/android-utility/blob/master/preference/proguard-rules.pro

但是每个类、方法和变量都发生了变化,除了一个目录中同时包含 Kotlin 和 Java 类之外,文件和目录名都保持不变。

如果这就是我正在寻找的,那么 Kotlin 必须进行哪些更改?

也许还有什么问题吗?

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

}


如果其他人遇到这个问题,在大多数情况下这应该可以解决问题(当不尝试混淆本机方法时):

-keepclasseswithmembernames class * {
     public <methods>; 
}

更多关于不同keep可以在这里找到选项:Proguard 保留规则 https://www.guardsquare.com/en/products/proguard/manual/usage

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带 proguard 的 Kotlin AAR 库:如何仅保留类和方法名称? 的相关文章

随机推荐

  • 在命令行程序中使用 emacs 或 vim 的语法荧光笔?

    我有一个可以输出 JSON 和 YAML 的命令行程序 默认情况下 它会检测 pygments pygmentize 是否可用 如果可用 则将输出传递给它以获得漂亮的彩色输出 但是 默认情况下 大多数运行该程序的计算机上并未安装 pygme
  • 如何查找 Webpack 条目的块

    我正在使用 webpack 对遗留的多页 ASP NET Web 表单应用程序进行现代化改造 在我尝试使用之前 我已经取得了相当大的成功SplitChunks插件 https webpack js org plugins split chu
  • React.js app.js 文件大小

    我创建了非常简单的 React 应用程序 包含 7 个页面和 13 个组件 我使用 gulp 来编译它 使用 browserify 来获取依赖项 所有文件都被最小化 我建造的app js文件有1 1 MB 我认为它相当大 我可以做什么来减小
  • Odoo.sh 升级到 v15:如何迁移过时但继承的视图?

    我目前正在按照 odoo sh 中的升级流程迁移到 Odoo v15 由于某些模板在 v15 中已被删除或重命名 因此我收到了 100 个类似以下内容的错误 ValueError External ID not found in the s
  • nlme 错误

    For IGF数据来自nlme库 我收到此错误消息 lme conc 1 data IGF random age Lot Error in lme formula conc 1 data IGF random age Lot nlminb
  • jQuery Mobile:获取上一页的 ID

    我基本上需要一个自定义函数 仅在例如从主页单击 reviews 页面时使用 这是我当前使用的代码 document bind mobileinit function reviews live pagebeforeshow function
  • phpmyadmin 导出不带 DATABASE_NAME 或算法的视图

    当使用 phpmyadmin 导出 sql 转储时 它会创建如下所示的 VIEW 表 CREATE ALGORITHM UNDEFINED DEFINER root localhost SQL SECURITY DEFINER VIEW d
  • 使用 git,如何将一些未提交的更改从一个分支移动到不同文件夹中的另一个分支?

    我每天使用的同一个软件有两个不同的分支 然而 每次我检查另一个分支时 我的构建过程可能需要长达一个小时 为了解决这个问题 我刚刚在两个单独的文件夹中为每个分支检查了一次项目 我在一个分支中做了一些工作 并在提交之前意识到我位于错误的文件夹中
  • CodeIgniter 中分页的自动加载配置不起作用

    我正在尝试在我的 CI web 应用程序中实现分页 现在我将分页配置放入这样的配置文件中
  • 使用 VB.NET 执行存储过程

    这是我的程序 ALTER PROCEDURE sp addUser UserName nvarchar 50 Prenom nvarchar 50 Nom nvarchar 50 Mail nvarchar 50 Password char
  • “静态合成”是什么意思?

    我正在查看一些从 Java 字节码获得的反汇编代码 我看到一些声明如下 method static synthetic access 0 Lcom package Sample 我不明白是什么synthetic or access 0意思是
  • SQL Server 上的 Int PK 内连接与 Guid PK 内连接。执行计划

    我刚刚对 Int PK join 与 Guid PK 进行了一些测试 表结构和记录数如下所示 在这两种情况下 使用 EF4 进行 CRUD 操作的性能非常相似 众所周知 在连接中使用 Int PK 比字符串具有更好的性能 所以SQL Ser
  • 将 Service Worker 请求中的响应修改为图像

    您好 提前谢谢您 我的问题是关于使用响应网络请求服务工作者 我能够在文本或 html 的情况下处理它 但是当我尝试处理image我失败了 这是我的代码 self addEventListener fetch function event e
  • 本地主机上的 Firebase console.log?

    拿起去年春天我离开的 Firebase 项目 我不记得是怎么做的console log工作在firebase server 我有一个函数 有效 我尝试在其中编写一些调试信息 像这样 exports myfun functions https
  • 获取对象调用层次结构

    假设我有 3 个课程 class A void do A Check object call hierarchy class B void do B A a a do A class C void do C B b b do A 然后我打电
  • Facebook iOS SDK 3.2.1 - [NSError fberrorShouldNotifyUser]:无法识别的选择器发送到实例

    我刚刚将我的应用程序从 Facebook iOS SDK 3 1 升级到 3 2 1 并且我正在尝试利用 NSError 上的新 FBError 类别提供的新错误处理 代码在底部 它编译得很好 但是当发生 FB 错误时 我在运行时得到以下信
  • R从字符串中提取数字

    字符串将是 042 195 143 192 001 145 045 125 125 如何提取最后一组数字 195 192 145 125 125 Try v1 lt c 042 195 143 192 001 145 045 125 125
  • Arduino 上的 Timer1 导致串行打印无法工作

    运行下面的代码 当我从串行监视器向 Arduino 发送任何字符时 Arduino 不会打印 a 我认为timer1代码有问题 但它应该可以工作 因为这段代码是我的C课老师给我的 void setup Serial begin 115200
  • 在 Parquet 中使用嵌套数据类型有什么好处?

    在 Parquet 文件格式中使用嵌套数据类型是否会带来任何性能优势 AFAIK Parquet 文件通常是专门为查询服务创建的 例如Athena 因此创建这些值的过程也可以简单地展平这些值 从而允许更轻松的查询 更简单的模式并保留每列的列
  • 带 proguard 的 Kotlin AAR 库:如何仅保留类和方法名称?

    我正在使用 Kotlin 构建一个 android 库 aar 文件 我需要以第三方用户将看到类和方法名称的方式混淆代码 他必须能够使用它们 它们是公开的 但我需要隐藏 混淆代码本身 我尝试将此文件用于 myLibrary proguard