2010-11-09 7 views
0

Когда я отлаживаю приложение для Android на эмуляторе, я могу подключиться к нему с помощью оболочки adb и просмотреть файл базы данных с помощью команды sqlite3. Но на реальном устройстве я не могу этого сделать, потому что у меня нет прав root. Есть ли способ сделать это?просмотр sqlite db на устройстве

ответ

0

Если вы работаете с Eclipse, попробуйте это: questoidsqlitemanager.

+0

Я не использую eclipse – Dmitriy

+0

Это работает только с эмулятором. OP хотел, чтобы он считывал базу данных с реального устройства. –

+0

проект удален? – max4ever

0

Ваш файл базы данных должен быть в/данные/данные/YOUR_PACKAGE_NAME/баз данных, попробуйте следующее:

adb shell (Use "-s" option if you have more than one device) 
sqlite3 /data/data/YOUR_PACKAGE_NAME/databases/YOUR_DATABASE_NAME 

шаг YOUR_DATABASE_NAME в папку/DATA изменить права (CHMOD 777 YOUR_DATABASE_NAME). И теперь вы сможете получить файл. Теперь вы можете использовать плагин sqlite3 или SQLite Manager.

Вы можете root с помощью суперпользователя.

+0

на эмуляторе это успешно работает, но не на устройстве (разрешено отклонение) – Dmitriy

+0

Этот каталог будет доступен только для идентификатора пользователя приложения и для суперпользователя. На эмуляторе оболочка adb является более поздней, на реальном устройстве это не так. –

+0

Я редактирую еще один шаг для root (без флэш-памяти) и получить файл базы данных. Надеюсь, он поможет – Fraid

0

Это проблема с разрешениями на уровне системной системы, поэтому вам нужно либо переместить базу данных в другое место с более расслабленными разрешениями (не уверен, что api позволит вам поместить ее на SD-карту, хотя в соответствии с базовыми библиотеками).

Или вы можете сделать мониторинг базы данных от чего-то, у кого есть разрешение на чтение там, что означает, что что-то работает от имени root или, скорее всего, как пользовательский идентификатор приложения _ ##, созданный для приложения при установке. Например - и это не то, что вам нужно сделать, кроме вашего устройства для тестирования, - вы можете сделать копию оболочки инструментария доступной для записи и выполнения (например, каталог/sqlite_stmt_journals) и сделать ее setuid идентификатором пользователя вашего приложения (ваш само приложение должно будет делать копирование и chmod'ing программно). Затем вы можете запустить эту оболочку из оболочки adb и стать идентификатором пользователя приложения.

Или любой процесс, запущенный программным путем приложением, будет иметь свой идентификатор пользователя, поэтому вы также можете прочитать о запуске netcat («nc», я думаю, даже упакован в официальные сборки Android) в мини-insecure-telnet- демона и запускайте это из своего приложения, чтобы при использовании оболочки adb или порта adb для подключения к порту, где он прослушивается, вы получите оболочку, запущенную как идентификатор пользователя приложения.

Или вы можете создать функциональность поиска базы данных в своем приложении, либо прослушивать tcp, либо использовать наблюдатель файлов в качестве триггера, и сбрасывать файл на SD-карте, которую вы можете проверить.

Или вы можете укрепить свой телефон.

Смежные вопросы