2013-06-25 108 views
1

自從初始版本發佈以來,我一直在使用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. 

回答

1

消息

Warning: there were 10 unresolved references to classes or interfaces. 

暗示的ProGuard無法找到所需的一些類。這些類在ProGuard的早期控制檯輸出中列出。你應該檢查所有必需的jar是否在目錄'libs'中。在這種情況下,android-support-v4.jar可能會丟失。

0

我解決它添加以下行的ProGuard-project.txt:

-libraryjars libs/android-support-v4.jar 

在使用Eclipse,不要忘記在出口​​前清理項目的情況下, APK。

+0

Ant/Eclipse/Gradle構建應該已經自動將libs中的所有jar包傳遞給ProGuard。你永遠不需要自己指定-injars/-outjars/-libraryjars。您可以通過查看其控制檯輸出(例如,使用「gradle --info」)來檢查ProGuard讀取的罐子列表。 –

相關問題