2013年12月17日火曜日

androidでのsqlite3管理には信じられないバグがある

android4.2.2.でのお話です。

androidでsqlite3を利用しているアプリをアンインストールすると、恐ろしいことにdatabasesディレクトリにroot以外触れないジャーナルが残されて、二度とそのフォルダが使えなくなる場合があります。
例えばadb shell上でlsをとってみると・・・

# ls -l databases
ls -l databases
d--------- root     root              2013-12-17 10:52 sdb-journal
d--------- root     root              2013-12-17 10:52 sdb-journal
#
パーミッションを見ていただけますとわかる通り、全くでたらめです。
ディレクトリで、しかも000。
しかもなんだか知りませんが同名のファイルが2つもできてます。
二度と削除できないファイルの豪華同時二本立て。

器用ですねえ。
猛烈にfsckかけたくなりますね。

当然、この端末はrootをとっていないので自分でやっちゃったわけではありません。
システムがおおポカやからしてしまっているわけです。

恐ろしくて使えません・・・というわけにもいきませんので、どうにかしようと思った場合、一応、こんな状況でも、databasesディレクトリはユーザ権限でアクセスできます

ls -la
drwxrwx--x u0_a46   u0_a46            2013-12-17 11:35 databases

mvは可能なので、これを消すために端末初期化とかrootをとるという選択肢は通常はユーザからゆるされることはないので、これでごまかすしかないでしょう。

やっぱり、発展途上のデバイスはコワイですねぇ
あんまり枯れてない上に、組み込み向けの開発だということを自覚しながら開発しないと。

0 件のコメント:

コメントを投稿