2014-02-06 26 views
4

如果我使用新版本更新我的應用程序,則sharedPreferences消失。在Android上更新pkg的資源/代碼路徑應用更新

logcat的說:套餐de.xxx.yyy代碼路徑從 /data/app/de.xxx.yyy-1.apk改爲/data/app/de.xxx.yyy-2.apk; 保留 數據,並使用新的

包是和以前一樣。

清單文件的變化是:

android:versionCode="6" -> android:versionCode="7" 
android:versionName="1.6.000" -> android:versionName="1.8" 

,並添加權限:

<uses-permission android:name="android.permission.VIBRATE" /> 

爲什麼新的安裝路徑和新的數據? 任何人的想法whats happend?

更新 也許proguard是問題。 ??? 新的sharedPreferences有其他結束字母。

OLD: de.xxx.yyy.a.f.xml 
NEW: de.xxx.yyy.a.h.xml 

我從班裏得到了名字。

SharedPreferences mPrefs = activity.getSharedPreferences(
       THECLASS.class.getName(), Activity.MODE_PRIVATE); 
+0

包名更改是正常的,但不應清除首選項。你可能會碰到一些設備/模擬器錯誤。 –

+0

謝謝,但我試過三種不同的設備。之前的更新不會清除首選項。 – PiOsA

+2

你是如何確認偏好不見了?你有沒有檢查設備上的實際文件? –

回答

4

不要使用類名作爲您的sharedPreferences的關鍵字。

爲sharedPreferences而不是類名稱更好地使用常量字符串。

Proguard會混淆您的類名,如果您在項目中添加或修改某些內容,則可能會更改此類名。隨着proguard你的類名是動態的。

SharedPreferences mPrefs = activity.getSharedPreferences(
       YOURSTRING, Activity.MODE_PRIVATE);