Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

1. Added adb path to ~/.bash_profile

export PATH="/Users/myname/Library/Android/sdk/platform-tools:$PATH"

2. Logged in to emulator

adb -s emulator-5554 shell

3. changed permission of the app folder and parent folder

chmod 777 /data/data/com.me.myproject
chmod 777 /data/data

4. Still can not get stuff from outside. Why?

adb -s emulator-5554 pull /data/data/com.me.myproject
  • adb shell
  • run-as com.yourPackageName (not rooted device)
  • cp 'database/file_you_want.db' '/sdcard/file_you_want.db'
  • exit (now you will be back to main terminal window)
  • adb pull /sdcard/xx.db
  • That's because your debugging Android device is not rooted.

    If you have a physical rooted device or have an emulated device, try executing this before, to restart ADB in root mode. Then any command should work:

    adb root
    

    The reason is the file you wanted to copy needs root permission. It's better to copy the file to /mnt/sdcard/ where you have a right to interact with.

  • cp <file> /mnt/sdcard/
  • adb pull /mnt/sdcard/<file>
  • cp ? where did i type that command? is it inside android studio or inside my mobilephone? – gumuruh Nov 20, 2021 at 9:37 @gumuruh you need to connect your android to your PC, and use those commands in the Terminal. – Ender Nov 24, 2021 at 15:06
  • connect mobile to laptop then open adb console a). cp msg-store.db /mnt/sdcard/ ==>inside /data/data/packagename/databases/ b). adb pull /mnt/sdcard/msg-store.db/ ===>This will stored in local computer.
  • As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center. – Community May 20, 2022 at 13:03

    prefixing the remote path with ./ or removing the leading / makes the whole difference for me ??? I guess because the system folder must be relative to root's home?

    Darn it, those stupid Linux folks wasted my time again. I admit my whole life is about relative paths but this one got me good. Make sure you use \ for your target file, stupid Bill G. also decided to go backwards with his slashes and that created a whole mess. :)

    PS. What's even weirder both files in my examples were pulled (copied) to the BASH shell current folder NOT c:\ That's stupid or what :)

    FAILS
    adb -s 192.168.1.120:5555 pull /system/media/bootanimation.zip c:\boot1.zip
    SUCCEEDS
    adb -s 192.168.1.120:5555 pull ./system/media/bootanimation.zip c:\boot1.zip
    SUCCEEDS
    adb -s 192.168.1.120:5555 pull system/media/bootanimation.zip c:\boot1.zip
            

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.