我正在編寫我的第一個應用程序定位ICS(4.0.3 - 15級)。我得到了Action Bar,我覺得他們很棒。但是我第一次嘗試片段,而且我還不確定我是否喜歡他們。我目前正在使用的應用程序不需要片段,因爲它對屏幕要求非常不靈活。標準活動工作正常。大但是,我必須使用PreferencencFragment和Headers PreferenceActivity。直接到首選定義xml文件的舊形式的活動已折舊。所以我學會了使用偏好片段來強制Google顯示偏好。 (順便說一下,有沒有人想過如何跳過顯示標題,我用了兩個來獲得學習體驗,一個指向一個片段類就足夠了,但是看起來只用一個標題就可以加倍選擇。 )PerferenceActivity與PreferenceFragment失敗的設備與proguard沒有proguard好吧
我一直在使用模擬器的東西,直到大約3天前,一切工作。當我將測試移到設備上時,我可以看到顯示標題的首選項屏幕(PreferenceActivity類)。但是,當我選擇一個標題(它調用PreferencesFragment類)時,我收到了「sorry your app stopped」消息。回到模擬器,一切正常。由於所有的視圖都是由標準活動驅動的,除了我的設置活動以外,大多數情況都起作用了,當我關閉Proguard時,一切都運行正常,包括Settings在我的Crittercism崩潰報告中,Proguard打開時產生的錯誤是class not found。沒有發現是內聯PreferenceFragment類。
例如,使用報頭
android:fragment="com.mycompany.projectname.FragmentPreferences$SettingsFragment"
直列類SettingsFragment不被發現在設備上運行的Android操作系統。
關閉Proguard並重新安裝APK,上面的標題正常工作。無論是否使用Proguard,始終都會找到PreferenceActivity類FragmentPreferences並顯示標題。它選擇顯示的標題(調用SettingsFragment)時失敗...
我試過--dontoptimize和-dontshrink,但我的應用程序仍然不會與Proguard一起工作。我的Proguard設置是標準的;即,當我使用Eclipse嚮導(ADT R20 - 最新和最好的)創建新應用時生成的。下面是我試圖與運行設置:
在項目屬性:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
target=Google Inc.:Google APIs:15
In proguard-project:
-keepattributes SourceFile, LineNumberTable
-dontshrink
-dontoptimize
所有標準活動(無碎片)做工精細的基本設置。添加了-dont以試圖將Proguard限制爲混淆。當內聯片段類被調用時,設置仍然爆炸。
目前我正在生成與Proguard關閉的APK。當我準備好去製作時,我想重新開啓它。
(順便說一句,我感動PreferenceFragment類外部類,他們仍然被調用時Proguard的不工作。)
我輸入足夠多的東西這裏還沒有問我的問題。好的,我會用下面的問題關閉它:
有沒有人知道使共享偏好片段類可見的正確Proguard設置?如果這個問題擴展到常規片段使用,這些設置是什麼?
我給它一個鏡頭。會讓你知道。雖然我更喜歡在蟑螂上使用獵槍。德克薩斯人等等。 – 2012-07-20 18:17:45
與您的建議,並使用別克。工作很好。我甚至刪除了-nts,因此它現在正在優化和縮小任何可能的東西。 – 2012-07-20 18:31:56
@霍華德霍德森:我現在有了一種對付蟑螂的新武器。善良周圍! :-) – CommonsWare 2012-07-20 20:51:58