Proguard:避免使用预先混淆的库JAR命名冲突

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

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

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

从progaurd 手册 ,

如果输入jar和库jar包含同一包中的类,则模糊输出jar可能包含与库jar中的类名重叠的类名。 这很可能是因为库jar之前已经被混淆了,因为它可能包含名为’a’,’b’等的类。因此,包不应该被分成输入jar和库jar。

所以看起来使用自己的包是建议的答案。