Android 混淆程式碼的時候出現問題
今天匯出APK之前,對程式碼進行混淆處理,結果出現了以下問題。
——————————————————————————————
Proguard returned with error code 1. See console
java.io.IOException: Can't read [C:\Users\Administrator\AppData\Local\Temp\android_3725412939001170992.jar] (Can't process class [bassy/btled/adapter/MyListAdapter$ViewHolder.class] (Unsupported version number [51.0] for class format))
at proguard.InputReader.readInput(InputReader.java:230)
at proguard.InputReader.readInput(InputReader.java:200)
at proguard.InputReader.readInput(InputReader.java:178)
at proguard.InputReader.execute(InputReader.java:78)
at proguard.ProGuard.readInput(ProGuard.java:195)
at proguard.ProGuard.execute(ProGuard.java:78)
at proguard.ProGuard.main(ProGuard.java:499)
——————————————————————————————
百度了一下【Unsupported version number [51.0] for class format】,說是JDK的問題。
看了一下專案屬性,發現我的專案是用JDK1.7進行編譯的,
我手動設為JDK1.6,再進行編譯,結果又出現了其它類似錯誤。
——————————————————————————————
Proguard returned with error code 1. See console
java.io.IOException: Can't read [E:\My_Java_Project\Project_BTLED\libs\android-support-v4.jar] (Can't process class [android/support/v4/provider/DocumentsContractApi19.class] (Unsupported version number [51.0] for class format))
at proguard.InputReader.readInput(InputReader.java:230)
at proguard.InputReader.readInput(InputReader.java:200)
at proguard.InputReader.readInput(InputReader.java:178)
at proguard.InputReader.execute(InputReader.java:78)
at proguard.ProGuard.readInput(ProGuard.java:195)
at proguard.ProGuard.execute(ProGuard.java:78)
at proguard.ProGuard.main(ProGuard.java:499)
——————————————————————————————
在cmd下執行“proguard”,發現progurad的版本居然是4.5.1
估計是這貨的版本太低了。
隨後,升級了Android SDK下的proguard為4.11,
再次在cmd下執行“proguard",居然還是4.5.1
不對勁啊!!換了proguard4.8,居然還是4.5.1,不管是執行proguard.bat還是proguardgui.bat都顯示是4.5.1
看了一個系統路徑 , 發現有一個PROGUARD_HOME的變數指向了D:\proguard_4.5.1。
我果斷把D:\proguard_4.5.1刪除了,
並把變數的值換成E:\Mobile_Develop\Android_SDK\tools\proguard
重新試了一遍,版本問題解決了,是最新的4.11了。
但是編譯的時候,還是會出現問題
——————————————————————————————
Error: Unable to access jarfile ..\lib\proguard.jar
——————————————————————————————
後來,看了這位哥們的方法。順利解決了
總結:
1、問題一是proguard版本太低而導致的。
2、問題二是proguard配置不對而導致的。