[Android]実機で作成中アプリケーションのデータディレクトリへアクセスする


Android開発をしていると、実機での動作確認やエミュレータでの動作確認を行うと思います。しかし、実機で動作確認をしながらデータなどの整合性を確認する方法がなかなかに難しい。。。エミュレーターだとRoot権限があるのでデータディレクトリやSQLiteの中身などを見ることはできますが、実機でしか動作しないC2DMや課金の機能を確認する際は不便を感じます。

その中でデータディレクトリを見る方法を教えてもらいました!!
MacのZsh環境からadb シェルコマンドを使って端末を操作します。

参考:http://stackoverflow.com/questions/1043322/why-do-i-get-access-denied-to-data-folder-when-using-adb

まずはアプリの設定
AndroidManifest.xmlでdebuggableを有効にする。

AndroidManifest.xmlのapplicationタグ

<application android:icon="@drawable/icon" 
  android:label="@string/app_name" android:debuggable="true" >

adbコマンドを使ってシェルで入ります。

% adb shell  (端末を指定する場合は % adb -s [DEVICE_ID] shell)

通常アプリのdataディレクトリはPermission Denied となります。

$ ls /data/data/[com.yourpackage]/
/data/data/[com.yourpackage]: No such file or directory

run-asコマンドでアプリを起動しdataディレクトリに入る

$ run-as [com.yourpackage]

そうすると/data/data/[com.yourpackage]/ へカレントディレクトリが移動し
[files][databases][shared_pref]ディレクトリが見えるはず!
shared_prefにあるプリファレンスや更新されたファイルなどのテキストファイルであれば
cat コマンドで中身も見れます。

run-asコマンド最強!!と思った瞬間でした。

だが、、、、databaseはsqlite3コマンドが実機に貼っていないため中身までは見ることは出来ませんでした。
見る方法があれば教えて欲しいです。(Root化なしで)

追記・・・
デバイスでrun-asが使えるものと使えないものがあるみたい。。。
Xperia Nexusは使えたけど。。。自分の持っている国内メーカのもの1機種使えないものがありました。。

【FaceBookでコメント】

comments

Powered by Facebook Comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です