2011-04-25 66 views
4

似乎Proguard在重命名/重新包裝類時不會嘗試避免命名與庫JAR中的類發生衝突。這是正確的,還是我沒有正確配置它?Proguard:避免命名與預混淆庫JAR的衝突

我模糊了一個使用最新Google AdMob SDK的Android應用程序。以前,我使用舊的AdMob SDK時沒有問題。新的SDK JAR文件包含一些被混淆的類。其中一個類是a.class,默認爲/ unnamed包。當我混淆我的應用程序時,Proguard儘管已將AdMob JAR作爲庫JAR讀入(因此它應該知道這會導致碰撞),但在未命名的程序包中,我的一個類還重命名爲/ a.class。可以預料的是,當dx工具嘗試將這兩個命名相同的類組合在一個.dex文件中時,我的構建失敗。

作爲一種解決方法,我重新配置了Proguard,以便它將所有類移動到命名包(只是一個字母)以避免與Google類發生衝突,但我很想知道是否有更好的解決方案或者如果這是Proguard當前版本(4.6)的限制?

+0

不確定Android標記是否必要。我在Android項目上遇到了這個問題,但它不是針對Android的。 – 2011-04-26 11:15:56

回答

4

從progaurd manual

如果輸入罐和一個圖書館罐包含在同一包中的類,所述模糊輸出罐可以包含與庫罐子類名重疊的類名稱。如果庫jar之前被混淆了,這很可能是因爲它可能包含名爲'a','b'等的類。因此,包不應該跨輸入罐和庫罐拆分。

所以它看起來像使用自己的包是推薦的答案。

+0

謝謝,我錯過了那本手冊。 – 2011-04-26 11:06:47