Powtórzę się z innej odpowiedzi :
Począwszy od poziomu API 8 (Android 2.2), jeśli zbudujesz aplikację jako debugowalną, możesz użyć run-as
polecenia powłoki, aby uruchomić polecenie lub plik wykonywalny jako określony użytkownik / aplikacja lub po prostu przełączyć się na UID
aplikację, aby uzyskać dostęp do jej danych informator.
Jeśli więc chcesz pobrać bazę danych aplikacji z urządzenia, uruchom kompilację debugowania aplikacji, połącz się adb shell
i uruchom następujące polecenie:
run-as com.yourpackage sh -c "cat ~/databases/db-file" > /sdcard/db-file.sqlite
Spowoduje to skopiowanie db-file
do katalogu głównego karty SD / pamięci zewnętrznej. Teraz możesz łatwo uzyskać to stamtąd za pomocą menedżera plików adb pull
lub czegokolwiek innego. Pamiętaj, że przy takim podejściu NIE ma potrzeby, aby Twoja aplikacja miałaWRITE_EXTERNAL_STORAGE
uprawnienia, ponieważ kopiowanie jest wykonywane przez użytkownika powłoki, który zawsze może pisać do pamięci zewnętrznej.
W systemach Linux / Mac istnieje możliwość skopiowania bazy danych bezpośrednio na komputer za pomocą następującego polecenia, którego można użyć bez wchodzenia do powłoki adb:
adb shell 'run-as com.yourpackage sh -c "cat ~/databases/db-file"' > db-file.sqlite
To jednak nie będzie działać poprawnie w systemie Windows z powodu konwersji symboli CR / LF. Użyj tam poprzedniej metody.
SQLite format 3
łańcucha. Upewnij się również, że masz poprawnąsqlite
wersję (tj. Nie próbujesz otworzyć bazy danych sqlite3 za pomocą pliku wykonywalnego sqlite2). Możesz także wypróbować innych klientów SQLite (na przykład SQLiteStudio ). Mam nadzieję, że to pomoże.permission denied
Używam tego skryptu powłoki na moim MAC, który kopiuje bazę danych bezpośrednio do mojego folderu domowego. Łatwe rozwiązanie jednym kliknięciem, wystarczy zmienić nazwę pakietu (com.example.app) i nazwę bazy danych (database.sqlite)
Prosty skrypt
Skrypt, który akceptuje argumenty [nazwa_pakietu] [baza danych]
źródło
Najlepszym sposobem przeglądania bazy danych aplikacji na Androida i zarządzania nią jest użycie tej biblioteki https://github.com/sanathp/DatabaseManager_For_Android
Dzięki tej bibliotece możesz zarządzać bazą danych SQLite aplikacji z poziomu samej aplikacji. możesz przeglądać tabele w bazie danych aplikacji, aktualizować, usuwać, wstawiać wiersze do tabel. Wszystko z aplikacji.
Jest to pojedynczy plik aktywności java, po prostu dodaj plik java do folderu źródłowego. Po zakończeniu tworzenia usuń plik java z folderu src i to wszystko.
Bardzo mi to pomogło. Mam nadzieję, że tobie też pomoże.
Możesz obejrzeć 1-minutowe demo tutaj: http://youtu.be/P5vpaGoBlBY
źródło
Chociaż jest to stare pytanie, myślę, że nadal jest aktualne i zasługuje na obecną odpowiedź. Dostępne są narzędzia, które pozwalają na bezpośrednie przeglądanie baz danych (bez konieczności ściągania ich z urządzenia lub emulatora).
Narzędziem, które ostatnio odkryłem (i najbardziej lubię) jest Android Debug Database .
Musisz tylko dodać tę zależność:
Nie jest wymagany żaden dodatkowy kod. Po uruchomieniu aplikacji otwórz logcat i filtruj dla „DebugDB”, a zobaczysz komunikat z informacją
Działa z każdą przeglądarką i możesz sprawdzić tabele bazy danych i wspólne preferencje.
Działa również z emulatorami domyślnymi i Genymotion.
Narzędzie, którego użyłem wcześniej, to stetho .
Wada: musisz dodać trochę kodu i jesteś powiązany z przeglądarką Chrome.
Zaleta: Masz również możliwość sprawdzenia ruchu sieciowego.
źródło
W mojej aplikacji eksportuję bazę danych na kartę SD. Gdy baza danych znajduje się na karcie SD, można uzyskać do niej dostęp, podłączając urządzenie do komputera.
Spójrz na ten post: Tworzenie kopii zapasowej bazy danych na SDCard na Androidzie
źródło
Jeśli dostaniesz
próbować
Zwróć uwagę na podwójny cudzysłów!
źródło
Po prostu zrobiłem:
Następnie mogę debugować bazę danych sqlite lub cokolwiek chcę zrobić z powłoki z odpowiednimi uprawnieniami.
źródło
Jeśli apk można debugować, istnieje sposób, aby użyć programu o nazwie run-as z (innej niż root) powłoki adb, aby skopiować prywatny plik aplikacji.
źródło
Oto instrukcje krok po kroku - w większości zaczerpnięte z kombinacji innych odpowiedzi. Działa to z urządzeniami, które nie są odblokowane.
Podłącz urządzenie i uruchom aplikację w trybie debugowania.
Skopiuj plik bazy danych z folderu aplikacji na kartę SD: wykonaj:
./adb -d shell 'run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite> /sdcard/filename.sqlite'
Pobierz pliki bazy danych na swój komputer: wykonaj:
./adb pull / sdcard / execute: ./adb
Zainstaluj Firefox SQLLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
Otwórz Firefox SQLLite Manager i otwórz plik bazy danych z kroku 3 powyżej.
Cieszyć się!
źródło
Android Studio 4.1 Dodano nową funkcję przeglądania / edycji baz danych Android SQLite.
Jak otworzyć Inspektora bazy danych
Aby otworzyć Inspektora bazy danych w Android Studio, musisz wybrać
View > Tool Windows > Database Inspector
z paska menu.Musisz także uruchomić aplikację na urządzeniu z poziomem API 26 lub wyższym.
Za pomocą tego narzędzia możesz
Przeszukuj swoje bazy danych
Modyfikuj i debuguj swoją bazę danych
źródło
W nowym Android Studio 4.1 jest nowy Inspektor bazy danych .
Z paska menu możesz wybrać następujące opcje,
View > Tool Windows > Database Inspector
aby go otworzyć. Bardziej szczegółowe instrukcje można znaleźć na tym blogu .Innym sposobem jest użycie do tego stetho . Dodajesz zależność, a następnie możesz użyć narzędzi Chrome DevTools (chrome: // inspect), aby sprawdzić bazę danych, gdy urządzenie jest podłączone.
źródło
Musisz uruchomić adb jako root lub używać go na zrootowanym telefonie.
Aby uruchomić adb jako root, użyj
adb root
Zobacz także: Dlaczego podczas korzystania z adb otrzymuję odmowę dostępu do folderu danych?
źródło
Żadne z rozwiązań typu
run-as
-i-cat-to-sdcard nie działało dla mnie na Androidzie 4.4.2. Nie jestem pewien, ale podejrzewam, że może to być spowodowanerun-as
nieprawidłową obsługą nowego narzędziasdcard_r
isdcard_rw
uprawnień.Najpierw musiałem skopiować plik bazy danych do
/files
prywatnej pamięci wewnętrznej mojej aplikacji:Następnie skopiowałem do
/sdcard/Android/data/com.example.myapp/files
w Javaland (to wymagaWRITE_EXTERNAL_STORAGE
pozwolenia):Na koniec skopiowałem plik na laptopa:
źródło
Moje urządzenie nie miało sdcard
więc pierwsze rozwiązanie nie zadziałało dla mnie.Jeśli masz podobny problem, spróbuj tego:
źródło
/sdcard
niekoniecznie jest to karta SD. Na moim telefonie wskazuje na pamięć wewnętrzną, gdy nie ma fizycznej karty SD.Wypróbuj tę aplikację: SQLiteWeb ( https://play.google.com/store/apps/details?id=br.com.cm.sqliteweb ). Zapewnia zdalny dostęp do bazy danych bez jej wyciągania.
W wersji płatnej ma uprawnienia roota do prywatnej bazy danych (/ data / data / nazwa-pakietu ...) lub implementuje dostawcę treści do łączenia się za pomocą SQLiteWeb (instrukcje wewnątrz aplikacji)
Ale jeśli chcesz pozostać przy darmowej wersji, możesz utworzyć swoją bazę danych w pamięci zewnętrznej:
źródło
W OSX, używając odpowiedzi @Tadas z automatorem i sqllitebrowser ( https://github.com/sqlitebrowser/sqlitebrowser ):
otwórz Automator i utwórz nowy przepływ pracy.
dodaj akcję „Uruchom skrypt powłoki”.
Wklej to:
source ~ / .bash_profile adb shell 'run-as cat /data/data/your_app_uid/databases/db.name> /tmp/db.name' adb pull /tmp/db.name ~ / open -a sqlitebrowser ~ / db. imię
kliknij Uruchom, aby odświeżyć bazę danych w sqlitebrowser.
źródło
cd <ANDROID_SDK_PATH>
(dla mnie w systemie Windowscd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(działa to tylko wtedy, gdy działa tylko jeden emulator)cd data/data
su
(uzyskaj uprawnienia superużytkownika)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
, w przeciwnym razie instrukcja nie zostanie wydana i zamiast tego zostanie przerwana na nowy wiersz).Uwaga: Użyj
ls
(Linux) lubdir
(Windows), jeśli chcesz wyświetlić zawartość katalogu.źródło