2012年4月10日火曜日

Android 4.0 ICS tunaとmaguroとtoroの違い

基本全部Galaxy Nexusの関連ファイルで、maguroがGSM/HSPA+、toroがCDMA/LTEのカスタマイズ。tunaがその共通部分。

http://groups.google.com/group/android-building/browse_thread/thread/ab34b1144a96bcd8

tuna+maguroでGSM/HSPA+のGalaxy Nexusということ。

toroの方が脂が乗っているので、ファイルもでかい。

ちなみに魚の名前は前からコードネームとして利用されており、エミュレータはgoldfish(金魚)、G1はtrout(マス)、Nexus Oneはmahimahi(シイラ)、Nexus Sはherring(ニシン)、XOOMはstingray(アカエイ)とのこと。

2012年4月9日月曜日

Mac OS X LionでAndroid ICSをビルドする

メモ。

とにかくはまるしわからない。何がいけなかもわからない。
http://blog.sola-dolphin-1.net/archives/4059847.html
ここらへんを参考に。

途中ビルドにこけて一番はまったところは
https://groups.google.com/forum/#!topic/android-building/yd8I2aMbZZE
のlibbccを少し前のバージョンに戻すことで解決。

結局ビルドしたROMはカーネルを再コンパイルしないと上手く動かないそうなので、カーネルコンパイル中。

その他はまったら試すこと

  1. エミュレーターをコンパイルしない
    • 実機で確認するのであれば、どうせエミュレーターはいらないだろうってことで、external/qemu/Android.mkの中身をざっくりコメントアウト。行数はあまりないので、楽々コメントアウトできます。
  2. libSDLをがんばってインストールしてみる
    • libSDLの1.2.15では、Lionでのビルドができるようになっているので、ちゃんとやればインストールできます。
    • macportsからインストールしようとして、glib2でこける場合は、sudo port clean glib2で一度消してから、再インストールしましょう。
    • さらにそのあと、libelfをdeactivateしろと言われる場合には、sudo port deactivate libelfで一旦無効にして、正常にインストールしてからsudo port activate libelfで元に戻せます
  3. 何回かコンパイルしてみる
    • 理由はよくわかりませんが、実際のROMを作るところ以外でこけている場合は、分散ビルドでビルドがいろんな順番で進むため(?)何度もコンパイルしているといつの間にかROMができています。もしかしたら自分のその間の試行錯誤でうまくいったのかもしれませんが。。
    • とりあえず、成功した人は最後までやめなかった人だ、ということなので。
    • 少なくとも自分は成功しているので、Mac OS X LionでAndroid ICSをビルドすることは不可能ではありません

2012年4月6日金曜日

Android 4.0 でNavigationBarが表示されているか判定する方法

ICSのNavigationBarが画面内に表示されているかどうかを取得する方法が、あんまりみつからなかったのでメモ

Activityなどのなかで、

public static boolean isNavigationBarVisible(){
    return !ViewConfigration.get(this).hasPermanentMenuKey();
}

でとれます。

ViewConfigurationはstaticメソッドのgetにContextを引数として渡すことでインスタンスを取得でき、そのhasPermanentMenuKeyメソッドは、端末にビルトインされたメニューボタンがあるかどうかを返します。

なので、その否定がNavigationBarの有無と一致します。