2009-08-07 8 views
31

Теперь, когда мы можем Examining sqlite3 Databases from a Remote Shell, можно ли просмотреть SharedPreferences из оболочки adb? Так как было бы гораздо удобнее рассматривать и управлять SharedPreferences из командной строки при отладке.Как просмотреть SharedPreferences из оболочки adb?

Или иначе, в каких файлах сохраняются SharedPreferences и как просматривать и изменять эти файлы?

ответ

42

Хорошо, я нашел файл сразу после того, как поднял вопрос выше. (Кажется, что вопросы задают публично, чтобы стимулировать меня к поиску ответов мною более усердно, так как я не хочу, чтобы мои дорогие коллеги рассматривали меня как ленивого программиста.)

Это файл XML под /data/data/your.app.package.name/shared_prefs, а файл name - ваш.app.package.name_preferences.xml. Очень легко изменить настройки, когда вы выясните, что контент - это всего лишь карта с ключом.

+1

Как редактировать этот XML-файл с помощью ADB? – Fred

+1

Как вы спрашиваете, как вы можете его отредактировать ?! Редакторы VI и Nano не установлены. Как вы его отредактируете, чем ??? – susparsy

+1

adb pull , редактировать на вашем устройстве, adb push joecks

24

Если приложение debugable вы могли бы сделать:

$ adb shell 
$ run-as <app-package-id> 
$ cat /data/data/<app-package-id>/shared_prefs/prefs.xml 

Обратите внимание, что предпочтения могут быть сохранены в другом файле, так что лучше проверку каталога, чтобы найти его:

$ ls /data/data/<app-package-id>/shared_prefs/ 
6

I я использую эту удобную одностроку для вытягивания, редактирую в vim и нажимаю общие настройки для приложения:

APP_ID=com.myapp; adb pull /data/data/${APP_ID}/shared_prefs/${APP_ID}_preferences.xml /tmp/${APP_ID}_preferences.xml && vim /tmp/${APP_ID}_preferences.xml && adb push /tmp/${APP_ID}_preferences.xml /data/data/${APP_ID}/shared_prefs/ 

Просто установите APP_ID на свой идентификатор приложения.

Обратите внимание, что предполагается, что вы используете имя файла по умолчанию для общих настроек, полученное от PreferenceManager.getDefaultSharedPreferences(context). Кроме того, ADB должен работать в корневом режиме: adb root

0

Сначала вытащите файл общих предпочтений с устройства. Для этого требуется корневое разрешение.

adb pull /data/data/org.test/shared_prefs/MyKeys.xml MyKeys.xml 

Теперь MyKeys.xml хранится в текущей директории вашей системы.

значения Modify по

vim MyKeys.xml 

После редактирования файла сохранения изменений и нажмите на устройство.

adb push MyKeys.xml /data/data/org.test/shared_prefs/MyKeys.xml 

Чтобы проверить изменения

adb shell 
cat /data/data/org.test/shared_prefs/MyKeys.xml