当前位置: 首页 > 知识库问答 >
问题:

Proguard不在ZipEntry中保留包层次结构

水铭晨
2023-03-14

我使用ProGuard混淆了我的代码。在代码中,我希望用下面的代码从指定的包中读取所有类。

    URL directoryURL = Thread.currentThread().getContextClassLoader()
            .getResource("com/test/ui/controller");

com/test/ui/controller/b.class

com/test/ui/controller/d.类

当我用一个未混淆的jar运行相同的代码时,下面是输出。包级别保存在jar中。你知道我如何告诉Proguard通过保持包级别来创建jar吗?

com/test/ui/controller/d.类

共有1个答案

夔修伟
2023-03-14

指定不要混淆给定的包名称。可选筛选器是一个以逗号分隔的包名称列表。包名可以包含?、*和**通配符,它们可以在前面加上!否定器。只适用于混淆时。

(来源:http://proguard.sourceforge.net/manual/usage.html#obfuscationoptions)

 类似资料:
  • 想要更改包名,但需要保持类名不变。知道吗?

  • 问题内容: 我们有一个表,该表表示与实体(称为项目)关联的值树,其中ParentID列引用行的父级的id列。id列是一个自动递增的IDENTITY列和主键。根节点的ParentID为0。 我们希望能够克隆给定项目的数据,并使生成的ParentID引用复制值的相应新ID,其方式应满足示例中所述的限制。 例如,在下表中复制ProjectID 611的数据: 应导致: 限制: 解决方案必须适用于 SQL

  • 问题内容: 我刚刚用ViewController类创建了一个单视图应用程序项目。我想显示一个位于我自己的类中的函数的UIAlertController。 这是我的课程,带有警告。 这是执行警报的ViewController。 这是我得到的,而不是优美的警报。 警告:尝试在Sprint1.AlertController:0x797cc500上显示其视图不在窗口层次结构中的UIAlertControl

  • 问题内容: 您好,我正在编写一个Android应用程序,并且已经设置了Proguard来混淆我的应用程序。但是,我使用类加载器为应用程序动态加载了不同的扩展。问题在于,如果更改了它们的名称,它们将无法正确加载。如何防止Proguard混淆特定的类名? 问题答案: 使用proguard.cfg中的选项 请参阅手册 https://www.guardsquare.com/en/proguard/man

  • 问题内容: 我正在开发一个以java jar形式分发的库,并且在proguard上运行proguard的方式是仅保留所需的接口。我有一堆成员变量和一些枚举定义的配置类。我的proguard脚本可以很好地保留成员变量,但是混淆了枚举定义。我已经尝试过一切想使Proguard保留这些内部定义的公共枚举的方法,但是我无法使其正常工作。 现在我正在使用: 如果我尝试: 我收到一个模棱两可的错误:“注意:配

  • 问题内容: 我正在使用proguard混淆我的android应用程序。android应用程序包含一些本机代码,这些代码使回调到完全限定的java方法。我不必混淆这些类及其方法的名称。下面正确地保留了类名,但没有保留方法名。 问题答案: 对于本机方法:ProGuard手册>示例>处理本机方法 在这种情况下,对于回调方法:ProGuard手册>示例>处理回调方法 或者,例如,如果所有公共方法都可能是回