我以前曾經在Proguard指定的項目中使用過每個項目,最終都放棄了這個項目,因爲它導致了許多問題,導致它無法使用,並導致資源耗盡。但是我目前的項目確實需要混淆才能使逆向工程變得更加困難。由於我使用的Android Studio和搖籃我啓用了它在構建配置:如何獲得一個簡單的Android(Studio)Proguard配置工作
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
我再建一個發佈版本,看看292頁的警告和建設的失敗。大多數情況如下,並涉及到庫(改造,約達時間,Butterknife等)
Warning:butterknife.internal.ButterKnifeProcessor: can't find referenced class javax.lang.model.element.TypeElement
OK,所以我認爲它是優化掉庫中的部分。所以,我想加入這樣的線給proguard-rules.pro文件(在搖籃文件,並自動創建由Android工作室指定):
-keep class butterknife.internal.** { *; }
沒有區別。好的,所以我會嘗試禁用所有縮小和優化,希望只能從混淆中受益(即使公認會減少混淆的好處)。我添加了這些行Proguard的配置文件:
-dontshrink
-dontoptimize
我重新編譯,絕對沒有什麼變化,我還是留下了292個相當無意義的編譯警告。現在我真的很困惑。
- 我該如何讓100%確定Proguard實際上是在閱讀我的Proguard配置文件?還是使用它,但我設置了一個不正確的選項?
- 什麼可以添加到Proguard文件,以減少其工作只是混淆,所以我有一個Proguard啓用構建配置,作爲一個起點(沒有打破我的應用程序),並沒有優化掉任何代碼。
我希望有任何幫助可以幫助減少我對Proguard的仇恨。
你的回答可以幫助在加上幾行影響了身材,所以我知道正在使用ProGuard的配置文件。但我不想逐個修復每個庫,我想禁用所有優化,刪除代碼,所以Proguard只會混淆代碼。我嘗試過使用你提到的方法(特別是 - 以前沒有使用過的方法),所以添加「-dontwarn okio。**」這樣的行可以讓我解決構建警告並創建一個很棒的APK,但是APK以各種各樣的方式崩潰,它並非沒有Proguard。我需要停止Proguard刪除代碼。 – 2014-12-04 10:23:31
看看Proguard手冊,看起來像我需要的是保持一切的能力。我想從不刪除任何代碼的位置開始,只是優化混淆,但我不知道如何保留所有代碼,似乎需要我單獨地將每個類錯誤地刪除,但這不是直截了當的。 – 2014-12-04 11:23:55