当前位置: 首页 > 面试题库 >

Proguard:避免与预先混淆的库JAR发生命名冲突

马高谊
2023-03-14
问题内容

当Proguard重命名/重新打包类时,似乎并没有尝试避免与库JAR中的类命名冲突。这是正确的,还是我配置不正确?

我混淆了使用最新的Google AdMob SDK的Android应用程序。以前,我使用旧的AdMob SDK没问题。新的SDK
JAR文件包含一些已被混淆的类。这些类a.class之一在默认/未命名包中。当我混淆我的应用a.class程序时,尽管将AdMob
JAR作为库JAR读取(尽管它应该引起冲突),但Proguard
仍将我的类之一重命名/重新打包为未命名的包。可以预见,当该dx工具尝试将两个同名的类合并到一个.dex文件中时,构建将失败。

作为一种解决方法,我重新配置了Proguard,以便将我所有的类都移到一个命名包中(只是一个字母),以避免与Google类冲突,但是我想知道是否有更好的解决方案,或者这是否是当前版本(4.6)的限制?


问题答案:

从progaurd
手册中,

如果输入jar和库jar在同一包中包含类,则经过混淆的输出jar可能包含与库jar中的类名称重叠的类名称。如果库jar之前已被混淆,则很可能会发生这种情况,因为它可能包含名为’a’,’b’等的类。因此,切勿将程序包拆分为输入jar和库jar。

因此,建议您使用自己的包装。



 类似资料:
  • 我已经成功地用Maven配置了Proguard来混淆jar及其依赖jar。我已经设法让两个混淆使用相同的映射文件,这样一个jar就可以调用另一个jar的方法。我面临的问题是,Proguard没有在模糊的jar中保留唯一的名称;两个模糊的jar都包含一个名为 由于有两个名为F.B.class的类(每个jar中有一个),因此优先级被赋予了调用jar中的类,这就造成了问题。 也被应用,但它显然只将此应用

  • 我尝试在android studio中使用Proguard,但Proguard似乎没有混淆类名,例如,我的应用程序结构和配置: 和配置 但当我尝试在应用程序中触发异常时: ADB控制台中列出了异常: 只有方法被混淆了,MainActivity.class没有

  • 如何避免类名和记录器混淆(DexGuard) DexGuard:避免类名和记录器混淆从Android版本构建Apk 推荐我任何一个。。。

  • 我试图在中使用来创建一个新变量,在这个变量中,我将一些值设置为missing并同时重新编码其他值。 但是,如果尝试将值设置为,则会出现一个错误,说明我们无法创建变量,因为是逻辑的: mutate_impl(.data,dots)中出错: 计算错误:类型必须是double,不是逻辑。 在数据帧的非逻辑向量中,是否有方法使用此设置值?

  • 我对混淆有问题。为了获得更好的想象力: JAVA代码 本机代码 在我想发布一个混淆版本之前,一切都很好。这个类中的Java类(例如)和方法的名称被proGuard重命名为“a”和“a()”(这可能并不总是相同的),但在本机代码中,方法和类的原始名称保持不变,因为它被硬编码为字符串,如下所示: ...有没有办法动态设置方法名?

  • 我正在努力解决JavaFX应用程序的模糊问题。以本项目为基础: Proguard配置文件:-dontoptimized-dontshrink 有人有JavaFX模糊处理的经验吗?