Android技術者認定試験を受けてきた

Android技術者認定試験には、分野や難易度に応じていくつかの区分が設けられていますが、現時点で受験できるのは、「Androidアプリケーション技術者認定試験(ベーシック)」のみ。結果は合格でした。
私のスペックは、

  • プライベートでAndroidアプリのコードを読み始めてから1年くらい
  • 仕事でAndroidアプリのコードを触り始めて半年くらい
  • 試験対策本を読み始めて3ヶ月くらい
  • SJC-PSJC-WC保有

マーケットに出したアプリはありません。意識してコードを読み書きしたのは、仕事で使いようになってからなので、実質経験は6ヶ月でしょうか。試験対策本は、国内で出版されている3冊を全て読みました。

Androidアプリケーション技術者認定試験 ベーシック対策実践問題集

Androidアプリケーション技術者認定試験 ベーシック対策実践問題集


徹底攻略 Androidアプリケーション技術者認定試験ベーシック問題集 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略 Androidアプリケーション技術者認定試験ベーシック問題集 (ITプロ/ITエンジニアのための徹底攻略)


携帯OS教科書 Androidアプリケーション技術者ベーシック

携帯OS教科書 Androidアプリケーション技術者ベーシック


どの参考書もやって良かったと思うけど、どれか1冊と言われたら3冊目の本かな。他の2冊に載っていないことが書かれていて、試験にも出題されていました。
試験の難易度は思ってたより難しかったですが、Androidアプリケーション開発の知識を体系的に学ぶには良い試験だと思います。3冊の対策本を読んでおけば出題範囲はほぼ網羅できますが、対策本に載っていなくて出題されたのは、タブの使い方でした。1問だけでしたが、気になる人はチェックしておいた方が良いかもしれません。

EclipseのAndroidビルドターゲットが表示されない

EclipseAndroidプロジェクトを作成するとき、プロジェクト名を入力したあと、Androidのビルドターゲットを一覧から選択しますが、インストールされているはずのAndroidビルドターゲットが表示されませんでした。AndroidSDKを再インストールしてもだめ。でも、

> android list targets

とするとちゃんと表示されます。
ググると、「ウインドウを最大化すると幸せになれます」的なことがたくさんヒットしますが、これは古いADT向けの解決方法であって、最近のADTでは幸せになれません(もちろん試した)。
長い時間悩んだ結果の解決方法は、

> eclipse.exe -clean

でした。
もうがっかりです。

MacOSX LionにJDKをインストールする

MacOSX(10.7) LionにJDKをインストールする方法をググってみると色々な方法がヒットしたり、Javaの実行環境と開発環境を混同しているような記述も見られるので、ここに書いておきます。
Javaの開発環境(JDK)のインストールは簡単。Terminalを起動して

$ javac

とし、あとはメッセージに従うだけ。
インストールしたら、

$ java

$ javac

でヘルプが表示されればOKです。

INSTALL_FAILED_INSUFFICIENT_STORAGE

Android4.0のエミュレータで開発をしていたら突然以下の例外が発生しました。

Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
Please check logcat output for more details.
Launch canceled!

Logcatを見ても良く分からない。
Google先生に聞いてみると、皆さん困っている様子だけど、やっぱり原因が良く分からない。解決方法も、エミュレータ起動時のオプションに

-partition-size 1024

を付けたら直ったとか、作成中のアプリケーションをアンインストールしたら直ったとか様々で、解決方法も良く分からない。サイズの大きなアプリケーションを作っているわけではないので、容量が足りないということもなさそう。
色々試してみた結果、私の場合は、AVDを作り直して、デフォルトでインストールされているアプリケーションを削除したら直りました(もしかしたらデフォルトアプリケーションの削除は関係ないかもしれない)。
一応、直ったけど、原因が良く分かりません。

Macでslコマンド

MacOSX(Lion)でもslコマンドが実行できます。slコマンドは、lsコマンドをミスって、slと打った時に出てくるジョークコマンドです。もちろん標準では入ってないので、以下のような感じでインストールします。

$ curl -O http://www.tkl.iis.u-tokyo.ac.jp/%7Etoyoda/sl/sl.tar
$ tar xvf sl.tar
$ cd sl
$ make
$ sudo cp -p sl /usr/local/bin/

これで、

$ sl

とすると、こんな感じで実行されます。
f:id:chitans:20111203234744p:image
一度実行されるとCTRL+C等で中断することはできませんので、通過するまで待たなければいけません。忙しいときこそ和みます。

Android4.0でCursor使用時に例外が発生する

Android4.0で、カーソルを使用しているActivityAからActivityBに遷移して、ハードウェアの戻るボタンでActivityAに戻ったとき以下の例外が発生しました。

java.lang.RuntimeException: Unable to resume activity
java.lang.IllegalStateException: trying to requery an already closed cursor

ActivityAで、

startManagingCursor(cursor);

としていると、カーソルの管理をAndroidに委譲できるが、これが原因となっているようです。ドキュメントを見ると確かにstartManagingCursor(cursor)は、deprecatedとなっていました。

startManagingCursor(cursor)

ドキュメントには、CursorLoader()を使えと書いてありますが、カーソルの管理をAndroidに委譲していたから、例外が発生しているので、素直に自前で管理してあげれば良いようです。なので、onDestroy()で

cursor.close();

としてやると解決しました。