温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - Proguard: avoiding naming collisions with pre-obfuscated library JARs
java obfuscation proguard

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

发布于 2020-05-22 13:50:28

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

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

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

查看更多

提问者
Dan Dyer
被浏览
11
sbridges 2011-04-26 09:07

从progaurd 手册中

如果输入jar和库jar在同一包中包含类,则混淆的输出jar可能包含与库jar中的类名重叠的类名。如果以前对库jar进行过混淆,则很可能会发生这种情况,因为它可能包含名为'a','b'等的类。因此,切勿将包拆分成多个输入jar和库jar。

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