Pada perangkat android yang tidak di-rooting, saya dapat menavigasi ke folder data yang berisi database menggunakan run-as
perintah dengan nama paket saya. Sebagian besar jenis file saya puas dengan hanya melihat, tetapi dengan database saya ingin menarik jika dari perangkat android.
Apakah ada perintah download
copy
or move
dari bagian adb shell ini? Saya ingin mendownload file database dan melihat isinya menggunakan browser database.
Satu jawaban di sini melibatkan mengubah seluruh paket aplikasi menjadi arsip terkompresi, tetapi tidak ada jawaban lebih lanjut tentang cara mengekstrak arsip itu setelah ini selesai dan dipindahkan ke mesin, membuat saya sangat teralihkan ketika mungkin ada solusi yang lebih langsung untuk memulai.
Jawaban:
Dengan desain
user
build Android (itulah yang Anda miliki di ponsel Anda sampai Anda membuka kunci bootloader dan mem -flash ponsel denganuserdebug
ataueng
perangkat lunak) membatasi akses ke Penyimpanan Internal - setiap aplikasi hanya dapat mengakses file-nya sendiri. Untungnya bagi pengembang perangkat lunak yang tidak mau melakukan root pada ponsel mereka, Google menyediakan cara untuk mengakses Penyimpanan Internal versi yang dapat di - debug dari paket mereka menggunakanrun-as
perintah.Untuk mengunduh
/data/data/debuggable.app.package.name/databases/file
dari perangkat Android 5.1+, jalankan perintah berikut:Untuk mengunduh banyak file dalam folder di bawah
/data/data/debuggable.app.package.name/
sekaligus - gunakantar
:sumber
run-as
untuk menyalin file ke suatu tempat di penyimpanan eksternal, dan tarik file database dari sana, daripada mengotak-atik izin file.Jawaban yang diterima tidak berfungsi lagi untuk saya (diblokir oleh Android?)
Jadi saya melakukan ini:
sumber
su
agarrun-as
perintah berfungsi.Jika ada yang ingin menarik database dari aplikasi debug dapat menggunakan prosedur di bawah ini:
sumber
Saya telah menerbitkan skrip shell sederhana untuk membuang database:
Ini melakukan dua metode berbeda yang dijelaskan di sini:
\r
karakter yang dikeluarkan beberapa perangkat ke shell.Dari sini Anda dapat menggunakan berbagai aplikasi CLI atau GUI SQLite, seperti
sqlite3
atausqlitebrowser
, untuk menelusuri konten database.sumber
Saya tidak bisa mendapatkan hal lain untuk bekerja untuk saya tetapi ini:
Keluar pertama adalah keluar dari run-as, keluar kedua adalah keluar dari adb shell untuk melakukan penarikan.
sumber
Untuk versi debug aplikasi, sangat mudah menggunakan perintah
adb exec-out run-as xxx.yyy.zzz cat somefile > somefile
untuk mengekstrak satu file. Tetapi Anda harus melakukannya berkali-kali untuk banyak file. Berikut ini skrip sederhana yang saya gunakan untuk mengekstrak direktori.Semoga bermanfaat. Skrip ini juga tersedia di intinya .
Penggunaan tipikal adalah
maka itu akan mengekstrak semua file di bawah direktori database aplikasi Anda, yang
/data/data/com.example.myapplication/databases
, ke direktori saat ini.sumber
Pendekatan yang jauh lebih sederhana untuk mengunduh file ke komputer lokal Anda:
Di shell PC Anda, jalankan:
sumber
Anda dapat menggunakan skrip ini untuk mendapatkan database Realm.
sumber
Jika seseorang mencari jawaban lain yang bisa digunakan untuk mengambil
Database
jugaShared Preferences
ikuti langkah ini:Di
build.gradle
file aplikasi Anda, tambahkan barissekarang ketika Anda menjalankan aplikasi Anda dalam
non-release
mode maka aplikasi Anda akan secara otomatis membuka port 8080 dari perangkatIP address
Anda memastikan perangkat Anda terhubung melaluiwifi
dan Andalaptop
berbagi jaringan yang sama. Sekarang cukup kunjungi urluntuk melihat semua data database bersama dengan preferensi bersama.
sumber
Berikut adalah solusi yang berfungsi pada perangkat yang menjalankan Android 5.1. Contoh berikut untuk Windows.
Anda membutuhkan sed (atau sed.exe di windows, misalnya dari cygwin.) (Di Unix, itu hanya akan ada di sana;)). Untuk menghapus karakter '\ r' yang buruk, setidaknya di windows.
Sekarang jalankan saja perintah berikut:
Perintah sed menghapus karakter trailing / r.
Tentu saja Anda harus mengganti "com.yourcompany.yourapp" dengan nama paket aplikasi dan "YourDatabaseName" dengan nama database di aplikasi.
sumber
File database kosong saat menggunakan
adb run-as
. Ini bisa diselesaikan dengan memanggil close () pada instance RoomDatabase. Panggil close () agar SQLite menulis jurnalnya ke disk. Saya telah membuat tombol ini yang menutup koneksi database berdasarkan permintaan:melalui GIPHY
Berikut adalah cara memanggil tutup pada instance RoomDatabase.
sumber