run-as コマンドは以前は重宝していましたが、Android 10(APIレベル29)あたりからrun-as コマンドの機能が段階的に厳しくなり、デバッグモードでないアプリケーションにはほとんど使い道がなくなりました
以下、過去の内容になりますがしばらく残しておきます
run-as
/data/data/アプリパッケージ名/
以下が内部ストレージに相当するのですが、ターミナルを使って入ろうとするとパーミッションでブロックされます。
アプリ内に保存したデータを見るには
- run-as [アプリパッケージ名]
- Device File Explorer: その昔ADMとかDDMSと呼ばれていたFile Explorer
を使うとできる場合があります。
必ず全て見られる訳ではありません、開発で使用するのが目的ですからGoogle Playで公開されているアプリはできません
(以前は多少できましたが…)
adb run-as
Android Studioをインストールしていれば付属の「Terminal」を使えば問題ありません。単体でSDKをインストールしているだけであれば、adbを実行するためにパスを通すか、直に adb があるフォルダにターミナルで入ります。
また、AndroidManifest.xml の application タグ内で「android:debuggable=”false”」となっている場合は、true にするかこの設定を外しておきます。
Emulatorと実機が存在するとエラーになりますので片方をクローズあるいはUSBを外しておきましょう
adb shell で入り
run-as [アプリパッケージ名]
1 2 |
adb shell run-as com.sample.hoge |
これで ls コマンドでストレージ内のファイルが確認できます
android なのでLinuxコマンドでls, cd などが使えます
1 2 3 4 5 6 7 |
$ adb shell shell@android:/ $ run-as com.example.testimagemove shell@android:/data/data/com.example.testimagemove $ ls cache files lib shell@android:/data/data/com.example.testimagemove $ |
ファイル等は特に指定しない場合 /files 以下に保存されています。Textファイルの確認は cat でできますが、画像ファイル等は読み書きができる場所に移してから確認します。
画像ファイルを 外部ストレージにコピーする(あるいは書き込み可能領域にコピー)
1 |
cat /data/data/com.example.testimagemove/files/test.png > /sdcard/test.png |
尚、端末により外部ストレージのパスは異なりますので、それぞれ確認が前もって必要です
その後、adb pull を使って画像ファイルをPCのフォルダへコピーし
shell を一度出てから adb pull を行います。
1 2 3 |
$ adb pull /sdcard/test3.png /Users/hoge/Desktop/Home/test3.png 2950 KB/s (166338 bytes in 0.055s) $ |
これで画像を確認できます
実機でrun-as
実機で試してみました。
アプリはアプリ内でファイルを保存で作成したもので
packagename: com.example.testfileoutin
testfile.txt というファイルに「test123456789」と入力して保存したものです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
C:\Users\hoge>adb shell bullhead:/ $ run-as com.example.testfileoutin bullhead:/data/data/com.example.testfileoutin $ ls -l total 16 drwxrwx--x 2 u0_a123 u0_a123 4096 2016-10-29 08:55 cache drwxrwx--x 2 u0_a123 u0_a123 4096 2016-10-29 08:55 files bullhead:/data/data/com.example.testfileoutin $ cd files bullhead:/data/data/com.example.testfileoutin/files $ ls -la total 24 drwxrwx--x 2 u0_a123 u0_a123 4096 2016-10-29 08:55 . drwx------ 4 u0_a123 u0_a123 4096 2016-10-29 08:55 .. -rw-rw---- 1 u0_a123 u0_a123 14 2016-10-29 09:06 testfile.txt bullhead:/data/data/com.example.testfileoutin/files $ bullhead:/data/data/com.example.testfileoutin/files $ cat testfile.txt test123456789 bullhead:/data/data/com.example.testfileoutin/files $ |
尚、releaseされたアプリは基本的にはできません
例えばgoogleのchromeアプリなどはdebugできないと出てきます
Devie File ExplorerでEmulatorのChromeを見たケース:
debug releaseしたものに限るようです。
SharedPreferences:
SharedPreferencesのテストアプリをNexus 5Xにインストールしてrun-asで中をのぞいてみた動画です。