Kendimi başka bir cevaptan tekrar edeceğim :
API seviye 8'den (Android 2.2) başlayarak, uygulamayı hata ayıklanabilir olarak oluşturursanız, shell run-as
komutunu kullanarak bir komutu veya yürütülebilir dosyayı belirli bir kullanıcı / uygulama olarak çalıştırabilir veya sadece UID
uygulamanıza geçerek verilerine erişebilirsiniz. dizin.
Bu nedenle, uygulama veritabanınızı cihazdan çekmek isterseniz, uygulamanın hata ayıklama yapısını çalıştırmalı, bağlanmalı adb shell
ve aşağıdaki komutu çalıştırmalısınız:
run-as com.yourpackage sh -c "cat ~/databases/db-file" > /sdcard/db-file.sqlite
Bu, db-file
SD kartınızın / harici depolamanızın köküne kopyalayacaktır . Artık dosya yöneticisini adb pull
veya istediğiniz herhangi bir şeyi kullanarak oradan kolayca alabilirsiniz . Bu yaklaşımla, uygulamanızınWRITE_EXTERNAL_STORAGE
kopyalama her zaman harici depolamaya yazabilen kabuk kullanıcısı tarafından yapıldığından izne .
Linux / Mac sistemlerinde, adb kabuğuna girmeden kullanabileceğiniz aşağıdaki komutla bir veritabanını doğrudan bilgisayarınıza kopyalama imkanı vardır:
adb shell 'run-as com.yourpackage sh -c "cat ~/databases/db-file"' > db-file.sqlite
Ancak bu, CR / LF sembol dönüşümü nedeniyle Windows'ta düzgün çalışmayacaktır. Oradaki eski yöntemi kullanın.
SQLite format 3
dizeyle başlayıp başlamadığını kontrol edin . Ayrıca doğru birsqlite
sürüme sahip olduğunuzdan emin olun (yani sqlite3 veritabanını sqlite2 çalıştırılabilir dosyasıyla açmaya çalışmıyorsunuz). Ayrıca diğer SQLite istemcilerini de deneyebilirsiniz (örneğin SQLiteStudio ). Umarım yardımcı olur.