Xperia実機でSQLiteの中身をadbからのぞく

4,734 views
Skip to first unread message

丹羽直也

unread,
Jul 30, 2010, 4:05:37 AM7/30/10
to 日本Androidの会
SQLiteに限った話ではないのでは無いのですが、Xperia(他の実機は分かりませんm(_ _)m)では
/data/data/
以下にパーミッションに制限がかかっており、adb
shellから見ることが出来ません。確かに実機でちょこちょこ自分以外のアプリのデータをいじられると大変なので理由は分かるのですが何かと不便です。
特に実機でしか検証できない要素(Wifi、Bluetooth etc)の場合はかなり不便です
たしかにそれようのコードをアプリ自体に書けば解決なのですが、開発の利便性から見るといかがな物かと思います。

何らかの方法でこのパーミッションの設定を変えて見ることが出来ないものなのでしょうか?
もし知っている方がいたらお願いします。

--
灘校パソコン研究部-Nada Personal Computer Users' Association
Naoya Niwa
MyBlog  Mine's Blog: http://mines-blogn.blogspot.com/
Twitter: @mine_studio
http://twitter.com/mine_studio

kuroneko

unread,
Jul 31, 2010, 12:15:51 AM7/31/10
to android-g...@googlegroups.com
くろねこと申します。

adb shellは一般ユーザーでのログインですので、
権限のないディレクトリにはアクセスできませんし、設定を変えることもできません。
全ディレクトリに自由にアクセスするためには、
スーパーユーザになる = root化 が必要となります。

このroot化は、開発者視点から見れば大変便利なのですが、
システムファイルやドライバを含めてアクセスが可能になってしまうため、
最悪はシステムを破損させてしまい、二度と端末が起動しなくなる可能性もあります。
そのため、市販されているAndroid端末ではもちろんroot化はガードされています。

もしroot化したければ、Androidの脆弱性をついて改造コードを流し込む等、
「普通でない」作業が必要になります。

これにはリスクが伴いますので、 もしXperiaでroot化を行うのでしたら、
自己責任で慎重に行うようにしてください。
万が一の場合にリカバリしたくても、Xperiaはまだノウハウが足りない、という印象です。
下記コムギドットネットさんの記事が参考になるかと思います。
http://komugi.net/archives/2010/02/15151306.php#extended

また、故障してdocomoに修理に出した場合、
カスタムROMの場合は修理できないと拒否されることもあるみたいです。
ぐれぐれも、ご注意ください。


以上となります。
よろしくお願いいたします。
2010年7月30日17:05 丹羽直也 <naclub...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


丹羽直也

unread,
Jul 31, 2010, 5:45:54 AM7/31/10
to android-g...@googlegroups.com
/data/data自体に権限がないのでやっぱり無理そうですね・・・・
アプリケーション側で許可する方法が無いかと思ったのですが・・・

今後、開発していく上でカスタムROMや無理矢理suとかはリスクが高いので、アプリケーション側にデバッグ用に情報読み込みのコードも書くしかないですね

2010年7月31日13:15 kuroneko <kurone...@gmail.com>:

田代透

unread,
Jul 31, 2010, 6:03:57 AM7/31/10
to android-g...@googlegroups.com

開発時だけでもデータをSDメモリ上におけばどうでしょう

2010/07/31 18:46 "丹羽直也" <naclub...@gmail.com>:



/data/data自体に権限がないのでやっぱり無理そうですね・・・・
アプリケーション側で許可する方法が無いかと思ったのですが・・・

今後、開発していく上でカスタムROMや無理矢理suとかはリスクが高いので、アプリケーション側にデバッグ用に情報読み込みのコードも書くしかないですね

2010年7月31日13:15 kuroneko <kurone...@gmail.com>:

> くろねこと申します。
>
> adb shellは一般ユーザーでのログインですので、
> 権限のないディレクトリにはアクセスできませんし、設定を変えることもできません。

> 全ディレクトリに自由に...

--

灘校パソコン研究部-Nada Personal Computer Users' Association
Naoya Niwa

MyBlog Mine's Blog: http://mines-blo...

丹羽直也

unread,
Jul 31, 2010, 6:16:48 AM7/31/10
to android-g...@googlegroups.com
なるほどです
ですが、ものすごい初歩的かもしれませんが、SQLiteのファイルは直接SQLiteOpenHelperからSDカードの物はいじることが出来るのでしょうか?

2010年7月31日19:03 田代透 <toru...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
>

--

灘校パソコン研究部-Nada Personal Computer Users' Association
Naoya Niwa

MyBlog  Mine's Blog: http://mines-blogn.blogspot.com/
Twitter: @mine_studio
http://twitter.com/mine_studio

田代透

unread,
Jul 31, 2010, 6:33:02 AM7/31/10
to android-g...@googlegroups.com

 SQLiteのデーターベースは単なるファイルなので、データーベース作成の際にフルパスで指定してやれば可能でないかと考えます(実際に試したわけではありませんが)。
 もちろんのそのパスが存在していることやパスへの権限は必要と思われますが。

 もし、わたしの考え違いであればお赦しください。

2010/07/31 19:17 "丹羽直也" <naclub...@gmail.com>:


なるほどです
ですが、ものすごい初歩的かもしれませんが、SQLiteのファイルは直接SQLiteOpenHelperからSDカードの物はいじることが出来るのでしょうか?

2010年7月31日19:03 田代透 <toru...@gmail.com>:

> 開発時だけでもデータをSDメモリ上におけばどうでしょう
>
> 2010/07/31 18:46 "丹羽直也" <naclub...@gmail.com>:
>

> /data/data自体...

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。

> このグループに投稿するには、android-group-japan@googleg...

灘校パソコン研究部-Nada Personal Computer Users' Association
Naoya Niwa

MyBlog Mine's Blog: http://mines-blogn.blogspot.com/
Twitter: @mine_studio

http://twitter.com/mine_...

丹羽直也

unread,
Jul 31, 2010, 6:36:08 AM7/31/10
to android-g...@googlegroups.com
今はデバッグ出来る環境にいないので、今は無理ですが、デバッグするときに試してみます

2010年7月31日19:33 田代透 <toru...@gmail.com>:

> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
>

--

灘校パソコン研究部-Nada Personal Computer Users' Association
Naoya Niwa
MyBlog  Mine's Blog: http://mines-blogn.blogspot.com/
Twitter: @mine_studio

http://twitter.com/mine_studio

fujio maruyama

unread,
Jul 31, 2010, 11:12:21 AM7/31/10
to android-g...@googlegroups.com
丸山です。

丹羽さん、ご存知でしょうが、/data/data 以下のディレクトリには、
Androidのデータベースが格納されています。cd /data/data; ls
を実行すると、ディレクトリが見えると思いますが、
データベースの格納場所は、もう少し深いところの
/data/data/*/databases/*.db です。

このデータベースには、adb shell から、sqlite3のコマンドを使うと、
次のようにアクセスできます。例えば、

# cd com.android.providers.telephony/databases
# ls -l
-rw-rw---- radio radio 4096 2010-07-08 16:35 telephony.db
-rw-rw---- radio radio 37888 2010-07-08 16:35 mmssms.db
と、*.dbの形のファイルが見えると思いますが、これがデータベースです。

ここで、データベース名を指定して、sqlite3コマンドを発行します。

# sqlite3 telephony.db
そうすると、
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";“
というメッセージが出て、ここは、もうsqlite3の世界です。

sqlite> .tables
.tables
android_metadata carriers

.tableコマンドは、データベース内のテーブル名を表示します。
telephony.dbデータベースには、android_metadata とcarriers
という二つのテーブルがあることが分かります。

sqlite> .schema carriers
.schema carriers
CREATE TABLE carriers(_id INTEGER PRIMARY KEY,name TEXT,
numeric TEXT,mcc TEXT,mnc TEXT,apn TEXT,user TEXT,server TEXT,
password TEXT,proxy TEXT,port TEXT,mmsproxy TEXT,mmsport TEXT,
mmsc TEXT,current INTEGER);

.schemaコマンドは、指定されたテーブルのSchemaを表示します。
面白いのは、ちゃんとSQLのSelect文も使えることです。

sqlite> select * from carriers ;

/data/data 以下のファイルは、大体、中身がのぞけるはずです。
いろんなデータベースがありますので、試してみてください。例えば、

# cd com.android.providers.settings/databases
# sqlite3 settings.db
sqlite> select * from system;

で、マシンの設定情報が、取得できるはずです。

2010年7月30日17:05 丹羽直也 <naclub...@gmail.com>:

丹羽直也

unread,
Jul 31, 2010, 11:21:19 AM7/31/10
to android-g...@googlegroups.com
おお、Xperiaですと、
/data/data
でのlsはパーミッションが無くエラーですが、直接開発中のアプリケーションのディレクトリへは入れました
ですが、そこからdatabasesはcdは出来てもlsは出来ず、上でlsでパーミッションをみると
drwxrwx--x app_90 app_90 2010-07-31 23:30 databases
となっています。
また、sqlite3自体がパーミッション関連で実行できず、catでその(あるはずの)データベースファイルを指定しましたがNo such fileとなりました。

2010年8月1日0:12 fujio maruyama <fujio.m...@gmail.com>:

fujio maruyama

unread,
Jul 31, 2010, 11:49:48 AM7/31/10
to android-g...@googlegroups.com
ごめん。

やっぱり、権限無いと無理でしたね。
勘違いしていました。ごめんなさい。

2010年8月1日0:21 丹羽直也 <naclub...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages