Copying files in ADB shell with run-as

前端 未结 3 949
予麋鹿
予麋鹿 2020-12-01 16:57

Is there a way to write a script that will copy files from an ADB shell using run-as?

The only way I know of to copy in the adb shell is using cat source >

3条回答
  •  清歌不尽
    2020-12-01 17:22

    Following Chris Stratton's advice, the way I eventually got this to work was as follows (for copying shared preferences back to the device):

    adb push shared_prefs.xml /sdcard/temp_prefs.xml
    cat < /data/data/com.example.app/shared_prefs/com.example.app_preferences.xml
    exit
    exit
    EOF
    

    Piping directly to adb shell run-as did not work, and I do not know why, but piping to adb shell does. The trick is to then call run-as from the interactive shell, and it continues to accept input from the pipe.

    The HERE doc lets me easily embed the newlines to separate commands and in general just makes it readable; I did not have much luck with semicolons, but that might have been because of the way I was doing things. I believe it might work with other methods of piping multiple commands/newlines; I stopped the experiment once I finally got it to work.

    The two exits are necessary to prevent a hanging shell (killable with CTRL-C); one for run-as, and the other for adb shell itself. Adb's shell doesn't respond to end-of-file very nicely, it seems.

提交回复
热议问题