Android NDK rev5 (Gingerbread) の変更点まとめ

Android 2.3(Gingerbread) SDKの提供に伴い、Android NDK Revision 5がリリースされました。Rev5では特にゲームのような、よりネイティブコードを使用するアプリ為のサポートが強化されています。

大きな変更点としては、下記のようなものが挙げられます。

  • イベント/オーディオ/グラフィック/ウィンドウマネジメント/アセット/ストレージに対して、直接ネイティブにアクセス可能になったこと
  • ネイティブコード内にAndroidアプリケーションのライフサイクルの概念を導入したこと(NativeActivityクラスの導入)

主なAndroid NDK Rev5の変更点

  • ネイティブコード内でAndroidアプリケーションライフサイクルの実装をサポート
  • 下記をネイティブでサポート
    • 入力サブシステム(キーボード、タッチスクリーン)
    • センサデータへのアクセス(加速計、コンパス、ジャイロなど)
    • 入力やセンサイベントを待ち受けるためのイベントループAPI
    • ウィンドウ及びサーフェイスサブシステム
    • エフェクトの制御を含む、再生及び録音をサポートするOpenSL ES標準のオーディオAPI
    • .apkファイル中にパッケージされたアセットへのアクセス手段
  • 新しいツールチェイン(GCC4.4.3ベース):よりよいコードを生成できる、./configureとmakeでビルドしたい人向けのスタンドアロンのクロスコンパイラ。詳細は docs/STANDALONE-TOOLCHAIN.htmlを参照。GCC4.4.0のバイナリは依然として提供されるが、4.2.1のバイナリは除外された。
  • プリビルドされたスタティック&共有ライブラリのサポートの追加(docs/PREBUILTS.html)
  • サードパーティーモジュールをより簡単に作成&再利用するための、モジュールのインポート・エクスポートのサポート(docs/IMPORT-MODULE.htmlに理由を説明)
  • ヘルパーモジュールとして、STLportベースのデフォルトC++ STL実装の提供。スタティックまたは共有ライブラリとして使用可能(詳細と使用例は sources/android/stlport/README を参照)。STLportのプリビルドバイナリ(スタティックまたは共有)とGNU libstdc++(スタティックのみ)も併せて提供されます。C++例外とRTTIはデフォルトSTL実装では提供されません。さらなる情報は、docs/CPLUSPLUS-SUPPORT.HTMLをご覧下さい。
  • cpufeaturesヘルパーライブラリの改良:CPUタイプのレポートの改良(いくつかのデバイスで実際にはARMv6にもかかわらず、ARMv7のCPUとして報告されている)。マーケットにアップロードする際にはこのライブラリを使用してリビルドすることを推奨。
  • OpenGLのテクスチャー及びサービスを生成・管理するためのEGLライブラリの追加
  • ネイティブアクティビティの記述方法を示した新しいサンプルアプリケーション: native-plasmaとnative-activity
  • 多くのバグフィックスと他の少しの改良。詳細は docs/CHANGES.htmlを参照。

文責:技術部 瀬戸 直喜(前・日本Androidの会四国支部長/情報セキュリティスペシャリスト)