Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

nijibox
ニジボックスの開発は、社内のUI/UXデザインチームと連携をとりながらワンストップで行う開発支援サービスです。Reactを始めPHP(Laravel)・Ruby on Rails、Swift・Kotlinを使った開発実績も多く、バックエンドからアプリまで幅広く対応しています。Twitterで情報発信しています: https://twitter.com/nijibox_jp
https://nijibox.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away