Saya akan mengulangi diri saya dari jawaban lain :
Mulai dari API level 8 (Android 2.2), jika Anda membangun aplikasi sebagai debuggable, Anda dapat menggunakan run-as
perintah shell untuk menjalankan perintah atau dieksekusi sebagai pengguna / aplikasi tertentu atau hanya beralih ke UID
aplikasi Anda sehingga Anda dapat mengakses datanya direktori.
Jadi, jika Anda ingin menarik database aplikasi Anda dari perangkat, Anda harus menjalankan debug build aplikasi, hubungkan adb shell
dan jalankan perintah berikut:
run-as com.yourpackage sh -c "cat ~/databases/db-file" > /sdcard/db-file.sqlite
Ini akan menyalin Anda db-file
ke root kartu SD / penyimpanan eksternal Anda. Sekarang Anda dapat dengan mudah mendapatkannya dari sana dengan menggunakan pengelola file, adb pull
atau apa pun yang Anda suka. Perhatikan bahwa dengan pendekatan ini, aplikasi Anda TIDAK perlu memiliki WRITE_EXTERNAL_STORAGE
izin, karena penyalinan dilakukan oleh pengguna shell yang selalu dapat menulis ke penyimpanan eksternal.
Pada sistem Linux / Mac, terdapat kemungkinan untuk menyalin database langsung ke komputer Anda dengan perintah berikut yang dapat digunakan tanpa memasuki shell adb:
adb shell 'run-as com.yourpackage sh -c "cat ~/databases/db-file"' > db-file.sqlite
Namun ini tidak akan berfungsi dengan benar pada Windows karena konversi simbol CR / LF. Gunakan metode sebelumnya di sana.
SQLite format 3
string. Juga pastikan Anda memilikisqlite
versi yang benar (yaitu Anda tidak mencoba membuka database sqlite3 dengan sqlite2 dapat dieksekusi). Dan Anda juga dapat mencoba klien SQLite lainnya (misalnya SQLiteStudio ). Semoga membantu.permission denied
Saya menggunakan skrip shell ini di MAC saya, yang menyalin database langsung ke folder rumah saya. Solusi satu klik yang mudah, cukup ubah nama paket (com.example.app) dan nama database (database.sqlite)
Script Sederhana
Skrip yang menerima argumen [package_name] [database]
sumber
Cara terbaik untuk melihat dan mengelola database aplikasi android Anda adalah dengan menggunakan perpustakaan ini https://github.com/sanathp/DatabaseManager_For_Android
Dengan pustaka ini, Anda dapat mengelola database SQLite aplikasi dari aplikasi Anda sendiri. Anda dapat melihat tabel di database aplikasi Anda, memperbarui, menghapus, menyisipkan baris ke tabel Anda. Semuanya dari aplikasi Anda.
Ini adalah file aktivitas java tunggal, cukup tambahkan file java ke folder sumber Anda. Ketika pengembangan selesai, hapus file java dari folder src Anda itu saja.
Itu sangat membantu saya. Semoga ini membantu Anda juga.
Anda dapat melihat demo 1 menit di sini: http://youtu.be/P5vpaGoBlBY
sumber
Meskipun, ini adalah pertanyaan lama yang menurut saya masih relevan dan layak mendapatkan jawaban negara saat ini. Ada alat yang tersedia, yang memungkinkan Anda untuk memeriksa database secara langsung (tanpa perlu menariknya dari perangkat atau emulator).
Alat yang paling saya temukan (dan paling disukai) adalah Android Debug Database .
Anda hanya perlu menambahkan ketergantungan ini:
Tidak diperlukan kode lebih lanjut. Setelah Anda memulai aplikasi, buka logcat dan filter "DebugDB" dan Anda akan menemukan pesan yang mengatakan
Ia bekerja dengan setiap browser dan Anda dapat memeriksa tabel database Anda dan preferensi bersama.
Ia juga bekerja dengan default dan emulator Genymotion.
Alat yang saya gunakan sebelumnya adalah stetho .
Kelemahan: Anda perlu menambahkan sedikit kode dan Anda terikat ke browser Chrome.
Keuntungan: Anda memiliki opsi untuk juga memeriksa lalu lintas jaringan.
sumber
Dalam aplikasi saya, saya mengekspor database ke kartu SD. Setelah database ada di kartu SD, database dapat diakses dengan mencolokkan perangkat ke komputer Anda.
Lihat posting ini: Membuat backup database ke SDCard di Android
sumber
Jika Anda mendapatkan
mencoba
Perhatikan kutipan ganda!
sumber
Saya hanya melakukan:
Kemudian saya dapat men-debug database sqlite atau apa pun yang ingin saya lakukan dari shell dengan izin yang tepat.
sumber
Ada cara jika apk dapat di-debug untuk menggunakan program yang disebut run-as dari shell adb (non-root) untuk menyalin file pribadi aplikasi.
sumber
Berikut adalah petunjuk langkah demi langkah - kebanyakan diambil dari kombinasi jawaban lainnya. Ini berfungsi dengan perangkat yang tidak terkunci.
Hubungkan perangkat Anda dan luncurkan aplikasi dalam mode debug.
Salin file database dari folder aplikasi Anda ke kartu sd Anda: jalankan:
./adb -d shell 'run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite> /sdcard/filename.sqlite'
Tarik file database ke mesin Anda: jalankan:
./adb pull / sdcard / execution: ./adb
Instal Firefox SQLLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
Buka Firefox SQLLite Manager dan buka file database Anda dari langkah 3 di atas.
Nikmati!
sumber
Android Studio 4.1 Menambahkan fitur baru untuk melihat / mengedit database Android SQLite.
Cara membuka Database Inspector
Untuk membuka Database Inspector di Android Studio, Anda perlu memilih
View > Tool Windows > Database Inspector
dari menu bar.Anda juga perlu menjalankan aplikasi ke perangkat yang menjalankan API level 26 atau lebih tinggi.
Dengan menggunakan alat ini Anda bisa
Buat kueri database Anda
Ubah dan debug database Anda
sumber
Di Android Studio 4.1 baru ada Database Inspector baru .
Anda dapat memilih opsi berikut dari bilah menu
View > Tool Windows > Database Inspector
untuk membukanya. Instruksi lebih rinci dapat ditemukan di blog ini .Cara lain adalah dengan menggunakan stetho untuk ini. Anda menambahkan dependensi lalu dapat menggunakan Chrome DevTools (chrome: // inspect) untuk memeriksa database saat perangkat dicolokkan.
sumber
Anda harus menjalankan adb sebagai root, atau menggunakannya di ponsel yang di-rooting.
Untuk menjalankan adb sebagai root, gunakan
adb root
Lihat juga: Mengapa saya mendapatkan akses ditolak ke folder data saat menggunakan adb?
sumber
Tidak ada solusi
run-as
-dan-cat-to-sdcard yang bekerja untuk saya di Android 4.4.2. Saya tidak yakin, tetapi saya curiga itu mungkin karenarun-as
alat tidak menangani izinsdcard_r
dan baru dengan benarsdcard_rw
.Pertama-tama saya harus menyalin file database ke
/files
dalam penyimpanan internal pribadi aplikasi saya:Lalu saya salin ke
/sdcard/Android/data/com.example.myapp/files
di Javaland (ini membutuhkanWRITE_EXTERNAL_STORAGE
izin):Akhirnya, saya menyalin file ke laptop saya:
sumber
Perangkat saya tidak memiliki sdcard
jadi solusi pertama tidak berhasil untuk saya.Jika Anda mengalami masalah serupa, coba seperti ini:
sumber
/sdcard
belum tentu kartu SD. Di ponsel saya, ini menunjuk ke penyimpanan internal ketika tidak ada kartu SD fisik.Coba aplikasi ini: SQLiteWeb ( https://play.google.com/store/apps/details?id=br.com.cm.sqliteweb ). Ini memberikan akses jarak jauh ke database Anda tanpa menariknya keluar.
Dalam versi berbayar, ia memiliki akses root untuk database pribadi (/ data / data / nama-paket ...) atau menerapkan Penyedia Konten untuk terhubung menggunakan SQLiteWeb (Instruksi di dalam aplikasi)
Tetapi jika ingin tetap menggunakan versi gratis, Anda dapat membuat database Anda di penyimpanan eksternal:
sumber
Di OSX, menggunakan jawaban @Tadas dengan automator dan sqllitebrowser ( https://github.com/sqlitebrowser/sqlitebrowser ):
buka Automator dan buat alur kerja baru.
tambahkan tindakan "Jalankan Shell Script".
Tempel ini:
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. nama
klik run untuk menyegarkan database di sqlitebrowser.
sumber
cd <ANDROID_SDK_PATH>
(untuk saya di Windowscd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(ini hanya berfungsi jika hanya satu emulator yang berjalan)cd data/data
su
(dapatkan hak istimewa pengguna super)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
, jika tidak, pernyataan tidak dikeluarkan dan malah akan rusak ke baris baru.)Catatan: Gunakan
ls
(Linux) ataudir
(Windows) jika Anda perlu membuat daftar isi direktori.sumber