Edited at

SharedPreferencesに出力したデータの確認


Device File Explorer

stackoverflow

AndoridStudio3.0以降はこれを使うのが便利。


  1. メニューから View > Tool Windows > Device File Explorer

  2. 目当てのパッケージの箇所を拡げる /data/data/[package-name]

  3. shared_prefs を開く

debugビルドのアプリしか中身は見れないので注意

以下は付録


そもそもAndroidでのSharedPreferencesとは

データをxml形式でファイルに保存する、永続化のための仕組みの一つ。

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の好きなエディタで確認できる。