EclipseのAndroidビルドターゲットが表示されない
EclipseでAndroidプロジェクトを作成するとき、プロジェクト名を入力したあと、Androidのビルドターゲットを一覧から選択しますが、インストールされているはずのAndroidビルドターゲットが表示されませんでした。AndroidSDKを再インストールしてもだめ。でも、
> android list targets
とするとちゃんと表示されます。
ググると、「ウインドウを最大化すると幸せになれます」的なことがたくさんヒットしますが、これは古いADT向けの解決方法であって、最近のADTでは幸せになれません(もちろん試した)。
長い時間悩んだ結果の解決方法は、
> eclipse.exe -clean
でした。
もうがっかりです。
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
とすると、こんな感じで実行されます。
一度実行されると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となっていました。
ドキュメントには、CursorLoader()を使えと書いてありますが、カーソルの管理をAndroidに委譲していたから、例外が発生しているので、素直に自前で管理してあげれば良いようです。なので、onDestroy()で
cursor.close();
としてやると解決しました。