如何告诉 Proguard 混淆类名

2023-11-27

我希望混淆类名。我在 Proguard.cfg 中有这一行

-keepclasseswithmembers class * {
public static <fields>;
}

-keepnames class * implements java.io.Serializable
-keep public class com.google.**

我注意到没有混淆的是类名。所以运行 jdgui 我明白了 com/test/abcd/实际类.java 公共类实际类名扩展活动等

此外,我看到方法返回真实的类名。喜欢

 ActualClassname aa();

并导入如下语句

 import com.abcd.ActualClassName

如何让 Proguard 混淆类名本身。我看到我的适配器并没有被混淆,这不仅仅是针对活动。嗯,确实存在混淆,但类名却没有。

上述规则是否可以防止类名被混淆?

更新:我已经删除了上述规则,并且不从 Android 扩展任何内容的实用程序类不会被混淆。我现在想知道是否有一些隐式规则关于保留从像 Activity 派生类一样保留的类引用的类的类名?名称未被混淆的类有一些共同点:

1)静态方法 2) 导入其他类型,这些类型保留为源自活动或可序列化的类型。 3)它们具有带有其他类参数的方法(其中一些可能需要保留)。

然而,我没有特别要求保留这些实用程序类。


There are several class that appear in your code that must retain the same fully qualified class name in order for to be able to find them. One example as above are all Activity classes, as they are defined in the manifest by their full name as a String. If proguard were to rename the class then Android would no longer be able to find them.

典型的 Proguard 配置将引用 Android SDK 中的 Proguard 配置,其中包括几行重要的行,如下所示:

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

如何告诉 Proguard 混淆类名 的相关文章

随机推荐

  • 使用 JavaScript eval 解析 JSON

    问题 我正在使用 eval 解析来自我的 WebMethod 之一的 JSON 返回值 我不想添加jquery json 因为传输量已经相当大了 所以我用eval解析JSON返回值 现在有传言说这是不安全的 为什么 没有人可以修改 JSOn
  • ld:找不到 -lrt 的库

    我正在尝试运行一个为 Ubuntu 创建且适用于 Mac OS 的项目 当我执行 make 时 出现以下错误 ld library not found for lrt clang error linker command failed wi
  • 我可以在项目/解决方案级别设置 Option Explicit 和 Option Strict 吗?

    我真的很喜欢 VB NET 提供的编码速度 但我不喜欢忘记声明变量类型 函数返回类型等的可能性 这就是我在每个类中使用的原因 Option Explicit On Option Strict On 有没有办法在项目 解决方案级别定义这两个选
  • gridview 将 dropdownlist 绑定到 List>

    我的数据库中有许多表保存对键值对的引用 电话号码类型 1 Home 2 Work 3 移动 4 Fax etc 所以我有一个类型表 当它们在其他表中使用时 它们引用 int 值作为外键 当我把它们拉出来时 我一直将它们存储为keyvalue
  • 如何有效地对数据库中的继承进行建模?

    在数据库中建模继承的最佳实践是什么 有什么权衡 例如可查询性 我对 SQL Server 和 NET 最感兴趣 但我也想了解其他平台如何解决这个问题 有多种方法可以对数据库中的继承进行建模 您选择哪个取决于您的需求 以下是一些选项 每类型表
  • 为什么在具有多个接口的对象中实现 QueryInterface() 时需要显式向上转换()

    假设我有一个实现两个或多个 COM 接口的类 class CMyClass public IInterface1 public IInterface2 我看到的几乎每个文档都表明 当我为 IUnknown 实现 QueryInterface
  • 从html文本中关闭库dom节点

    我有一个 html 文本 例如 div class a span 1 span div 2 div div 闭包库中是否有函数可以获取这样的字符串作为输入并返回 DOM 树以插入到文档中 Closure库提供的功能goog dom safe
  • 将 HtmlDocument.DomDocument 转换为字符串

    如何将 HtmlDocument DomDocument 转换为字符串 这个例子有点复杂 但是 假设你有一个名为Form1 带有一个名为的 WebBrowser 控件webBrowser1 变量content将包含形成文档的标记 priva
  • 如何使用单个replaceAll找到Java中两个字符串共有的字符?

    所以假设我有 String s 1479K String t 459LP 我想回来 String commonChars 49 两个字符串之间的公共字符 显然 可以使用如下标准循环来完成 String commonChars for i 0
  • 如何在 Android 中以编程方式添加联系人?

    我已经尝试过 但未添加联系人 ContentResolver cr this getContentResolver ContentValues cv new ContentValues cv put ContactsContract Com
  • Git合并忽略空格[重复]

    这个问题在这里已经有答案了 可能的重复 git 空格问题 我怎样才能设置不报告纯粹由于合并时的空格而导致的冲突 如下所示 lt lt lt lt lt lt lt HEAD open RESDBFILE lt this day result
  • SCTP 和 webrtc

    我看到 SCTP 将用于从 Chrome 31 开始的数据通道 并且根据这个 google group thread 基于 RTP 的正式通道有时将在 2014 年 2 月被弃用 https groups google com forum
  • 如何使用 etrace 和动态库来按时间顺序跟踪 C++ 中的函数调用?

    背景 我有一个大型模拟工具 我需要了解它的逻辑行为 为了做到这一点 如果我有函数调用的时间顺序 我会得到最多的帮助 作为一个最小的工作示例 我在网上找到了很多工具 比如Cyg分析器 and etrace 我在寻找解决方案时变得非常痛苦 以至
  • 如何修改传递给自定义 CMake 目标的环境变量?

    也许我错过了一些明显的东西 但我似乎无法弄清楚如何显式设置通过启动的进程可以看到的环境变量add custom target 我尝试了以下方法 set ENV PATH C Some Path ENV PATH add custom tar
  • 如何在 SQL Server 的 log4net 配置中使用存储过程进行日志记录

    我该如何更新commandText以及存储过程的参数部分 以便我可以通过 log4net 将错误记录到 SQL Server 中 我使用的是 SQL Server 2008 我的附加程序配置如下所示
  • Flask SQLAlchemy 设置动态 URI

    我有一个在 WSGI 下提供的 Flask 应用程序 其中数据库 URI 随着时间的推移而变化 每两个小时 URI 就会切换到另一个数据库 我利用这段时间填充一个数据库 而另一个数据库则为应用程序提供数据 我很难弄清楚如何最好地配置会话 以
  • 如何对文件执行 SHA1 哈希?

    如果我有一个文件想要监视任何更改 除了查看文件日期戳等 我如何对其内容执行 SHA1 哈希 I think这就是 GIT 所做的 所以我只想学习如何做 using FileStream stream File OpenRead C File
  • z-index 和 Javascript 事件

    我有几个彼此重叠的 div 具有不同的 z index 值 浏览器的默认行为似乎是触发绑定到最顶部 z index div 的事件 IE 我有多个onclick每个 div 都有一个 但当单击该区域时只有顶部的一个被触发 有没有一种方法可以
  • MVVM - RaisePropertyChanged 将代码变得一团糟

    MVVM 新手 请原谅我的无知 我认为我使用它是正确的 但我发现我的 ViewModel 有太多这些 RaisePropertyChanged SomeProperty 每次我设置一个属性时 我都必须提高那个该死的属性的变化 我怀念那些我可
  • 如何告诉 Proguard 混淆类名

    我希望混淆类名 我在 Proguard cfg 中有这一行 keepclasseswithmembers class public static