今天導出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
——————————————————————————————
後來,看了這位哥們的方法。順利解決了
http://blog.sina.com.cn/s/blog_6e334dc70101gtp7.html
總結:
1、問題一是proguard版本太低而導致的。
2、問題二是proguard配置不對而導致的。