SharedPreferencesに出力したデータの保存場所

  • 4
    Like
  • 0
    Comment

SharedPreferencesに出力したデータの保存場所と形式 を参照

AndroidでのSharedPreferencesを使ったデータの保存と読込

iOSで言えばNSUserDefaultsを使うのと同じようなもの。

以下のコードがあるとして

SharedPreferences preferenceService = PreferenceManager.getDefaultSharedPreferences(context);
preferenceService.edit().putString("hogehoge", "foofoo").commit();

contextはアプリケーションコンテキスト
上記のコードでプリファレンスを保存した場合

保存パス

/data/data/"パッケージ名"/shared_prefs/"パッケージ名_preferences.xml"

パッケージ名がjp.co.hoge.hoge だとすると
/data/data/jp.co.hoge.hoge/shared_prefs/jp.co.hoge.hoge_preferences.xml

パッケージ名_preferences.xmlの形式

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="hogehoge">foofoo</string>
</map>

保存した値の読出し

SharedPreferences preferenceService = PreferenceManager.getDefaultSharedPreferences(context);
String foo = preferenceService.getString("hogehoge" , null);

保存したファイルの中身を確認したい場合

アプリの実機でのデバッグ時に、SharedPreferencesの内容を確認する方法

前提

対象アプリがデバッグモードであること
ターミナルでadb コマンドを使えること(PATHが通っていること)

1.adb shellを実行
adb shell

2.run-asコマンドでアプリを起動しdataディレクトリに入る
run-as [対象アプリのパッケージ名]

上記コマンドを実行すると /data/data/[対象アプリのパッケージ名]/ へカレントディレクトリが移動し、files,databases,shared_prefs ディレクトリが見えるようになります。

3.SharedPreferencesが保存されているディレクトリに移動
cd shared_prefs

SharedPreferencesはshared_prefs配下にxmlで保存されています。

4.SharedPreferencesの内容の確認
cat [対象SharedPreferencesのファイル名]

対象ファイルをローカルPCにコピーする場合

# jp.ne.hogehoge は任意のパッケージ名とする
# /storage/sdcard0 は端末内の任意の保存場所とする
adb -d shell "run-as jp.ne.hogehoge cp /data/data/jp.ne.hogehoge/shared_prefs/jp.ne.hogehoge_preferences.xml /storage/sdcard0/jp.ne.hogehoge_preferences.xml"
# データファイルをPCに保存
adb pull /storage/sdcard0/jp.ne.hogehoge_preferences.xml ./jp.ne.hogehoge_preferences.xml

この方がPCの好きなエディタで確認できる。