I am developing an app where i am using sqllite3 database to store values. I have Nexus S and Nexus 7 both are unrooted devices. How can i get the database for my app for debugging purpose.
I have tried (1) I have tried all approach mentioned here
adb shell
run-as app.package.name \
cp /data/data/package.name/databases/application.sqlite /sdcard/
exit
adb pull /sdcard/application.sqlite ~/
This says cp not found..
(2) http://developer.android.com/tools/help/adb.html#sqlite
adb -s emulator-5554 shell
# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions
.... enter commands, then quit...
sqlite> .exit
I just had to do something like this and there is a way to do it, although it's a pain. You need to cat the file as the application's user account, and then pipe it to a writable location. This worked for me on my Nexus 4 running 4.3.3:
Here's a much simple and straightforward answer: (Tested on Android one: unrooted)
now pull your database to the default adb path
or, to your Desktop for e.g.
you may want to remove the copy with a command below:
-d
option chooses the default device if having more than one emulator.You can write your database to the external memory with the following:
Where
DB_NAME
is the name of my database andDB_PATH
is defined as follows:And add the following permission (Thanks to @Sathesh for pointing this out):
I call this method anytime I have a database write so that my most current database file is in the external memory and I can view it and debug from there.
Then you can use the X-Plore app to view the database from the external memory right on the Android device.
It isn't possible from a non-rooted phone. You cannot access the /data directory, so you can't copy the database or use sqlite app as in (2). If you need to debug, use the simulator, or from your app run queries to inspect the database.
If you don't know your application path then you can use this:
Or if you need copy database to public "Download" folder then you can use this:
This is working perfectly on my Nexus 4 device.
If after running
you receive "run-as: Package 'your.package.name' is unknown", then try to get a database from emulator. See here: https://stackoverflow.com/a/44089632/2914140
In Android Studio 3.0 click View > Tool Windows > Device File Explorer. Expand /data/data/[package-name] nodes.