AndroidアプリをSDカードにインストール可能にする要点だけ

Android 2.2 “Froyo” からandroidmanifest.xmlで設定することでSDカードへのインストール、移動が可能になった デフォルト設定は「端末のみ可」なので注意 <manifest>の要素にandroid:installLocationを指定する。 auto:通常端末内。端末容量が足りないときにSDカードへ。端末とSDカード間で移動可能 internalOnly:端末内のみインストール可。android:installLocationを設定しないときのデフォルト値 preferInternal:SDカードに優先的にインストール。SDカードの容量が足りないときに端末インストール。事後インストール可。 アプリがSDカードにあるときも各種データは端末内。 <追記> つまり、アプリ側が対応してないと、SDカードに移動することは無理ってことですね。rootedな環境とかは知らない。

iCloudで訪れたiOSの「終わり」

先日のWWDC 2011で事前の予告通り、Mobile meの後継になるクラウドサービスとなる”iCloud”が発表された。 そして発表のKeynoteの中で語られたのは、iCloudは単なるネットサービスの枠を越えて、Appleの戦略上とても重要な位置を占めるものということだった。 「10年前にAppleはデジタルハブというビジョンを掲げた。Macが様々なデジタル機器、メディアの中心になる」とジョブズ氏は語った。当時はまだやっとADSLが普及し出した頃だったしiPhoneみたいな小型の機器に一昔前のスーパーコンピューターに匹敵するみたいな性能が搭載されるなんてまだまだ先の話と思われた。レインポーiMacの発表はぶつぶつ切れるアナログモデム経由で見たんだった。

Eclipseが起動しなくなったときの対応の要点だけ

Androidアプリの開発で使うEclipseだけど、作業途中でハングアップ、強制終了後に再起動しても起動中の”building workspace…”あたりで起動がハングしてしまうことがあって、その対応メモ。 Eclipseの強制終了後、起動しなくなる問題の一つはEclipseの一時ファイル.snapファイルというやつが壊れている事が原因みたい。 なので、このファイルを削除してしまえばOK。こんな感じ: rm path/to/workspace/.metadata/.plugins/org.eclipse.core.resources/.snap rm path/to/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/*/.*.snap これはワークスペースの変更を記録しているファイルで、強制終了後とかに作業状態の復帰とかに使われるものみたい。これが壊れていると復旧途中で止まってしまうということっぽい。 ということで削除後、Eclipseを普通に起動すればきちんと起動するはず。もしくは.metadata/.logを見ると、何かしらエラーログが記録されているはずなのでこれをチェック。

Android Widgetのライフサイクルについて要点だけ

Android App Widgetのライフサイクルイベントは4つ。公式ドキュメント読んだだけではいまいち分かりづらかったので調べてみたメモ。 (1)onEnabled(Context context) 一つ目のウィジェットがホームに追加されるとき。 (2)onUpdate(Context context, AppWidgetmanager appWidgetManager, int appWidgetIds) ウィジェットがホームに追加されるとき。一つ目のときはonEnabledの直後に呼ばれる。2つ目以降(=同じウィジェットが既にホームに置かれている場合)はこのonUpdateだけがコールされる。 appWidgetIdsには、アップデート対象のウィジェットのIDが入ってる。なので、widgetの追加時には基本的に1つのIDの配列で、定期更新時には2つ以上のIDが入ってる可能性があるっていうことみたい。 (3)onDeleted(Context context, int appWidgetIds) ウィジェットがホームから削除されるとき。他にウィジェットが残っているとき(=同じウィジェットがまだホームに置かれている場合)はこのonDeletedだけが呼ばれる。 (4)onDisabled(Context context) ホームから最後のウィジェットが削除されるとき、onDeletedの直後にコールされる。 もういっこonReceivedは上記3つが結局コールされるので、通常はあんまり気にしなくて大丈夫みたい。以下4つ以外のBroadcastをなんとかしたい時にきにすれば良い。 ACTION_APPWIDGET_DELETED→onDeleted ACTION_APPWIDGET_DISABLED→onDisabled ACTION_APPWIDGET_ENABLED→onEnabled ACTION_APPWIDGET_UPDATE→onUpdate

Xcode 4のシングルイウンドウUIに垣間見るOSX Lionの本気度

まもなくAppleの開発者向けイベント、WWDC 2011が6月6日(日本時間7日深夜)から10日の予定で開催される。注目はもちろんiPhone 5、iOS 5が発表されるのかというのが一つとしてはあるけれど、もう一つの注目ポイントとしてMac OSXのメジャーバージョンアップ、Mac OSX Lion (10.7) の発表がある。 Mac OSX Lionは2010年の10月に、その概要が発表された。特徴は、iPadに見られるようなフルスクリーンUIをOSXの世界にも導入した「Launchpad」や「フルスクリーンアプリケーション」。これは単純にiPhone、iPadの人気にOSXが便乗しようとしているだけにも見えるけれど、Appleはこの大胆な変更に本気で取り組んでいて、これでiOSのエコシステムをOSXの世界にも広げようとしているように見える。

Titanium Mobileモジュール開発ドキュメント間違いの要点だけ

JavaScriptを使ってワンソースでAndroidとiOSのクロスプラットフォームができるとして話題なTitanium Mobileのモジュールの作り方を調べた。だけどどうも公式ドキュメントが違ってる(古い?)らしくてむしゃくしゃしたので、ついカッとなった部分のメモ。確かめたのはTitanium Mobile 1.6.2とXcode 4とiOS SDK 4.3です。基本的には以下のドキュメントに沿います。 参照:Module Devloper Guide for iOS(Last edited on May 12, 2011のもの) 要点だけ書くとドキュメントで違っている/足りていない記述が2カ所あることに注意: できたモジュール(zip)のコピー先はLibraryじゃなくてアプリのルートディレクトリ Titanium Mobile 1.6.2(Titanium Developer 1.2.2?)とiOS 4.3の組み合わせではLog/Info系の出力がTitanium Developerのコンソールに出ません。Xcodeで直接実行するか、iOS 4.2以前を使えば出る。 markdownモジュールはmarkdown2モジュールに変更されているのでbuild.pyの修正が必要。公式どおりにやるとモジュールのビルド過程でimport errorが出る。 もう少し詳しい手順は続きに: