2011-01-31 15 views
11

Próbuję uzyskać dostęp do pliku bazy danych sqlite na urządzeniu. Mam na myśli, że uruchomiłem aplikację na urządzeniu przez adb. A teraz chcę pobrać ten plik tak, jak robiłem to wcześniej na emulatorze za pośrednictwem DDMS. Ale kiedy wybiorę urządzenie w DDMS i otworzę dane folderu, jest ono puste.Dostęp do bazy danych sqlite na urządzeniu z systemem Android

Czy to właściwy sposób? Lub istnieje inny sposób pobrania tego pliku db.

Dzięki.

+0

[Zobacz bazę danych SQLite na urządzeniu w Android Studio] (http://stackoverflow.com/questions/28220636/view-sqlite-database-on-device-in-android-studio) To dla mnie jest najprostszym sposobem na zrób to. Sprawdź to. –

Odpowiedz

3

Czy próbowałeś/aś bezpośrednio adb?

adb pull /data/data/the.package.of.the.app/databases/the_name_of_the_database.db 
+2

To prawdopodobnie nie zadziała na niezrootowanych urządzeniach – Damp

+0

tak. ale folder danych jest pusty. Klikam i hierarchia się nie otwiera. po prostu pokazuje folder danych, nie wiem dlaczego. =/ – rogcg

+0

@Prawo, że masz rację ... wciąż trudno mi myśleć o programistach z Androidem z niezasilanym telefonem. – Cristian

36

Można uzyskać dostęp do folderu danych bez korzenia, pod warunkiem, że wniosek jest debuggable

<application 
... 
     android:debuggable="true" 
... 

Do listy katalog bazowy:

adb shell "run-as com.your.package ls -l" 

skopiować plik:

adb shell "run-as com.your.package cat relative/path > /sdcard/some_name" 
adb pull /sdcard/some_name 

Niestety pre-ICS run-as jest dość błędny. Typowym symptomem jest wiadomość o tym, że jest ona wyświetlana w następujący sposób: 1A

+0

Dzięki, bardzo przydatne – Benjamin

+0

Następnie wystarczy użyć coś jak http://sourceforge.net/projects/sqlitebrowser/, aby przeczytać plik. sudo aptitude install sqlitebrowser – redochka

+1

Nie ma potrzeby ustawiania w manifeście android: debuggable = "true" podczas kompilowania projektu z certyfikatu debugowania, który automatycznie ustawi na true. – Ankit

Powiązane problemy