Androidプログラミングをもう少し2009/11/24 23:51

 時間がなくてままならなかったけど、連休のおかげでようやく少し進展した。なんとも間のあいてしまったこと・・・まさしく「間抜け」だな。
 開発環境は基本的に以前のとおりUbuntu上で、テキストエディタとant用にコンソールを2つ開き、その他にエミュレータとddms。うーん、デュアルディスプレイが欲しいところだ。ddmsのログ出力がコンソールで見られるとデスクトップ的にはもう少しすっきりするのだが。
 この連休で集中して作業したおかげで、ちょっと楽しくなってきた。特にlayoutなどのリソース回りの理解が進んだ。毎日少しずつ作業しても、なかなかこうはいかないのよね。大きくつまずいたのが、TextEditで文字入力をしようとするとソフトキーボードが立ち上がってきて画面の半分を占め、肝心のTextEdit側が自動的にシュリンクしてしまうという現象(heightをfill_parentにしているため)。リソースでminLinesを設定したり、大元のレイアウトをScrollViewにしたりして解決したのだけど、そこにいたるまでがわけわからなかったな。やはり、リファレンスの出来はよくないと思う。
 以前も書いたように、学習用として、パスワード管理のアプリを作っているのだけど、(当然ではあるが)Javaのセキュリティ関連のライブラリが普通に使えている。パスワードベース暗号というのを使うのだが、とりあえず現状はMD5 & DESでやっている。まあ、SHA & 3DESへの切り替えは問題ないだろう。それ以前のところ、アプリケーションの作りのところでいろいろやることが多いので、苦労している。一応セキュリティがからむアプリではあるしね。
 もう少しで一応はできあがる予定なので、どこかでソースと一緒に公開する予定です。Andoroid Marketは・・・なんかきっついこと言われそうで怖いな〜

大体できた/セキュリティの懸念など2009/11/29 18:00

Android上でのパスワード管理ツール、機能的には大体完成した。これからのブラッシュアップがまた長かったりしそうだが・・・

  • "ant uninstall"ではアンインストールに失敗する。(送信しているパッケージ名が間違ってる?)"adb uninstall com.XXX.YYY.ZZZ"などとする。実際のパッケージ名はAndroidManifest.xmlに書かれているものと同じ。
  • パスワードのアルゴリズムをSHA1+3DESにしようとしたが、アルゴリズム名"PBEWithSHA1AndDESede"が使用できない。調べたところ、BouncyCastleのモジュールを組み込んでいるらしく、こちらでは"PBEWithSHAAnd3KeyTripleDES"と指定しなければならないようだ。ああ、めんどくさい・・・。OID("1.2.840.113549.1.12.1.3")で指定する方が間違いがないのかな?
  • Dialogの使い方は、リソースを指定して画面を作り、リソースIDからWidgetを引っ張ってくるなど、Activityに近い。おかげで、例えばDialogの戻り値を見てどうこうというのをコード上でシリアルに書けない。そういう思想だというのはわかるが、やっぱりかったるいな。
  • ソースコード上にコメントを書こうと思ったが、Asciiのみで、UTF8を受け付けていない。ant関係の設定ファイルで、わざわざencodingを指定していやがる・・・余計なことを。修正はできるようだが(こちらを参照)、SDKアップデートの度にやらんといけないとは・・・。


いくつか懸念事項があって、どれもセキュリティがらみとなる。例えば、
  • マスターパスワードの情報をどう保存するか?
入力されたマスターパスワードが正しいかチェックするための情報が必要なのだけど、平文で保存は論外。今は自分自身をパスワードとして暗号化して保存しているのだけど、本当はハッシュ値程度で十分。ただそれも、短いパスワードを使用されると簡単に破られるし、ソースを公開する予定だからSalt値もたいして役には立たない・・・。
ちなみに自分が参考にしているPalmOS用のKeyRingでは、Saltを加えたMD5ハッシュ値を使用しているようだ。

ま、もう少し考えてみるとしよう。