On a recent attempt to pull a realm database file created by an application that I built on my device, I got an error with the following message:
$ adb pull /data/data/com.example.test/files/default.realm . adb: error: failed to stat remote object '/data/data/com.example.test/files/default.realm': Permission denied
Let’s see how we can solve this!
Long story short, you can run the following command from the
Terminal to create a copy of the file in your machine’s file system:
adb shell "run-as om.example.test cat /data/data/com.example.test/files/default.realm" > default.realm
This only works for Debug builds and not for a production app.
But let’s break it down to pieces!
You can use
adb shell to connect to the device’s shell. Then, if you want to access the data of an app with an
applicationId set to
com.example.test, you will have to run the command
run-as com.example.test inside the adb shell.
Once you execute this command, the working directory will change to the
/data/data/com.example.test. From there, you can use commands like
ls to get a list of the available directories and
cat to get the content of a specific file.
The last step (
> default.realm) is to redirect the content of the file to a file on my machine’s file system.
And that’s it! Now you will be able to copy the file from a device for an application that you have built without any error!