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-askomutunu kullanarak bir komutu veya yürütülebilir dosyayı belirli bir kullanıcı / uygulama olarak çalıştırabilir veya sadece UIDuygulamanı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 shellve 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-fileSD kartınızın / harici depolamanızın köküne kopyalayacaktır . Artık dosya yöneticisini adb pullveya 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 3dizeyle başlayıp başlamadığını kontrol edin . Ayrıca doğru birsqlitesü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.