2
雖然遇到了dereared dex方法極限錯誤的問題,但我一直在試圖找到問題的快速解決方案。在使用proguard後,我的apk被13k縮小了,其中大部分來自我使用的庫。以下是構建過程的(有點修改的)相關輸出。有什麼方法可以指導Proguard(在Android上)保存中間罐子嗎?
-obfuscate:
[mkdir] Created dir: /bin/proguard
[jar] Building jar: /bin/proguard/original.jar
[proguard] ProGuard, version 5.0
[proguard] Reading input...
[proguard] Reading program jar [/libs/kryo-2.24.0.jar]
[proguard] Reading program jar [/libs/jackson-databind-2.1.1.jar]
[proguard] Reading program jar [libs/okhttp-1.1.0.jar]
[proguard] Reading program jar [/libs/realm-0.72.0.jar]
[proguard] Reading program jar [/libs/tape-1.1.0.jar]
[proguard] Reading program jar [/libs/google-play-services.jar]
[proguard] Reading program jar [/libs/AudienceNetwork.jar]
[proguard] Initializing...
[proguard] Ignoring unused library classes...
[proguard] Original number of library classes: 7170
[proguard] Final number of library classes: 1712
[proguard] Printing kept classes, fields, and methods...
[proguard] Shrinking...
有沒有辦法直接Proguard的爲Android節省中間罐,(這些庫適合我的代碼的需求,恰好具有使用一組功能並沒有什麼更多的收縮版本),只是收縮後,但在它們被aapt包裝成一個大塊之前?
Eric,謝謝你的回覆。我已經在縮小GMS的過程之後。在其他庫上做同樣的事情需要了解包層次結構和手動proguard配置。從你的答案我明白,沒有辦法從收縮過程中獲得中間罐。 – Rotemmiz 2014-11-11 10:51:42
ProGuard將程序代碼和庫視爲縮小/優化/模糊處理的一大塊代碼,因此確實沒有中間罐。考慮到您的應用有大量的輸入類和相對較少的輸出類,應該可以將最大的庫縮小到可管理的大小。通過演示文稿中的簡短配置,它確實不那麼難。請注意,示例配置僅保留GPS庫中與特定應用程序相關的部分。 – 2014-11-11 11:29:40