Mencoba menarik satu file menggunakan
adb pull /data/data/com.corp.appName/files/myFile.txt myFile.txt
gagal dengan
failed to copy '/data/data/com.corp.appName/files/myFile.txt myFile.txt' to 'myFile.txt': Permission denied
meskipun debugging USB diaktifkan di perangkat.
Kita bisa mengatasi masalah ini melalui jalur kuno
adb shell
run-as com.corp.appName
cat files/myFile.txt > myFile.txt
tapi ini berat untuk lebih dari satu file.
Bagaimana cara menarik direktori /data/data/com.corp.appName/files ke MacBook saya?
Melakukan ini baik secara langsung atau melalui transit di `/ storage / sdcard0 / myDir (dari mana saya dapat melanjutkan dengan Android File Transfer) tidak masalah.
Komentar tambahan
Mungkin itu hanya berjalan
adb backup -f myFiles com.corp.appName
akan menghasilkan file yang saya cari. Dalam hal ini, saya sedang mencari cara untuk mengurai / mengekstrak cadangan yang dihasilkan!
Jawaban:
adb backup akan menulis arsip khusus Android:
Arsip ini dapat diubah menjadi format tar menggunakan:
Referensi:
http://nelenkov.blogspot.ca/2012/06/unpacking-android-backups.html
Cari "Perbarui" di tautan itu.
Atau, gunakan ekstraktor cadangan Android untuk mengekstrak file dari file cadangan Android (
.ab
).sumber
bs=24 skip=1
jauh lebih cepat daripadabs=1 skip=24
(di sistem saya, 38.6 MB / s vs 1.7 MB / s) :)dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
(dari sumber di atas)dd
perintah di MacBook saya di tempat kerja. Sebagai gantinya, saya gunakanjava -jar ./abe.jar unpack data.ab data.tar
. Anda dapat mengunduh utilitas abe dari sourceforge.net/projects/adbextractor/files/?source=navbarandroid:allowBackup="false"
dd if=myAndroidBackup.ab bs=24 skip=1 | openssl zlib -d | tar -x
Saya memiliki masalah yang sama tetapi menyelesaikannya dengan berjalan berikut:
Setelah ini Anda bisa lari
sumber
Inilah yang berhasil untuk saya:
Saya mencetak database langsung ke file lokal.
sumber
adb shell
------ di dalam shell runrun-as com.example.test
------ di dalam shell runcat ...db > /mnt/sdcard/file.db
------adb pull /mnt/sdcard/file.db .
------ end (maaf, jeda baris tidak berfungsi)adb shell
tidak berhasil untuk saya, tetapi mengikuti jawaban ini dan menggunakannyaadb exec-out
berhasil!Di MacOSX, dengan menggabungkan jawaban dari Calaf dan Ollie Ford, berikut ini berhasil untuk saya.
Pada baris perintah (pastikan adb ada di jalur Anda, milik saya ada di ~ / Library / Android / sdk / platform-tools / adb) dan dengan perangkat android Anda dicolokkan dan dalam mode debugging USB, jalankan:
Perangkat android Anda akan meminta izin untuk membuat cadangan data Anda. Pilih "CADANGKAN DATA SAYA"
Tunggu beberapa saat.
File backup akan muncul di direktori tempat Anda menjalankan adb.
Sekarang jalankan:
Sekarang Anda akan memiliki file backup.tar yang dapat Anda urungkan seperti ini:
Dan lihat semua file yang disimpan oleh aplikasi Anda.
sumber
adb backup
dandd
langkah konversi tar tidak memberikan status saat bekerja dan dapat memakan waktu beberapa menit jika Anda memiliki banyak data. Sabar!Versi Android Studio yang lebih baru menyertakan Device File Explorer yang menurut saya merupakan metode GUI yang berguna untuk mengunduh file dari pengembangan saya, Nexus 7.
Anda Harus memastikan Anda telah mengaktifkan USB Debugging pada perangkat
Berinteraksi dengan konten perangkat di jendela file explorer. Klik kanan pada file atau direktori untuk membuat file atau direktori baru, simpan file atau direktori yang dipilih ke mesin Anda, unggah, hapus, atau sinkronkan. Klik dua kali file untuk membukanya di Android Studio.
Android Studio menyimpan file yang Anda buka dengan cara ini dalam direktori sementara di luar proyek Anda. Jika Anda membuat modifikasi pada file yang Anda buka menggunakan Device File Explorer, dan ingin menyimpan perubahan Anda kembali ke perangkat, Anda harus mengunggah versi modifikasi file tersebut ke perangkat secara manual.
Dokumentasi Lengkap
sumber
Anda dapat menggunakan skrip shell di bawah ini. Itu dapat menarik file dari cache aplikasi juga, tidak seperti
adb backup
alat:Kemudian Anda bisa menggunakannya seperti ini:
sumber
rm /sdcard/
menggantinya, untungnya tidak-rf
.Jika Anda menggunakan mesin Mac dan ponsel Samsung, inilah yang harus Anda lakukan (karena
run-as
tidak berfungsi di Samsung danzlib
tidak berfungsi di Mac)Buat cadangan direktori data aplikasi Anda
adb backup -f /Users/username/Desktop/data.ab com.example
Anda akan dimintai kata sandi untuk dienkripsi di Ponsel Anda, jangan masukkan apa pun. Cukup ketuk "Cadangkan data saya". Lihat Bagaimana cara melakukan BackUp?
Setelah berhasil dicadangkan, Anda akan melihat
data.ab
file di Desktop Anda. Sekarang kita perlu mengubah ini menjaditar
format.Gunakan Android Backup Extractor untuk ini. Unduh | Kode sumber
Unduh dan Anda akan melihat
abe.jar
file. Tambahkan ini ke variabel PATH Anda.Jalankan ini untuk menghasilkan file tar :
java -jar abe.jar unpack /Users/username/Desktop/data.ab /Users/username/Desktop/data.tar
Ekstrak file data.tar untuk mengakses semua file
sumber
data.tar
hanya mengekstrak kedata.tar.cpgz
@henryJawaban ini berdasarkan pengalaman saya dengan jawaban lain, dan komentar di jawaban tersebut. Harapan saya adalah saya dapat membantu seseorang dalam situasi serupa.
Saya melakukan ini di OSX melalui terminal.
Sebelumnya jawaban Vinicius Avellar bekerja sangat baik untuk saya. Saya hanya sebagian besar waktu membutuhkan database dari perangkat dari aplikasi debug.
Hari ini saya memiliki kasus penggunaan di mana saya membutuhkan banyak file pribadi . Saya berakhir dengan dua solusi yang bekerja dengan baik untuk kasus ini.
Berikut ini skrip saya untuk menarik beberapa file pribadi yang akan saya bagikan dengan Anda, pembaca, yang juga menyelidiki pertanyaan mengagumkan ini;):
Inti: https://gist.github.com/davethomas11/6c88f92c6221ffe6bc26de7335107dd4
Kembali ke metode 1 , mendekripsi cadangan menggunakan Android Backup Extractor
Berikut adalah langkah-langkah yang saya ambil di Mac saya, dan masalah yang saya temui:
Pertama, saya mengantri cadangan (dan menyetel kata sandi untuk mengenkripsi cadangan saya, perangkat saya memerlukannya):
Kedua saya unduh hanya abe.jar dari sini: https://sourceforge.net/projects/adbextractor/files/abe.jar/download
Selanjutnya saya berlari:
Pada titik ini saya mendapat pesan kesalahan. Karena arsip saya dienkripsi, java memberi saya kesalahan sehingga saya perlu menginstal beberapa pustaka kebijakan keamanan.
Terakhir saya baru saja berlari ( setelah menjalankan perintah sebelumnya lagi )
Sekarang penting untuk dicatat bahwa jika Anda bisa berlari-sebagai dan kucing, itu jauh lebih cepat. Pertama, Anda hanya mendapatkan file yang Anda inginkan dan bukan seluruh aplikasi. Dua, semakin banyak file (+ enkripsi untuk saya) membuatnya lebih lambat untuk ditransfer. Jadi mengetahui cara ini penting jika Anda tidak memiliki run-as di OSX, tetapi skrip harus menjadi yang pertama untuk aplikasi debug.
Pikiran Anda, saya baru saja menulisnya hari ini dan mengujinya beberapa kali, jadi tolong beri tahu saya jika ada bug!
sumber
Setelah mengatur hak akses dengan menambahkan kode berikut:
adb pull
bekerja sesuai keinginan.lihat File.setReadable ()
sumber
Mulai dari skrip Dave Thomas Saya sudah bisa menulis solusi saya sendiri untuk mengatasi 2 masalah:
Ini adalah skrip saya, yang menyalin data aplikasi ke sdcard dan kemudian menariknya
sumber
Mirip dengan jawaban Tamas , berikut adalah satu baris untuk Mac OS X untuk mengambil semua file untuk aplikasi dengan
your.app.id
dari perangkat Anda dan menyimpannya ke (dalam hal ini)~/Desktop/your.app.id
:-d
untuk menarik dari emulatorsumber
Data Game yang dicadangkan dengan apk . Nougat Oneplus 2.
sumber
adb backup -f myapp.ab -apk com.myapp # backup on one device
adb restore myapp.ab # restore to the same or any other device
Ya persis. Cukup aneh, Anda juga membutuhkan file tersebut untuk memiliki
x
bit set. (setidaknya di Android 2.3)chmod 755
sepenuhnya bekerja untuk menyalin file (tetapi Anda harus mengembalikan izin setelah itu, jika Anda berencana untuk terus menggunakan perangkat).sumber
Anda dapat melakukan:
sumber