2012-09-06 77 views
0

我第一次使用ProGuard。我在我的項目的根包中有我的所有活動,碎片,列表碎片等等(我試圖移動它們但沒有任何區別)。我使用標準proguard-android.txt加上proguard-project.txt,我可以放任何我想要的東西,對這些類沒有什麼不同,因爲它們只是被忽略。使用ProGuard構建忽略android.app。*類

他們不是在usage.txtseeds.txtmapping.txtdump.txt上市了,他們不是在DEX(庫班看起來雖然正確對待)。

我試圖-keep public class <my.project.rootpackage>.MyActivity一個對每個忽略類,以及許多其他的事情,最後一個是:

-dontshrink 
-dontoptimize 
-dontobfuscate 

-keep public class * extends android.app.Application 
-keep public class * extends android.support.v4.app.FragmentActivity 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.support.v4.app.ListFragment 
-keep public class * extends android.preference.PreferenceActivity 

我可以使用,同時學習簡單的項目,但我不明白爲什麼它不該畢竟ProGuard似乎很好地處理了圖書館的工作。當然,該項目在調試模式下工作時效果很好。

ProGuard更新至v4.8,Eclipse 3.7.2,更新了ADT和SDK,項目目標API 15,沒有來自ProGuard的消息。

我錯過了什麼?我承認我從未清楚構建過程。我必須學習Ant嗎?

編輯:當它不工作(即ProGuard的完成有錯誤),我經常得到這樣的錯誤:

警告:my.project.package.ClassA:可以找到引用類my.project.package.ClassB

請注意,這兩個類也可以在同一個包中。

+0

你在做發佈版本還是調試版本?進行調試構建時,ProGuard不運行,僅用於發佈。 – twaddington

+0

@twaddington發佈版本,ProGuard在其他類上工作。這就是我說的那些被跳過的東西。 – bigstones

回答

0

因此,似乎忽略的類是由於「自動構建」功能阻止ProGuard執行其工作的事實。如果未選中,「導出簽名的應用程序包」過程就會順利進行,但ProGuard不會混淆/縮小。但是這提出了另一個問題。

參考文獻:Why start using -libraryjars when I never needed it before?

...編輯:其實這只是項目的bin未收縮的APK。導出的APK沒問題。什麼是奧德賽。