
Android NDK, Revision 7の意訳です。完璧な自信はありませんので原文も一緒にご参照ください。
Android NDK, Revision 7 (2011年11月)リリース
Android Developer blogで報告があったようにたくさんの追加や改良がおこなわれたAndroid 4.0 プラットフォームでサポートされた新しい機能が含まれたNDK がリリースされました。
新機能
公式Android 4.0(API level 14)に追加された機能
- Khronos Group のOpenMAX AL™ 1.0.1 standard で規定されているネイティブマルチメディアAPIを追加
- 新しく追加された
<OMXAL/OpenMAXAL.h>と<OMXAL/OpenMAXAL_Android.h>ヘッダーは、Andriod特有のバッファキューインタフェースを利用して、ネイティブコードから直接マルチメディアアウトプットへの出力を API level 14 指定されているものに許可されます。 - Khronos Group OpenSL ES 1.0.1™ standard に規定されちえるネイティブオーディオAPIが更新
- API level 14上で、MP3, AAC, Vorbisなどの圧縮音源を PCM にデコード可能
- 詳細は、
docs/opensles/index.htmlかhttp://www.khronos.org/opensles/を確認しましょう CCacheサポートを追加- リビルドの高速化を実現
NDK_CCACHEという環境変数を定義し、ccache(ccache バイナリへのパス)を実行- 定義されていれば、NDK ビルドシステムはコンパイル時に自動的に CCache を利用します。
export NDK_CCACHE=ccache
注意: CCache はNDK には含まれていません。そのため、前もってインストールは準備しておく必要があります。
CCacheの詳細は、http://ccache.samba.orgをご覧ください - APP_ABI 設定のサポートを追加。以下の2行のうちどちらかのように Application.mk に記載することが今回のリリースから可能です。
APP_ABI := all APP_ABI := armeabi armeabi-v7a x86
APP_ABI が定義されていれば、コマンドラインから
ndk-buildを実行したときいに機能します。あなたのプロジェクトが ABIs をサポートしているかどうかをApplication.mkを変更することなしに、確認するために簡単な方法があります。
例えば以下のものです。ndk-build APP_ABI=all
Android.mkにLOCAL_CPP_FEATURESを追加。これは、C++機能(RTTIや 例外(Exceptions) )を利用している場合に宣言してください。これらの機能がプレビルドするモジュールに依存している場合は、最終的なリンク時に働きます。詳細は、docs/ANDROID-MK.htmlやdocs/CPLUSPLUS-SUPPORT.htmlをご覧ください。- ビルドコマンド利用時に短縮化されたソースファイルとオブジェクトへのパスが利用可能
- プロジェクトパスから
$NDK/ndk-buildを実行中にソース、オブジェクト、バイナリファイルへのパスは、ビルドコマンドに短縮パスを引き渡します。なぜなら、現在のディレクトリに関連さえるためです。これはたくさんのソースファイルがある場合のプロジェクトをビルドする場合に役立ちます。利用中のOSのコマンドラインの上限値をさけるために有効です。このふるまいは、プロジェクトのツリーからndk-buildを実行する場合に変更することができません。もしくは、環境変数NDK_PROJECT_PATHを特定のディレクトリに変更してください。
実験的な機能(Experimental features)
Windows ユーザ向け:ndk-build.cmdスクリプトを利用して、Cygwinなしで NDK ビルドが実現可能になります。このスクリプトは、オリジナルのndk-build スクリプトと同じ引数で利用可能できます。Windows NDK パッケージには、GNU Make や Awkやその他必要なツールが入っています。そのため、別途ビルドに必要なツールをインストールする必要はありません。
重要: ndk-gdb は Windows では利用できません。それには、まだ Cygwin が必要です。
この機能はまだ実験中です。そのため、利用した感想や項目のレポートを公式バグデータベースや公式フォーラムに伝えてください。
重要なバグ修正
- もし
APP_MODULESがApplication.mkに未定義の場合は、インポートされた共有ライブラリは現在の標準では target installation location ((libs/<abi>))にインストールされます。例えば、fooというトップレベルモジュールがbarモジュールにインポートされる場合、
libfoo.soとlibbar.soの両方ともインストール場所にコピーされます。以前は、libfoo.soのみがコピーされ、
barをAPP_MODULESにリスト追加しておかない限り、そのような動作でした。もし、既にAPP_MODULES定義されている場合は、動作は変わりません。 ndk-gdbは、MAIN intent filters のマルチカテゴリー指定で正しく動作しています。- スタティックライブラリのインポートは、正しく動作しています。例えば、トップレベルモジュールの
ndk-gdbがスタティックライブラリzooをインポートしたスタティックライブラリbarをインポートする場合、libfoo.soにはlibbar.aとlibzoo.aがリンクされます。
その他の変更点
docs/NATIVE-ACTIVITY.HTML: typo を修正。API levelの下限は 9 です。 8では native activities が動作しません。docs/STABLE-APIS.html:EGL でサポートされているAPIの記載の誤りを修正。download-toolchain-sources.sh: android.googlesource.comからのダウンロードツールチェインを更新。AOSPサーバの新しいURLを追加。gabi++というC++サポートランタイムを新規追加。詳細は、docs/CPLUSPLUS-SUPPORT.htmlをご覧ください。gnustl_sharedというC++サポートランタイムを新規追加。GNU libstdc++ v3 (GPLv3 license)の共有ライブラリバージョンと同等。詳細は、docs/CPLUSPLUS-SUPPORT.htmlをご覧ください。- STLport C++ runtimes の RTTIを追加サポート。但し、例外(exceptions)は未サポート。
LOCAL_CPP_EXTENSIONのマルチ拡張子を追加サポート。例えば、foo.cppandbar.cxxの両方ともC+++ソースとしてコンパイルしてくれます。以下のような宣言になります。LOCAL_CPP_EXTENSION := .cpp .cxx
- NDKで提供されている共有システムライブラリで要求されていないたくさんのシンボルを削除。これによって、non-stable ABIシンボル(例えば、いくつかのlibgcc.a でプラットフォーム毎に異なるもの)に依存したコードが偶発的に生成されることを防ぎます。
- EGLとOpenGLEL ヘッダーの拡張をサポート。注意:NDK ABIs は同等のライブラリで変更がないため、クライアントアプリ側でそれぞれの拡張に対して実行時にケアする必要があります。
拡張は、デバイスやGPUドライバに依存するため、プラットフォームが未対応の場合は動作しません。ヘッダーの定数やタイプの新しい追加を利用する場合は、
eglGetProcAddress()orglGetProcAddress()で確認する必要があります。新しくサポートされた拡張は以下です。- GLES 1.x
-
GL_OES_vertex_array_objectGL_OES_EGL_image_externalGL_APPLE_texture_2D_limited_npotGL_EXT_blend_minmaxGL_EXT_discard_framebufferGL_EXT_multi_draw_arraysGL_EXT_read_format_bgraGL_EXT_texture_filter_anisotropicGL_EXT_texture_format_BGRA8888GL_EXT_texture_lod_biasGL_IMG_read_formatGL_IMG_texture_compression_pvrtcGL_IMG_texture_env_enhanced_fixed_functionGL_IMG_user_clip_planeGL_IMG_multisampled_render_to_textureGL_NV_fenceGL_QCOM_driver_controlGL_QCOM_extended_getGL_QCOM_extended_get2GL_QCOM_perfmon_global_modeGL_QCOM_writeonly_renderingGL_QCOM_tiled_rendering
- GLES 2.0
-
GL_OES_element_index_uintGL_OES_get_program_binaryGL_OES_mapbufferGL_OES_packed_depth_stencilGL_OES_texture_3DGL_OES_texture_floatGL_OES_texture_float_linearGL_OES_texture_half_float_linearGL_OES_texture_npotGL_OES_vertex_array_objectGL_OES_EGL_image_externalGL_AMD_program_binary_Z400GL_EXT_blend_minmaxGL_EXT_discard_framebufferGL_EXT_multi_draw_arraysGL_EXT_read_format_bgraGL_EXT_texture_format_BGRA8888GL_EXT_texture_compression_dxt1GL_IMG_program_binaryGL_IMG_read_formatGL_IMG_shader_binaryGL_IMG_texture_compression_pvrtcGL_IMG_multisampled_render_to_textureGL_NV_coverage_sampleGL_NV_depth_nonlinearGL_QCOM_extended_getGL_QCOM_extended_get2GL_QCOM_writeonly_renderingGL_QCOM_tiled_rendering
- EGL
-
EGL_ANDROID_recordableEGL_NV_system_time


Android NDK r7 の更新情報 – http://andbrowser.com/develop...
“Android NDK r7 が2011年11月にリリースれました。その更新情報を記載しています。 | Bescottee” http://t.co/AE9r0STh
Android NDKr7 更新情報 thanks to http://t.co/wvWGqI3i
Android NDKの新機能。APP_ABIの解説。
“Android NDK r7 が2011年11月にリリースれました。その更新情報を記載しています。 | Bescottee” http://t.co/sx1GdVQY
“API level 14 ”