概要
掲題について、調べると手順が出てくるのですが、おおよそ
- Android端末内の/sdcard/にファイルを一度コピー
- それをadb pull でPCへコピー
という手順になるのですが /sdcard/(実際には /storage/self/primary へのシンボリックリンク)へのコピーが Permission denied となってしまいました。
端末
Android11
今回の回避方法
おそらく正しいアプローチがあるのだと思いますが、今回そこまで時間をかけられなかったので、以下でとりあえずの回避が出来ました。
アプリのファイルのパスを確認
TANMATSU:/ $ run-as com.xxx.xxxxxxxxzzz
TANMATSU:/data/user/0/com.xxx.xxxxxxxxzzz $ cd files
TANMATSU:/data/user/0/com.xxx.xxxxxxxxzzz/files $ pwd
/data/user/0/com.xxx.xxxxxxxxzzz/files
TANMATSU:/data/user/0/com.xxx.xxxxxxxxzzz/files $ ls -l
total 145996
-rw-rw---- 1 u0_a299 u0_a299 50285969 2021-10-31 12:27 file1.txt
-rw-rw---- 1 u0_a299 u0_a299 50285969 2021-10-31 12:27 file2.txt
-rw-rw---- 1 u0_a299 u0_a299 50285969 2021-10-31 12:27 file3.txt
adb shell の run-as からの cat コマンドで、手元のPCに対して出力させます。
adb -d shell "run-as com.xxx.xxxxxxxxzzz cat /data/user/0/com.xxx.xxxxxxxxzzz/files/file1.txt" > file1.txt
adb -d shell "run-as com.xxx.xxxxxxxxzzz cat /data/user/0/com.xxx.xxxxxxxxzzz/files/file2.txt" > file2.txt
adb -d shell "run-as com.xxx.xxxxxxxxzzz cat /data/user/0/com.xxx.xxxxxxxxzzz/files/file3.txt" > file3.txt
参考
こちら を参考にしました。