自從初始版本發佈以來,我一直在使用Android Studio而沒有任何ProGuard問題。突然間,它今天已停止工作。據我所知,任何會干擾Proguard的文件都沒有改變。例如,我的ProGuard配置文件保持不變,並且自上次成功構建以來,ActionBarSherlock(其中一個模塊現在出現錯誤)沒有任何更改。爲什麼ProGuard突然無法編譯我的應用程序?
錯誤日誌建議使用-dontskipnonpubliclibraryclassmembers
但是不能解決問題。使用包含的默認配置而不是我自己的方式運行ProGuard仍會導致相同的錯誤。
從我所能做到的,當Android Studio構建我的應用程序時,模塊現在正從應用程序中剝離。我不確定它是否僅僅將合適的標誌傳遞給ProGuard,或者Proguard是否自行刪除它們。
一些相關的日誌:
ProGuard: [Meditation Assistant] Warning: com.actionbarsherlock.widget.SuggestionsAdapter: can't find referenced field 'android.content.Context mContext' in class com.actionbarsherlock.widget.SuggestionsAdapter
ProGuard: [Meditation Assistant] Warning: com.actionbarsherlock.widget.SuggestionsAdapter: can't find referenced method 'android.database.Cursor getCursor()' in class com.actionbarsherlock.widget.SuggestionsAdapter
ProGuard: [Meditation Assistant] Warning: com.actionbarsherlock.widget.SuggestionsAdapter: can't find referenced field 'android.database.Cursor mCursor' in class com.actionbarsherlock.widget.SuggestionsAdapter
--snip--
ProGuard: [Meditation Assistant] You should check if you need to specify additional program jars.
ProGuard: [Meditation Assistant] Warning: there were 10 unresolved references to classes or interfaces.
ProGuard: [Meditation Assistant] You may need to specify additional library jars (using '-libraryjars').
ProGuard: [Meditation Assistant] Warning: there were 191 unresolved references to program class members.
Ant/Eclipse/Gradle構建應該已經自動將libs中的所有jar包傳遞給ProGuard。你永遠不需要自己指定-injars/-outjars/-libraryjars。您可以通過查看其控制檯輸出(例如,使用「gradle --info」)來檢查ProGuard讀取的罐子列表。 –