Saya telah mencari di mana-mana dan saya tidak dapat menemukan jawaban yang tepat atau tutorial tentang bagaimana, jika memungkinkan, untuk melakukan ini.
apakah mungkin untuk menarik database perangkat Android dengan cara apa pun tanpa harus melakukan root? saya hanya perlu mengekstrak data itu dengan cara apa pun untuk mengumpulkannya di komputer saya, jadi bagaimana saya bisa melakukan ini? apakah saya harus memprogram ulang aplikasi atau metode apa pun yang Anda ketahui, tetapi ingat tanpa me-rooting perangkat. Terima kasih
Jawaban:
Cara umum untuk mencapai apa yang Anda inginkan adalah dengan menggunakan perintah tarik ADB.
Cara lain yang saya sukai dalam banyak kasus adalah menyalin database dengan kode ke kartu SD:
Jangan lupa untuk mengatur izin untuk menulis di SD dalam manifes Anda, seperti di bawah ini.
sumber
getPath
metode.Jika perangkat Anda menjalankan Android v4 atau lebih tinggi, Anda dapat menarik data aplikasi, termasuk database-nya, tanpa root dengan menggunakan
adb backup
perintah, kemudian mengekstrak file cadangan dan mengakses database sqlite.Pertama, cadangkan data aplikasi ke PC Anda melalui kabel USB dengan perintah berikut, ganti
app.package.name
dengan nama paket aplikasi yang sebenarnya.Ini akan meminta Anda untuk "membuka kunci perangkat Anda dan mengonfirmasi operasi pencadangan". Jangan berikan kata sandi untuk enkripsi cadangan , jadi Anda dapat mengekstraknya nanti. Klik tombol "Cadangkan data saya" di perangkat Anda. Layar akan menampilkan nama paket yang Anda cadangkan, lalu menutup sendiri setelah berhasil diselesaikan.
File yang dihasilkan
data.ab
di folder rumah Anda berisi data aplikasi dalam format cadangan android. Untuk mengekstraknya gunakan perintah berikut:Jika di atas berakhir dengan
openssl:Error: 'zlib' is an invalid command.
kesalahan, coba yang di bawah ini.Hasilnya adalah
apps/app.package.name/
folder yang berisi data aplikasi, termasuk database sqlite.Untuk lebih jelasnya Anda dapat memeriksa posting blog asli .
sumber
openssl:Error: 'zlib' is an invalid command.
, yang saya tanggapi dengandd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
NAMUN, setelah itu menunjukkan17+0 records in17+0 records out17 bytes transferred in 0.000064 secs
tidak ada bukti apa pun yang telah dilakukan ke folder tersebut. Karena hanya 17 byte, saya berasumsi bahwa perintah itu juga gagal. Saya pikir itu buruk bagaimana saya tidak bisaadb pull
database dari aplikasi debug !!android:allowBackup="false"
openssl
di Mac OS X tidak mendukungzlib
perintah, jadi saya kembali satu dengan minuman:brew reinstall openssl
. Ini tidak akan menggantikan sistem Anda openssl. Oleh karena itu saya memodifikasi perintah PATH hanya untuk sesi saat ini:export PATH=/usr/local/opt/openssl/bin:$PATH
setelah itu berhasil melakukan perintah dari jawaban ini.Untuk aplikasi yang dapat di - debug 1 pada perangkat yang tidak di-rooting , Anda dapat menggunakan perintah berikut:
Contoh:
Setel PATH adb untuk Enviroment Variables atau gunakan perintah cd ke android sdk folder platform-tools.
Contoh:
lalu gunakan perintah di atas
1 Perhatikan bahwa sebagian besar aplikasi di Play Store tidak dapat di-debug karena memerlukan pengaturan tanda yang dapat di - debug di manifes.
sumber
package.name
dengan paket aplikasi, kesalahan dikembalikan:run-as: Package 'com.my.app' is unknown
Sebagian besar jawaban di sini jauh lebih rumit daripada yang seharusnya. Jika Anda hanya ingin menyalin database aplikasi Anda dari ponsel ke komputer, maka Anda hanya perlu perintah ini:
Yang Anda perlukan untuk mengisi perintah di atas adalah nama paket aplikasi Anda, apa nama database dan secara opsional apa / di mana Anda ingin database disalin.
Harap dicatat bahwa perintah khusus ini hanya akan berfungsi jika Anda hanya memiliki satu perangkat yang terhubung ke komputer Anda. The
-d
parameter berarti bahwa perangkat hanya terhubung akan ditargetkan. Tetapi ada parameter lain yang dapat Anda gunakan sebagai gantinya:-e
akan menargetkan satu-satunya emulator yang berjalan-s <serialnumber>
akan menargetkan perangkat dengan nomor seri tertentu.sumber
adb -d shell "run-as your.package.name cat databases/database_name.db > /mnt/sdcard/database_name.db"
,SSHDroid
mulai FileZilla dan sambungkan ke ponsel Anda melalui protokol SFTP. Setel / mnt / sdcard sebagai direktori remote default.adb -d shell "run-as your.package.name ls databases"
) dan 2) Anda mungkin ingin mendapatkan file terkait lainnya bersama dengan database, di kasus saya mengekstrak file -smh dan -wal adalah satu-satunya cara agar DB Browser untuk SQLite membuka databaseMenggunakan Android Studio 3.0 atau versi yang lebih baru, dimungkinkan untuk menarik database (juga preferensi bersama, direktori cache, dan lainnya) jika aplikasi berjalan dalam mode debug pada perangkat yang tidak di-rooting.
Untuk menarik database menggunakan android studio ikuti langkah-langkah berikut.
sumber
sumber
Untuk Ubuntu (tidak hanya?):
lihat Sergeis Answer tetapi alih-alih openssl gunakan zlib-flate:
Jika tidak, openssl mungkin akan melempar:
karena openssl tidak dikompilasi dengan dukungan zlib di Ubuntu
sumber
Karena, tidak ada yang benar-benar berhasil untuk saya. Saya membuat skrip windows BATCH berdasarkan jawaban lain yang digabungkan bersama. Semoga membantu seseorang. Cukup gunakan: backupDatabase <PackageName> <ApplicationName> [TargetDirectory]. Ini menggunakan metode cadangan Sergei dan Android Backup Extractor .
sumber
Anda dapat dengan mudah mengekstrak file sqlite dari perangkat Anda (root tidak perlu)
mulai adb
cd / sdk / platform-tools ./adb shell
Kemudian ketik perintah berikut di terminal
./adb -d shell "run-as com.your_packagename cat /data/data/com.your_packagename/databases/jokhanaNepal> /sdcard/jokhana.sqlite"
Untuk misalnya
./adb -d shell "run-as com.yuvii.app cat /data/data/com.yuvii.app/databases/jokhanaNepal> /sdcard/jokhana.sqlite"
sumber
Jika Anda mencoba melakukannya di android 6 mintalah izin dan gunakan kode jawaban dari pertanyaan ini
Setelah itu diberikan
sumber
Atau Anda dapat menggunakan perpustakaan saya Ultra Debugger . Ini memungkinkan untuk mengunduh database sebagai file atau mengedit nilai langsung di browser. Tidak perlu root, sangat mudah digunakan.
sumber
Di Mac (TIDAK diperlukan root)
Ini akan menyalin file sqlite di folder alat platform.
sumber
ya jika aplikasi android Anda membuat salinan file dari database yang dapat diakses oleh semua orang.
android melindungi data pribadi aplikasi sehingga tidak terlihat / dapat diakses oleh aplikasi lain. database adalah data pribadi. aplikasi Anda tentu saja dapat membaca file database sehingga dapat melakukan penyalinan file ke beberapa file yang terlihat oleh publik.
sumber
Di perangkat yang di-rooting, Anda dapat:
sumber
Berdasarkan jawaban yang diberikan oleh Lam Vinh, berikut ini adalah file batch sederhana yang berfungsi untuk saya pada Nexus 7 generasi pertama saya. Ini meminta pengguna untuk memasukkan nama paket dan kemudian nama database (tanpa ekstensi .sqlite) dan meletakkannya di c: \ temp. Ini mengasumsikan Anda memiliki sdk Android yang disetel dalam variabel lingkungan.
sumber
Jika Anda menggunakan Android 4.0 atau lebih tinggi, dan Anda menggunakan mac , maka berikut adalah skrip ruby yang akan menyimpan konten aplikasi Anda ke desktop. Saya membayangkan ini juga akan berfungsi di Ubuntu, meskipun saya tidak mengujinya.
untuk menjalankan -> ruby your_ruby_file_name.rb
Skrip ini hanya "jalur bahagia", jadi pastikan perangkat Anda terhubung dan adb telah ditambahkan ke profil Anda.
sumber
Saya memberikan solusi lengkap untuk "menyimpan" dan "memulihkan" database aplikasi ke / dari penyimpanan internal (bukan ke PC dengan adb).
Saya telah melakukan dua metode, satu untuk menyimpan dan lainnya untuk memulihkan database. Gunakan metode ini di akhir onCreate () di MainActivity (satu atau yang lain jika Anda ingin menyimpan atau memulihkan database).
simpan database ke penyimpanan internal:
pulihkan database dari penyimpanan internal:
sumber
Itu selalu lebih baik jika semuanya otomatis, itulah mengapa saya menulis skrip python sederhana untuk menyalin file db dari perangkat menggunakan ADB. Ini menghemat banyak waktu pengembangan jika Anda sering melakukannya.
Hanya berfungsi dengan aplikasi yang dapat di - debug jika perangkat Tidak di-root.
Berikut ini tautan ke intinya.
Jalankan sebagai:
python copyandroiddbfile.py
sumber
Jika Anda ingin file database Anda
Lihat DDMS> Penjelajahan file
temukan file db Anda dari nama paket Anda
kemudian Klik tarik file dari perangkat (Hanya perangkat yang di-rooting)
sumber