このページでは、リリースされたすべての安定版 NDK の変更点に関する情報を提供しています。最新の安定版 NDK または入手可能なベータ版をダウンロードするには、NDK のダウンロードのページをご覧ください。
詳しくは、android-ndk-announce Google グループをご覧ください。また、配信登録すると、リリースのお知らせを受け取ることもできます。
Android NDK r29(2025 年 10 月)
変更履歴- ダウンロード
-
- このリリースはこちらからダウンロードできます。
Android NDK r28(2025 年 2 月)
変更履歴- ダウンロード
-
- このリリースはこちらからダウンロードできます。
Android NDK r27 LTS(2024 年 7 月)
変更履歴- ダウンロード
-
- このリリースはこちらからダウンロードできます。
Android NDK r26 LTS(2023 年 9 月)
変更履歴- ダウンロード
-
- このリリースはこちらからダウンロードできます。
- お知らせ
-
- KitKat(API 19、20)のサポートは終了しました。
Android NDK r25 LTS(2022 年 7 月)
変更履歴- ダウンロード
-
- このリリースはこちらからダウンロードできます。
- お知らせ
-
- Android 13 API が含まれています。
- LLVM 14 の開発に基づき、LLVM を clang-r450784d に更新しました。
Android NDK r24(2022 年 3 月)
変更履歴- ダウンロード
-
- このリリースはこちらからダウンロードできます。
- お知らせ
-
-
GNU アセンブラ(GAS)が削除されました。
-fno-integrated-asを使用してビルドした場合は、そのフラグを削除する必要があります。アセンブリを LLVM 対応にするおすすめの方法については、Clang の移行に関する注意事項についての説明 をご覧ください。 - GDB が削除されました。代わりに LLDB を使用してください。ndk-gdb はデフォルトで LLDB を使用し、Android Studio でこれまでサポートされているのは LLDB のみです。
- Jelly Bean(API 16、17、18)のサポートは終了しました。NDK でサポートされる最小 OS は KitKat(API レベル 19)です。
- Neon 以外のデバイスのサポートは終了しました。Neon をサポートしていないのはごく少数の非常に古いデバイスであるため、ほとんどのアプリではパフォーマンスの向上以外の変化は見られません。
- RenderScript ビルドのサポートが削除されました。Android 12 では RenderScript のサポートが終了しました。RenderScript からのアプリの移行を完了していない場合は、NDK r23 LTS を使用できます。
-
GNU アセンブラ(GAS)が削除されました。
Android NDK r23 LTS(2021 年 8 月)
変更履歴- ダウンロード
-
- このリリースのダウンロードはこちらで入手できます。
- お知らせ
-
-
GNU アセンブラ(GAS)を除く GNU binutils が削除されました。GAS は次回のリリースで削除される予定です。
-fno-integrated-asを使用してビルドしている場合に、このフラグの削除を妨げているものがあれば、バグを報告してください。 -
GDB のサポートは終了しました。GDB は次回のリリースで削除される予定です。代わりに LLDB を使用してください。なお、
ndk-gdbはデフォルトで LLDB を使用します。 - NDK r23 は、Neon 以外をサポートする最後のリリースです。NDK r24 以降、sysroot の armeabi-v7a ライブラリは、Neon を使用してビルドされます。Neon をサポートしていないのはごく少数の非常に古いデバイスであるため、ほとんどのアプリではパフォーマンスの向上以外の変化は見られません。
- Jelly Bean(API 16、17、18)は、次回の NDK リリースではサポートされません。NDK r24 でサポートされる最小 OS は KitKat(API レベル 19)になります。
-
GNU アセンブラ(GAS)を除く GNU binutils が削除されました。GAS は次回のリリースで削除される予定です。
Android NDK r22b(2021 年 3 月)
変更履歴- ダウンロード
-
- このリリースのダウンロードはこちらで入手できます。
- お知らせ
-
-
GNU binutils はサポートが終了し、今後の NDK リリースで削除される予定です。GNU アセンブラ(
as)も削除されます。-fno-integrated-asを使用してビルドしている場合に、このフラグの削除を妨げているものがあれば、バグを報告してください。asを直接使用している場合は、代わりにclangを使用してください。 - LLD がデフォルトのリンカーになりました。 ndk-build と CMake ツールチェーン ファイルも llvm-ar と llvm-strip を使用するように変更されました。
- ndk-gdb はデバッガとして lldb を使用するようになりました。gdb はサポートが終了し、今後のリリースで削除される予定です。gdb にフォールバックするには、--no-lldb オプションを使用します。その場合は、ぜひバグを報告して、lldb を使用できない理由をお知らせください。
-
std::filesystemのサポートが追加されました。既知の問題は次の 2 つです。
-
GNU binutils はサポートが終了し、今後の NDK リリースで削除される予定です。GNU アセンブラ(
Android NDK r21e LTS(2021 年 1 月)
変更履歴- ダウンロード
-
- このリリースのダウンロードはこちらで入手できます。
- お知らせ
-
-
32 ビット Windows のサポートは終了しました。これは、ほとんどのユーザーには影響しません。32 ビット Windows から NDK アプリをビルドする必要がある場合は、引き続き NDK r20 を使用してください。
Android デベロッパー ツールでのこの変更の詳細については、こちらのブログ投稿をご覧ください。
-
LLD がテストで使用できるようになりました。AOSP はデフォルトで LLD を使用するように切り替わりました。NDK も同様に更新されます(時期は未定)。リンク時に
-fuse-ld=lldを渡して、アプリで LLD をテストしてください。なお、不具合 843 は、LLD を binutils の strip および objcopy と併用するビルドに影響しますが、llvm-strip および llvm-objcopy と併用する場合には影響しません。 -
以前のツールチェーンのインストールパスは、今後のリリースで削除される予定です。これらのパスは、NDK r19 でサポートが終了しており、NDK のかなりの領域を占有しています。削除されるパスは次のとおりです。
- platforms
- sources/cxx-stl
- sysroot
- toolchains(toolchains/llvm を除く)
make_standalone_toolchain.pyのユーザーも影響を受けません(ただし、このスクリプトは r19 以降では不要)。以前のツールチェーン レイアウトからの移行については、お使いの NDK バージョンの ビルドシステム管理者ガイド をご覧ください。 - 2019 年 8 月以降に、Play ストアで APK をアップロードする際には、64 ビット対応が必須になります。そのときになって慌てないように今のうちから移植の準備を始めてください。詳細については、こちらのブログ投稿をご覧ください。
- ノータリゼーションを受けた署名済みの macOS App Bundle は、Wiki と Google のウェブサイトからダウンロードできます。バンドルのみが RPATH を使用してノータリゼーションを受けることができるため、macOS 用の従来の NDK パッケージがノータリゼーションを受けることはできません。App Bundle には Android Studio との互換性がなくなるようなレイアウト変更が必要なため、SDK では引き続き従来のパッケージを使用します。SDK Manager を介してダウンロードした場合、NDK は隔離されず、現在 Gatekeeper によって許可されています。現在 macOS の NDK を入手するには、SDK Manager を使用するのが最も信頼できる方法です。
-
Android NDK r20b(2019 年 6 月)
変更履歴- ダウンロード
-
- このリリースのダウンロードはこちらで入手できます。
- お知らせ
Android NDK r19c(2019 年 1 月)
変更履歴- ダウンロード
-
- このリリースのダウンロードはこちらで入手できます。
- お知らせ
-
-
デベロッパーは LLD でアプリのテストを開始してください。AOSP はデフォルトで LLD を使用するように切り替わりました。NDK は次期リリースからデフォルトで LLD を使用します。リリース サイクルを通して LLD に大きな問題がなければ、BFD と Gold は削除されます(r21 を予定)。リンク時に
-fuse-ld=lldを渡して、アプリで LLD をテストしてください。注: LLD は現在、Windows の圧縮シンボルをサポートしていません。詳しくは、不具合 888 をご覧ください。Clang も Windows で圧縮シンボルを生成できませんが、これは Darwin や Linux から生成したアーティファクトを使用する際に問題になる場合があります。 - 2019 年 8 月以降に、Play ストアで APK をアップロードする際には、64 ビット対応が必須になります。そのときになって慌てないように今のうちから移植の準備を始めてください。詳細については、こちらのブログ投稿をご覧ください。
-
不具合 780: スタンドアロン ツールチェーンが不要になりました。Clang、Binutils、sysroot などといったツールチェーンはすべて
$NDK/toolchains/llvm/prebuilt/<host-tag>にインストールされ、Clang が自動的にそれらを見つけます。API 26 ARM 用のスタンドアロン ツールチェーンを作成する代わりに、NDK から直接コンパイラを呼び出します。 r19 では、ビルドシステムが新しいレイアウトに適応しやすいよう、ツールチェーンが従来のパスにもインストールされます。r20 では従来のパスは削除されます。$ $NDK/toolchains/llvm/prebuilt/
/bin/armv7a-linux-androideabi26-clang++ src.cpp make_standalone_toolchain.pyスクリプトは削除されません。今では不要となったこのスクリプトは、上記の情報を含む警告を発しますが、既存のワークフローを維持するため残されています。 ndk-build、CMake、またはスタンドアロン ツールチェーンを使用している場合、ワークフローに変更はありません。この変更点は、サードパーティのビルドシステムの管理に関係するものであり、その場合は Android 固有のコードを一部削除できるようになります。詳しくは、Build System Maintainers Guide をご覧ください。 - ndk-depends は削除されました。Google は、古い Android バージョンにおけるネイティブ ライブラリのロードの問題に対するソリューションとして ReLinker の方が優れていると考えています。
- 不具合 862: Clang にリダイレクトした GCC ラッパー スクリプトが削除されました。これらのスクリプトの機能は不要と判断されました。
-
デベロッパーは LLD でアプリのテストを開始してください。AOSP はデフォルトで LLD を使用するように切り替わりました。NDK は次期リリースからデフォルトで LLD を使用します。リリース サイクルを通して LLD に大きな問題がなければ、BFD と Gold は削除されます(r21 を予定)。リンク時に
Android NDK r18b(2018 年 9 月)
変更履歴- ダウンロード
-
- このリリースのダウンロードはこちらで入手できます。
- お知らせ
-
- GCC は削除されました。
-
LLD がテストで使用できるようになりました。AOSP はデフォルトで LLD を使用するように切り替え中であり、NDK も同様に更新されます(時期は未定)。リンク時に
-fuse-ld=lldを渡して、アプリで LLD をテストしてください。 - gnustl、gabi++、stlport は削除されました。
- ICS(android-14 と android-15)に対するサポートは終了しました。実行可能ファイルを使用するアプリは、PIE 実行可能ファイルと非 PIE 実行可能ファイルの両方を提供する必要がなくなりました。
- 2019 年 8 月以降に、Play ストアで APK をアップロードする際には、64 ビット対応が必須になります。そのときになって慌てないように今のうちから移植の準備を始めてください。詳細については、こちらのブログ投稿をご覧ください。
Android NDK r17c(2018 年 6 月)
変更履歴- ダウンロード
-
- このリリースのダウンロードはこちらで入手できます。
- お知らせ
-
- GCC はサポートされなくなりました。NDK r18 で削除される予定です。
-
libc++ が CMake とスタンドアロン ツールチェーンのデフォルト STL になりました。別の STL を手動で選択している場合は、
libc++に移行することを強くおすすめします。ndk-build は依然としてデフォルトで STL なしに設定されることに注意してください。詳しくは、こちらのブログ投稿をご覧ください。 - gnustl と stlport は非推奨になっており、NDK r18 で削除される予定です。
- ARMv5(armeabi)、MIPS、MIPS64 に対するサポートは終了しました。 これらの ABI をビルドしようとすると、エラーになります。
- ICS(android-14 と android-15)に対するサポートは r18 から削除されます。
- 2019 年 8 月以降に、Play ストアで APK をアップロードする際には、64 ビット対応が必須になります。そのときになって慌てないように今のうちから移植の準備を始めてください。詳細については、こちらのブログ投稿をご覧ください。
Android NDK r16b(2017 年 12 月)
変更履歴- ダウンロード
- このリリースはこちらからダウンロードできます。
- お知らせ
-
- 非推奨のヘッダーが削除されました。 統合ヘッダーは、単に「ヘッダー」となりました。移行に関するヒントについては、統合ヘッダー移行メモをご覧ください。
- GCC はサポートされなくなりました。今すぐ NDK から削除されるわけではありませんが、バックポートを受け取らなくなります。gnustl の一部がまだ Clang と互換性がないため、libc++ がデフォルトとして十分安定するまでは GCC を削除することができません。r18 で他の STL が削除されるのに合わせて削除されます。
libc++はベータ版を卒業し、NDK の推奨 STL になりました。r17 以降では、libc++が CMake とスタンドアロン ツールチェーンのデフォルト STL になります。別の STL を手動で選択している場合は、libc++に移行することを強くおすすめします。詳しくは、こちらのブログ投稿をご覧ください。- ARM5(armeabi)、MIPS、MIPS64 に対するサポートは非推奨になりました。これらは、ndk-build においてデフォルトではビルドされなくなりますが、明示的に指定すればビルドできます。「all」、「all32」、「all64」に包含される予定です。それぞれに対するサポートは r17 では終了します。これらの ABI を対象にしている場合は、CMake と ndk-build の両方で警告が発行されます。
- API
-
Android 8.1 用のネイティブ API を追加しました。API について詳しくは、ネイティブ API の概要をご覧ください。
このリリースの新機能と変更点について詳しくは、こちらの変更履歴をご覧ください。
Android NDK r15c(2017 年 7 月)
変更履歴- ダウンロード
- このリリースはこちらからダウンロードできます。
- お知らせ
-
- 統合ヘッダーがデフォルトで有効になります。これらのヘッダーの使用方法については、統一ヘッダーをご覧ください。
- GCC はサポートされなくなりました。まだ NDK から削除されていませんが、バックポートを受け取らなくなっています。 gnustl の一部がまだ Clang と互換性がないため、libc++ がデフォルトとして十分安定するまでは GCC を削除することができません。
- Android 2.3(
android-9)はサポートされなくなりました。現在、NDK の最小 API レベル ターゲットは Android 4.0(android-14)です。APP_PLATFORMがandroid-14より低く設定されている場合は、代わりにandroid-14が使用されます。 - NDK の CMake が、YASM で作成されたアセンブリ コードのビルドをサポートするようになり、x86 および x86-64 のアーキテクチャ上で実行できるようになりました。詳しくは、アセンブリ コードのビルドをご覧ください。
注: 非推奨ヘッダーは次回のリリースで削除される予定です。これらのヘッダーで問題が発生した場合は、バグとして報告してください。
移行に関するヒントについては、統合ヘッダー移行メモをご覧ください。
- API
-
Android 8.0 用のネイティブ API を追加しました。API について詳しくは、ネイティブ API の概要をご覧ください。
このリリースの新機能と変更点について詳しくは、こちらの変更履歴をご覧ください。
Android NDK r14b(2017 年 3 月)
変更履歴- ダウンロード
- このリリースはこちらからダウンロードできます。
- お知らせ
-
- 統合ヘッダー: このリリースでは、Android プラットフォームと同期し、常に最新の正確な状態を保つプラットフォーム ヘッダーが導入されています。ヘッダーのみのバグ修正がすべての API レベルに反映されるようになりました。統合ヘッダーの導入によって、次のように、以前の NDK リリースの矛盾が修正されます。
- M と N 内のヘッダーが実際には L 用のヘッダーでした。
- ヘッダー内の関数宣言がプラットフォーム レベルと正確に一致していませんでした。ヘッダーで存在しない関数が宣言されていたり、使用可能な関数の宣言に失敗したりしていました。
- 古い API レベルの一部に新しい API レベルの不明な定数または不正確な定数が含まれていました。
これらの新しい統合ヘッダーはデフォルトで有効になりません。これらのヘッダーを有効にして使用する方法については、統合ヘッダーをご覧ください。
- GCC のサポート終了: このリリースで、GCC に対する積極的なサポートが終了します。GCC は今すぐ NDK から削除されるわけではありませんが、バックポートを受け取らなくなります。gnustl の一部がまだ Clang と互換性がないため、libc++ がデフォルトとして十分安定するまで GCC は完全に削除されません。
- 統合ヘッダー: このリリースでは、Android プラットフォームと同期し、常に最新の正確な状態を保つプラットフォーム ヘッダーが導入されています。ヘッダーのみのバグ修正がすべての API レベルに反映されるようになりました。統合ヘッダーの導入によって、次のように、以前の NDK リリースの矛盾が修正されます。
このリリースの新機能と変更点について詳しくは、こちらの変更履歴をご覧ください。
Android NDK r13b(2016 年 10 月)
- ダウンロード
- このリリースのダウンロードはこちらにアーカイブされています。
- お知らせ
-
- GCC はサポートされなくなりました。今すぐ NDK から削除されるわけではありませんが、バックポートを受け取らなくなります。gnustl の一部がまだ Clang と互換性がないため、libc++ がデフォルトとして十分安定するまでは GCC を削除することができません。GCC は libc++ が安定した時点で削除されます。
- Android 用の CPU プロファイラである simpleperf が追加されました。
- r13b
-
-
__cxa_bad_castの欠落に対する追加修正を行いました。
-
- NDK
-
NDK_TOOLCHAIN_VERSIONはデフォルトで Clang に設定されるようになりました。- libc++ は r263688 にアップデートされました。
- (ほぼ)クリーンなアップストリームにリセットされています。これにより、さまざまなバグが解消されるはずですが、デフォルトとして推奨するには libandroid_support をさらにクリーンアップする必要があります。
-
make-standalone-toolchain.shは、ツールの Python バージョンに対するラッパーになりました。動作がいくつか変更されています。詳しくは、コミット メッセージをご覧ください。 - サポートされていない ABI 用のライブラリが削除されました(mips64r2、mips32r6、mips32r2、x32)。削除されたライブラリが他にもあるかもしれません。
- ARM android-21+ 用の静的な実行可能ファイルのビルドのリンク時点で atexit が失われる crtbegin_static.o の不具合が解決されました(不具合 132)。
- build/cmake/android.toolchain.cmake に CMake ツールチェーン ファイルを追加しました。
- 既知の問題
-
- このリストは、未解決のすべてのバグを網羅したものではありません。
- libc++ と GCC を使用したスタンドアロン ツールチェーンが動作しません。これは、GCC のバグである可能性があります。詳しくは、コミット メッセージをご覧ください。
- android-24 が存在するにもかかわらず、Marshmallow と N 用の Bionic のヘッダーとライブラリがまだ公開されていません。これらのプラットフォームは、現在も Lollipop のヘッダーとライブラリです(r11 からのリグレッションではありません)。
- RenderScript ツールが存在しません(r11 からのリグレッションではありません)(不具合 7)。
Android NDK r12b(2016 年 6 月)
- ダウンロード
- このリリースのダウンロードはこちらにアーカイブされています。
- お知らせ
- r13 では、
ndk-buildコマンドはデフォルトで Clang を使用します。今後のリリースで、GCC が削除されます。 make-standalone-toolchain.shスクリプトは r13 で削除される予定です。make_standalone_toolchain.pyがニーズに合っていることをご確認ください。- 問題が発生した場合は、GitHub にご報告ください。
ndk-gdb.pyを修正しました(不具合 118)。-
無効な列挙値を含まないように
NdkCameraMetadataTags.hをアップデートしました。 - ndk-build には、libc++ を使用する静的ライブラリについての誤った警告を出すバグがありましたが、このバグは修正されました。この変更について詳しくは、こちらのコメントをご覧ください。
- android-24 で OpenSLES のヘッダーを更新しました。
- NDK
- armeabi-v7a-hard ABI のサポートを廃止しました。詳しくは、説明をご覧ください。
- Gingerbread 以前のプラットフォーム レベルで、すべての sysroot を削除しました。r11 で sysroot のサポートを廃止しましたが、実際には削除していませんでした。
- ARM32 で c++_shared を使用する際に、例外処理がほぼ機能するようになりました。unwinder が、libc++ そのものではなく、リンクされた各オブジェクトにリンクされるようになります。例外処理について詳しくは、既知の問題をご覧ください。
- デフォルトのコンパイラ フラグが削除されました(不具合 27)。
- これらの変更の詳細については、こちらの変更点一覧をご覧ください。
- スタンドアロン ツールチェーンの Python 実装である
build/tools/make_standalone_toolchain.pyを追加しました。- Windows ユーザーがこの機能を使用する際に Cygwin が必要なくなりました。
- bash フレーバーは r13 で削除する予定のため、新しいバージョンを今すぐお試しください。
- Clang デバッグビルドで、
-fno-limit-debug-infoがデフォルトで有効になりました。この変更により、LLDB を使用したデバッグの操作性が向上します。 --build-idがデフォルトで有効になりました。- ネイティブ障害レポートにビルド ID が表示されるので、実行していたコードのバージョンを簡単に確認できます。
- 今後、
NDK_USE_CYGPATHが libgcc で問題を引き起こすことがなくなります(Android の不具合 195486)。 -Wl、--warn-shared-textrel、-Wl,--fatal-warningsの各オプションがデフォルトで有効になりました。共有のテキスト リロケーションがある場合、Android 6.0(API レベル 23)以降ではアプリを読み込むことができません。64 ビットアプリでは、テキスト リロケーションはこれまで許可されていませんでした。- プリコンパイルされたヘッダーの動作を改善しました (不具合 14、不具合 16)。
- アクセスできない ARM(Thumb を除く)STL ライブラリを削除しました。
- android-24 に Vulkan のサポートを追加しました。
- android-24 に Choreographer API を追加しました。
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED以上のデバイス用のlibcamera2API を追加しました。詳しくは、カメラの特性をご覧ください。- Clang
- Clang は、3.8svn(r256229、ビルド 2812033)に更新されました。
- 32 ビット Windows パッケージ内の
clang.exe実行可能ファイルとclang++.exe実行可能ファイルは実際には 64 ビットです。32 ビット実行可能ファイルはclang_32.exeという名前です。
今回、 - 32 ビット Windows パッケージ内の
- GCC
- ChromeOS GCC @ google/gcc-4_9 r227810 と同期しました。
- カバレッジ サニタイザー パッチを ToT(r231296)から移植しました。
ifuncsを使用しないように libatomic を修正しました(不具合 31)。- Binutils
- 情報メッセージ「Erratum 843419 found and fixed」が表示されないようにしました。
- サイズの大きい arm32 バイナリにリンクすると発生する内部リンカーエラーを修正するために、オプション
--long-pltを導入しました。 - AArch64 のランタイム スタブの誤りを修正しました。この誤りにより、DSO のサイズが非常に大きい場合に、ジャンプ先アドレスが正しく計算されていませんでした。
- 旧リリースの Android での動的リンカーのバグを回避するために、デフォルトのオプション
--no-apply-dynamicが導入されました。 - Clang で
dynamic_castの NDK r11 KI が正常に機能しませんでした。x86、stlport_static、最適化機能を修正しました。 - GDB
- GDB 7.11 にアップデートしました。詳しくは、GDB ニュースをご覧ください。
ndk-gdb.pyのバグをいくつか修正しました。- 既知の問題
- x86 ASAN は現在も機能しません。詳しくは、こちらの変更リストに関するディスカッションをご覧ください。
- Android 2.3(API レベル 9)または Android 4.0(API レベル 14)の ARM では、
c++_sharedを使用した例外のアンワインドが現在も機能しません。 - android-24 があるにもかかわらず、Android 6.0(API レベル 23)と Android 7.0(API レベル 24)では、Bionic のヘッダーとライブラリがまだ公開されていません。 これらのプラットフォームは、現在も Android 5.0(API レベル 21)のヘッダーとライブラリです(r11 からのリグレッションではありません)。
- RenderScript ツールがありません(r11 からの回帰ではありません) (不具合 7)。
- この変更履歴は、未解決のすべてのバグを網羅するものではありません。
__thread が実際に機能するようになりました。
Android NDK r12(2016 年 6 月)
- ダウンロード
- このリリースのダウンロードはこちらにアーカイブされています。
- お知らせ
- 次回のリリースで、
ndk-buildコマンドはデフォルトで Clang を使用するように設定される予定です。今後のリリースで、GCC は削除される予定です。 - 次回のリリースで、
make-standalone-toolchain.shスクリプトは削除される予定です。このスクリプトを使用している場合は、できるだけ早くmake_standalone_toolchain.pyに移行するようにしてください。 - NDK
- armeabi-v7a-hard ABI のサポートを削除しました。ドキュメントの説明をご覧ください。
- Android 2.3(API レベル 9)より前のプラットフォーム レベルの sysroot をすべて削除しました。 NDK r11 で sysroot に対するサポートを廃止しましたが、実際には削除されていませんでした。
- ARM32 上で c++_shared を使用している場合の例外処理が概ね機能するようにアップデートしました(既知の問題をご覧ください)。unwinder が、libc++ そのものではなく、リンクされた各オブジェクトにリンクされるようになります。
- デフォルトのコンパイラ フラグを削除しました(NDK 不具合 27)。このアップデートについて詳しくは、変更点 207721 をご覧ください。
build/tools/make_standalone_toolchain.pyにスタンドアロン ツールチェーンの Python 実装を追加しました。Windows 上でこの機能を使用する際に Cygwin が必要なくなりました。次回のリリースで bash フレーバーは削除される予定のため、新しいバージョンをテストしてください。- デフォルトで
-fno-limit-debug-infoオプションが有効になるように Clang デバッグビルドを設定しました。この変更によって、LLDB を使用したデバッグがやりやすくなります。 --build-idをデフォルト オプションとして有効にしました。これにより、ネイティブ障害レポートに ID が表示されるため、実行中のコードのバージョンを簡単に特定できます。- libgcc で問題が発生しないように
NDK_USE_CYGPATHに伴う不具合を修正しました(不具合 195486)。 - オプションの
-Wl,--warn-shared-textrelと-Wl,--fatal-warningsをデフォルトとして有効にしました。共有のテキスト リロケーションがある場合、Android 6.0(API レベル 23)以降ではアプリが読み込まれません。この設定はこれまで 64 ビットアプリに対して許可されなかったことに注意してください。 - プリコンパイルされたヘッダーの機能が向上するように、いくつかの不具合を修正しました(NDK 不具合 14、NDK 不具合 16)。
- アクセスできない ARM(Thumb を除く)STL ライブラリを削除しました。
- android-24 に Vulkan のサポートを追加しました。
- android-24 に Choreographer API を追加しました。
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED機能レベル以上をサポートするデバイス用の libcamera2 API を追加しました。 詳しくは、CameraCharacteristicsのリファレンスをご覧ください。- Clang
- Clang は、3.8svn(r256229、ビルド 2812033)に更新されました。32 ビット Windows パッケージ内の
clang.exe実行可能ファイルとclang++.exe実行可能ファイルは実際には 64 ビットです。32 ビット実行可能ファイルはclang_32.exeという名前です。 __threadが実際に機能するように修正しました。- GCC
- コンパイラと ChromeOS GCC @ google/gcc-4_9 r227810 を同期しました。
- カバレッジ サニタイザー パッチを ToT(r231296)から移植しました。
- ifuncs を使用しないように
libatomicを修正しました(NDK 不具合 31)。 - Binutils
- 情報メッセージ「Erratum 843419 found and fixed」が表示されないようにしました。
- サイズの大きい arm32 バイナリをリンクしたときの内部リンカーエラーを修正するために、オプション
--long-pltを導入しました。 AArch64のランタイム スタブの誤りを修正しました。この誤りにより、動的共有オブジェクト(DSO)のサイズが非常に大きい場合に、ジャンプ先アドレスが正しく計算されていませんでした。- 旧リリースの Android での動的リンカーのバグを回避するために、デフォルトのオプション
--no-apply-dynamicが導入されました。 dynamic_castが Clang、x86、stlport_static、最適化で機能しない NDK r11 に伴う既知の不具合を修正しました。- GDB
- GDB バージョン 7.11 にアップデートしました。このリリースについて詳しくは、GDB ニュースをご覧ください。
ndk-gdb.pyスクリプトの複数のバグを修正しました。- 既知の問題
- 現在、x86 Address Sanitizer(ASAN)は機能しません。詳しくは、不具合 186276 をご覧ください。
- Android 2.3(API レベル 9)または Android 4.0(API レベル 14)の ARM では、
c++_sharedを使用した例外のアンワインドが現在も機能しません。 - android-24 が存在するにもかかわらず、Android 6.0(API レベル 23)以降用の Bionic のヘッダーとライブラリがまだ公開されていません。これらのプラットフォームには、NDK r11 と一貫性のある Android 5.0(API レベル 21)のヘッダーとライブラリが含まれています。
- NDK r11 と一貫性のある RenderScript ツールは存在しません (NDK 不具合 7)。
NdkCameraMetadataTags.hヘッダー ファイルで、カメラ メタデータ タグ列挙値ACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAPが誤って列挙されました。これは次のリリースで削除される予定です。代わりにACAMERA_STATISTICS_LENS_SHADING_MAP値を使用してください。
Android NDK r11c(2016 年 3 月)
- 変更
ndk-gdb.pyスクリプトに新たな修正プログラムを適用しました。ndk-gdbコマンドの--attachオプションに、任意指定のパッケージ名引数を追加しました(不具合 13)。- 32 ビット Windows プラットフォームの無効なツールチェーン パスを修正しました(不具合 45)。
ndk-whichコマンドの相対パスを修正しました(不具合 29)。- libgcc コンパイラでの cygpath の使用法を修正しました(Android の不具合 195486)。
Android NDK r11b(2016 年 3 月)
- NDK
-
- 重要なお知らせ
- GitHub にバグトラッカーを移動しました。
- 変更
ndk-gdb.pyを修正しました。r11 で完全に元に戻されました。- Mac 用の
ndk-gdbを修正しました。 - コマンドライン ツールの最上位ショートカットを追加しました。
ndk-dependsndk-gdbndk-stackndk-which(このコマンドは、以前のリリースから完全に消去されました)
__cxxabi_config.hが欠落していた libc++ 用のスタンドアロン ツールチェーンを修正しました。make-standalone-toolchain.sh内の--toolchainに関するヘルプ ドキュメントを修正しました。
- 重要なお知らせ
- Clang
-
- 誤記
- r11 リリースノートで報告された内容に反して、
__threadが機能しません。これは、出荷された Clang のバージョンに、エミュレートされた TLS のサポートに関するバグの修正が含まれていないためです。
Android NDK r11(2016 年 3 月)
- Clang
-
- 重要なお知らせ
- 追加
- Clang がエミュレートされた TLS に対するサポートを提供するようになりました。
- コンパイラは、pthread スレッド固有データを使用して ELF TLS をエミュレートすることにより、
__threadをサポートするようになりました。 - C++11
thread_localは、機能する場合もありますが、データに非自明なデストラクタが含まれている場合は機能しません。これは、このようなケースでは libc からのサポートが必要なためです。この制限は、Android 6.0(API レベル 23)以降で動作している場合は適用されません。 - TLS 変数が共有ライブラリからアクセスを受ける場合は、エミュレートされた TLS が Aarch64 で動作しません。
- コンパイラは、pthread スレッド固有データを使用して ELF TLS をエミュレートすることにより、
- Clang がエミュレートされた TLS に対するサポートを提供するようになりました。
- GCC
-
- 重要なお知らせ
- Clang を優先して NDK 内の GCC のサポートが終了します。
- NDK は、5.x にアップグレードされることも、重要でないバックポートを受け入れることもありません。
- 4.9 でのコンパイルミスと内部コンパイラ エラーのメンテナンスは個別に処理されるようになります。
- 削除
- GCC 4.8 を削除しました。すべてのターゲットが GCC 4.9 を使用するようになりました。
- その他の変更点
- google/gcc-4_9 を r224707 に同期しました。以前は、r214835 に同期していました。
- NDK
-
- 重要なお知らせ
- NDK パッケージからサンプルが削除されました。 代わりに GitHub で入手できます。
- NDK パッケージからドキュメントが削除されました。 代わりに Android デベロッパー ウェブサイトで入手できます。
- 追加
android-23にネイティブ トレース API を追加しました。android-23にネイティブ マルチネットワーク API を追加しました。- API レベル 21 から、libc、m、dl でシンボルをバージョン管理できるようにしました。
- API レベル N に Vulkan のヘッダーとライブラリを追加しました。
- 削除
_WCHAR_IS_8BITのサポートを削除しました。- sed を削除しました。
- mclinker を削除しました。
- Perl を削除しました。
- NDK libc、m、dl のすべてのバージョンから、これらのライブラリのプラットフォーム バージョンでサポートされていないすべてのシンボルを削除しました。
- mips64r2 に対するサポートを一部削除しました。残りは今後削除される予定です。
- その他の変更点
- デフォルトで arm7 に設定されるように ARM スタンドアロン ツールチェーンを変更しました。
- 古い動作は、
-targetオプションをarmv5te-linux-androideabiとして指定することにより復元できます。
- 古い動作は、
- プラットフォームのインクルードで
-isystemを使用するようにビルドシステムを変更しました。- bionic で発生した警告によって、アプリビルドが中断されなくなりました。
- バイナリが gabi++ 経由で例外をスローしたときに発生するセグメンテーション違反を修正しました(不具合 179410)。
- プラットフォームの libc++ に伴う ODR 不具合を回避するために、libc++ のインライン名前空間を
std::__ndk1に変更しました。 - すべての libc++ ライブラリが libc++abi を使用してビルドされるようになりました。
- Gingerbread にデフォルトの
APP_PLATFORMをバンプしました。- Froyo 以前に対するサポートは今後のリリースで廃止される予定です。
- デフォルトで arm7 に設定されるように ARM スタンドアロン ツールチェーンを変更しました。
- 64 ビットの gabi++
_Unwind_Exception構造体を更新しました。 - cpufeatures に以下の機能を追加しました。
- SSE4.1 と SSE4.2 を検出する。
- x86_64 上の CPU 機能を検出します。
- libc++abi をアップストリーム r231075 に更新しました。
- ToT Bionic から
byteswap.h、endian.h、sys/procfs.h、sys/ucontext.h、sys/user.h、uchar.hを更新しました。 - すべての API レベルで
sys/cdefs.hを同期しました。 - arm の
fegetenv and fesetenvを修正しました。 - mips64 と x86_64 の
crtend_*のエンドポインタのサイズとアライメントを修正しました。
- 重要なお知らせ
- Binutils
-
- 追加
- 新しいオプション
--pic-veneerを追加しました。
- 新しいオプション
- 削除
- 32 ビット Windows パッケージから ld.gold が削除されました。 代わりに、64 ビット Windows パッケージから ld.gold を取得できます。
- 変更
- Android と Chromium 間で binutils ソースを統一しました。 この変更につい詳しくは、こちらをご覧ください。
- aarch64 の Gold の信頼性を高めました。リンク時に、bfd ではなく gold を使用します(
-fuse-ld=gold)。次回のリリースで、デフォルトが切り替えられる可能性があります。 - Gold ARM バックエンド用の大量のバイナリのリンク時間を短縮しました(デバッグ可能な Chrome ブラウザのリンク時間を最大 50% 短縮)。
- 追加
- GDB
-
- 削除
- ndk-gdb.py を優先して ndk-gdb を削除しました。
- 変更
- gdb をバージョン 7.10 に更新しました。
- パフォーマンスを向上させました。
- エラー メッセージを改善しました。
- 相対プロジェクト パスを修正しました。
- バックグラウンド化された gdbserver を Ctrl+C で強制終了できないようにしました。
- Windows サポートを見直しました。
- 削除
- YASM
-
- 変更
- YASM をバージョン 1.3.0 に更新しました。
- 変更
Android NDK r10e(2015 年 5 月)
- ダウンロード
- このリリースのダウンロードはこちらにアーカイブされています。
- 重要な変更点:
-
- Cortex-A53 Erratum 843419 の回避策を
aarch64-linux-android-4.9リンカーに統合しました。この回避策について詳しくは、cortex-a53 erratum 843419 の回避策をご覧ください。 - Clang 3.6 を追加しました。
NDK_TOOLCHAIN_VERSION=clangのように設定すると、デフォルトでこのバージョンの Clang が選択されます。 - Clang 3.4 を削除しました。
- GCC 4.6 を削除しました。
- すべてのアーキテクチャの
ld.goldにマルチスレッド サポートを実装しました。マルチスレッドに対するサポートを含める場合と、含めない場合のリンクが可能になりました。デフォルトはサポートを含めません。- マルチスレッドを使用してコンパイルするには、
--threadsオプションを使用します。 - マルチスレッドを使用せずにコンパイルするには、
--no-threadsオプションを使用します。
- マルチスレッドを使用してコンパイルするには、
- すべてのアーキテクチャの GDB/gdbserver を 7.7 にアップグレードしました。
- 32 ビット Darwin 用の NDK パッケージを削除しました。
- Cortex-A53 Erratum 843419 の回避策を
- 重要なバグの修正:
-
- OpenMP ループがメインスレッドの外部に存在する場合に発生するクラッシュを修正しました。
- ユーザーが
#pragma GCC optimize ("O0")を宣言したが、コマンドラインで指定された最適化のレベルが異なっていた場合に発生する GCC 4.9 内部コンパイラ エラー(ICE)を修正しました。pragmaが優先されます。 - 以下のエラー メッセージを伴うクラッシュの原因となっていたエラーを修正しました。
in add_stores, at var-tracking.c:6000
- LLVM 自動ベクトル化によって
llvm.cttz.v2i64()(ARM 命令セットに対応するものがない命令)が生成される Clang 3.5 の不具合の回避策を実装しました。
- その他のバグの修正:
-
- 以下のヘッダーとライブラリを修正しました。
media/NdkMediaDrm.hのPROPERTY_*を修正しました。mips64のsys/ucontext.hを修正しました。__builtin_isnanと__builtin_isinfに対する Clang バージョン チェックを廃止しました。android-21/arch-mips/usr/include/asm/reg.hとandroid-21/arch-mips64/usr/include/asm/reg.hを追加しました。- x86 の場合に GCC 4.9 が生成していた誤った配列境界警告を修正し、ARM の場合に GCC 4.9 が生成していた配列境界警告を再度有効にしました。ARM の場合の警告は、以前は無条件に無効になっていました。
- GCC の動作を一致させるために、
mipsとmips64で書き込み可能な.gcc_except_tableを作成するように Clang 3.5 を修正しました。この変更によって、以下のリンカー警告を回避することができます。.../ld: warning: creating a DT_TEXTREL in a shared object
- Clang で
mips64向けにコンパイルを実行した場合にクラッシュの原因となっていたcompiler-rtの不具合の修正プログラムを移植しました。詳しくは、LLVM の不具合 20098 をご覧ください。 - ASCII 以外のコメントで発生する Clang 3.5 のクラッシュを修正しました(不具合 81440)。
-1と1を返すようにstlport collate::compareを修正しました。これまでは、任意の符号付き数値を返していました。- 64 ビット ABI の
ndk-gdbを修正しました(不具合 118300)。 - RenderScript の HelloComputeNDK サンプルが Android 4.4(Android API レベル 19)で引き起こしていたクラッシュを修正しました。詳しくは、こちらのページをご覧ください。
- GCC の
libc++ __wrap_iterを修正しました。詳しくは、LLVM の不具合 22355 をご覧ください。 - ABI の
x86_64に対する.asmのサポートを修正しました。 - GCC 4.8 の
stlportの不具合に対する回避策を実装しました(不具合 127773)。 - Windows のプロジェクト パスから末尾のディレクトリ区切り記号
\\を削除しました(不具合 160584)。 gradleからndk-build.cmdコマンドを実行することにより、単一の.cファイルをコンパイルしているときに発生するno rule to make targetエラーを修正しました(不具合 66937)。- 以下のホスト ツールチェーンに欠落していた
libatomic.aライブラリとlibgomp.aライブラリを追加しました。aarch64-linux-android-4.9mips64el-linux-android-4.9mipsel-linux-android-4.9x86_64-4.9
- その他の変更点:
-
aarch64用にld.goldを追加しました。デフォルトのリンカーはld.bfdのままです。ld.goldを明示的に有効にするには、LOCAL_LDFLAGS変数またはAPP_LDFLAGS変数に-fuse-ld=goldを追加します。- R6 サポートを強化するために
binutils-2.25を使用して MIPS ツールチェーンと MIPS64 ツールチェーンをビルドしました。 -fstandalone-debug(完全なデバッグ情報)を Clang のデフォルト オプションにしました。-fstack-protectorを、GCC 4.9、Clang 3.5、Clang 3.6 の ARM、AArch64、X86、X86_64 ツールチェーン用の-fstack-protector-strongに置き換えました。- ビルドシステムがパッケージ名をオーバーライドできるように、
ndk-gdbに--packageコマンドライン スイッチを追加しました(不具合 56189)。 - MIPS 用の
-mno-ldc1-stc1のサポートを終了しました。このオプションは、新しい-fpxxおよび-mno-odd-spregオプション、または FPXX ABI と併用できない場合があります。 cpu-featuresに MIPS MSA と R6 の検出を追加しました。
Android NDK r10d(2014 年 12 月)
- 重要な変更点:
-
- GCC 4.8 をすべての 32 ビット ABI のデフォルトにしました。GCC 4.6 が非推奨になり、次回のリリースで削除される予定です。以前の動作を復元するには、ndk-build に
NDK_TOOLCHAIN_VERSION=4.6を追加するか、コマンドラインでmake-standalone-toolchain.shを実行する場合は--toolchain=arm-linux-androideabi-4.6を追加します。GCC 4.9 は、64 ビット ABI のデフォルトのままです。 - デフォルトで、すべての x86[_64] ツールチェーンが
-mstackrealignを追加できないようにしました。NDK ツールチェーンは 16 バイトのスタック アライメントを前提とします。デフォルトで使用されるツールとオプションはこのルールに従います。ユーザーが作成するアセンブリ コードは、スタック アライメントを保持する必要があり、他のコンパイラもこのルールに従うことを保証する必要があります (GCC のバグ 38496)。 - ARM ABI と x86 ABI に対する Clang 3.5 サポートに Address Sanitizer 機能を追加しました。この変更について詳しくは、Address Sanitizer プロジェクトをご覧ください。
- API レベル 21 以降で、ビルド時に
-fPIE -pieを使用するという要件を導入しました。API レベル 16 以降では、ndk-build でビルド時にPIEが使用されます。この変更は、デベロッパー プレビュー不具合 888 に記載されているさまざまな影響をもたらします。共有ライブラリにはこれらの影響はありません。
- GCC 4.8 をすべての 32 ビット ABI のデフォルトにしました。GCC 4.6 が非推奨になり、次回のリリースで削除される予定です。以前の動作を復元するには、ndk-build に
- 重要なバグの修正:
-
- aarch64-linux-android-4.9 リンカーの A53 Errata #835769 に関連する修正を行いました。その一環として、GCC は、
-mfix-cortex-a53-835769(デフォルトで有効)が指定された場合に、新しいオプションの--fix-cortex-a53-835769を渡します。詳しくは、こちらの binutils メッセージと、こちらの binutils メッセージをご覧ください。 - API レベル 21 で発生する libc++
sscanf/vsscanfハングに対する修正を文書化しました。修正自体は r10c で実装されています(不具合 77988)。 -Osが指定された場合に GCC 4.9 で発生する AutoFDO(-fauto-profile)のクラッシュを修正しました(不具合 77571)。
- aarch64-linux-android-4.9 リンカーの A53 Errata #835769 に関連する修正を行いました。その一環として、GCC は、
- その他のバグの修正:
-
- 以下のヘッダーとライブラリを修正しました。
- API レベル 16 に
posix_memalignを追加しました。また、API レベル 16~19 でstdlib.hにプロトタイプを追加しました(不具合 77861)。 - C++11 の場合にのみ
<atomic>を含めるようにstdatomic.hを修正しました。 sys/user.hと、API レベル 21 のgl2ext.h、dlext.h、fts.h、sgidefs.hの各ヘッダーをスタンドアロンで使用するために変更しました。sys/user.hを次のように修正しました。mxcsr_maskの名前をmxcr_maskに変更し、u_ar0のデータ型をsysconf()の戻り値の型をintからlongに変更しました。LOCAL_ARM_MODEに対するthumbの ndk-build の扱いを修正しました。r10d では、以下の条件のいずれかが適用されない限り、ndk-build はデフォルトでLOCAL_LDFLAGS+=-mthumbを追加します。LOCAL_ARM_MODEをarmと等価に設定している。- 以前のツールチェーンとの互換性を維持するために ARM モードがデフォルトになっているデバッグビルド(
APP_OPTIM=debugなどの設定や、android:debuggable="true"を含むAndroidManifest.xmlを使用)を実行している(不具合 74040)。 - Windows の絶対パスを使用するように ndk-build の
LOCAL_SRC_FILESを修正しました(不具合 74333)。 - ndk-gdb から bash 固有のコードを削除しました(不具合 73338)。
make-standalone-toolchain.shから bash 固有のコードを削除しました(不具合 74145)。System.loadLibrary()の推移的な依存関係の修正に関するドキュメントを改訂しました(不具合 41790)。- 64 ビット パッケージが Ubuntu 14.04 と OS X 10.10(Yosemite)上で展開されない問題を修正しました(不具合 78148)。
- Clang サポートを強化するために
LOCAL_PCHに伴う不具合を修正しました(不具合 77575)。 - ld.gold からの "requires executable stack" 警告を明確にしました(不具合 79115)。
unsigned longから user_regs_struct* 構造体に変更しました。
Android NDK r10c(2014 年 10 月)
- 重要な変更点:
-
- ダウンロード構造に対する以下の変更を実行しました。
- 各パッケージに、それぞれのプラットフォーム用の 32 ビットと 64 ビット両方のヘッダー、ライブラリ、ツールが含まれるようになりました。
- デバッグ情報を含む STL ライブラリを個別にダウンロードする必要がなくなりました。
Android-Lと呼ばれていたものを公式リリースの名称であるandroid-21に変更しました。- 新しいベースを GCC リポジトリの
googleブランチに設定することにより、GCC 4.9 をアップデートしました。GCC 4.9 のアップストリーム バージョンとの主な違いは次のとおりです。 -O2オプションは、ループ ピーリングを使用せず、より積極的なアンローリングを使用してベクトル化をオンにするようになりました。- FDO と LIPO の機能強化
- すべてのホストに Clang 3.5 のサポートを追加しました。
NDK_TOOLCHAIN_VERSION=clangのように設定すると、Clang 3.5 が選択されます。以下の点にご注意ください。 - ARM と x86 はデフォルトで統合アセンブラを使用するように設定されます。これで問題が発生した場合は、回避策として
-fno-integrated-asを使用します。 - Clang 3.5 では、GCC がサポートする
-finline-functionsオプションなどの未使用のフラグに関する警告がより多く発行されます。 art-onオプションを指定することにより、ART を仮想マシンとして使用して Android 5.0 デバイス上でデバッグしているときに ART デバッグ モードに入れるようにしました。詳しくは、NDK が格納されたディレクトリ内のprebuilt/common/gdb/common.setupをご覧ください。- Clang 3.3 に対するサポートを削除しました。
- GCC 4.6 が非推奨になり、今後のリリースで削除される可能性があります。
- mclinker を、Identical Code Folding(ICF)のサポートを含む 2.8 にアップデートしました。ICF を指定するには
--icfオプションを使用します。 - NEON イントリンシクスの 93% をカバーするように、x86 と x86_64 における
arm_neon.hのサポートを拡大しました。NEON のサポートの詳細は、以下でご確認いただけます。- NDK Programmer's Guide(
docs/Programmers_Guide/html/)にアクセスして、「Architectures and CPUs」>「Neon」をご覧ください。 samples/にある最新のhello-neonサンプルをご覧ください。- ARM NEON から Intel SSE への移植に関する Intel のガイドをご覧ください。
- NDK Programmer's Guide(
headers/libs/android-21での_FORTIFY_SOURCEに対するサポートを文書化しました。このサポートは、android-21がまだAndroid-Lと呼ばれていた r10 で導入されましたが、文書化されていませんでした。
詳しくは、下記の重要なバグの修正をご覧ください。
GCC を使用したプロジェクトから移行する場合は、
-Wno-invalid-command-line-argumentと-Wno-unused-command-line-argumentを使用して、未使用のフラグの長期的な用途が明確になるまでそれらのフラグを無視することができます。 - 重要なバグの修正:
-
- 以下のエラー メッセージが出力される GCC4.9/aarch64 に伴う内部コンパイラ エラーを修正しました(不具合 77564)。
- GCC4.9/arm からの不正なコード生成を修正しました(不具合 77567)。
- インライン アセンブリが関係する GCC4.9/mips に伴う内部コンパイラ エラーを修正しました(不具合 77568)。
- GCC4.9/arm が
x = (cond) ? y : xに対して生成する不正なコードを修正しました(不具合 77569)。 - GCC4.9/aarch64 と Clang3.5/aarch64 がデフォルトで Cortex-A53 erratum(835769)に対処するように修正しました。回避策を無効にするには、
-mno-fix-cortex-a53-835769を指定します。
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
- その他のバグの修正:
-
- ヘッダーとライブラリに関する以下の修正を
android-21に対して行いました。- 新しい TV キーコード
android/keycodes.hを追加しました。 android/sensor.hに定数と 6 つの新しいセンサー関数(ASensorManager_getDefaultSensorEx、ASensor_getFifoMaxEventCount、ASensor_getFifoReservedEventCount、ASensor_getStringType、ASensor_getReportingMode、ASensor_isWakeUpSensor)を追加しました。- GCC 4.6 との互換性を高め、
<atomic>ヘッダーをサポートするようにstdatomic.hを修正しました。 - すべての API レベルに
sys/ucontext.hとsys/user.hを追加しました。signal.hヘッダーに<sys/ucontext.h>が含まれるようになりました。struct ucontextの既存の定義を削除できます。 - API レベル 17、18、19 に
posix_memalignを追加しました。 android_set_abort_message、posix_fadvise、posix_fadvise64、pthread_gettid_npの各関数をすべてのアーキテクチャに追加しました。native-media/AndroidManifest.xmlサンプルに必要なパーミッションを追加しました(不具合 106640)。- API レベル 21 に
clock_nanosleepとclock_settimeを追加しました(不具合 77372)。 get_malloc_leak_info、free_malloc_leak_info、__srget、__swbuf、__srefill、__swsetup、__sdidinit、__sflags、__sfp、__sinit、__smakebuf、__sflush、__sread、__swrite、__sseek、__sclose、_fwalk、__sglue、__get_thread、__wait4、__futex_wake、__open、__get_tls、__getdents64、dlmallocの各シンボルをすべてのアーキテクチャから削除しました。basename_r、dirname_r、__isthreaded、_flush_cache(mips64)の各関数を 64 ビット アーキテクチャから削除しました。- 関数
__signalfd4を 32 ビット アーキテクチャから削除しました。 strtoll_l、strtoull_l、wcstoll_l、wcstoull_lの各関数の 3 つ目の引数の型をsize_tからintに変更しました。arc4random、arc4random_buf、arc4random_uniformの各関数を 64 ビット アーキテクチャに戻しました。cxa_*と、newおよびdelete演算子をlibstdc++.soに戻しました。この変更により、r9d の動作が復元されます。以前のバージョンの r10 にはプレースホルダ ファイルが含まれていました。
- 新しい TV キーコード
- mips 用に GCC 4.8 および 4.9 での MXU のサポートを復元しました。このサポートは r10 と r10b にはありませんでした。これらのバージョンの GCC は、MXU をサポートしていない binutils-2.24 を使用してコンパイルされていたためです。
- 接尾辞を使用した Clang のバージョン指定を正しくサポートするように、
make-standalone-toolchain.sh内の--toolchain=を修正しました。 - libc++/armeabi の
strtod()関数を修正しました。 docs/にある NDK ドキュメントを修正しました。
- ヘッダーとライブラリに関する以下の修正を
- その他の変更点:
-
- AES、CRC32、SHA2、SHA1、64 ビット PMULL/PMULL2 の各命令セットに対する ARMv8 のサポートを検出するように
cpu-featuresを拡張しました(不具合 106360)。 - GCC 4.8、GCC 4.9、Clang で使用可能な
*-gcc-arを使用するように ndk-build を変更しました。Clang は*-arの代わりにこのアーカイブを指定します。この設定により、LTO のサポートが改善されます。 - GCC コンパイラから
include-fixed/linux/a.out.hヘッダーとinclude-fixed/linux/compiler.hヘッダーを削除しました(不具合 73728)。 - Mac OS X における GCC 4.8 の
-fltoに関連した不具合を修正しました。次のようなエラー メッセージが表示されます。 build-binary.mk.のタイプミスを修正しました(不具合 76992)。
.../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so Symbol not found: _environ
- AES、CRC32、SHA2、SHA1、64 ビット PMULL/PMULL2 の各命令セットに対する ARMv8 のサポートを検出するように
- 重要な既知の問題:
-
- GCC4.9 で -Os(
-fauto-profile)を指定すると、クラッシュすることがあります(不具合 77571)。
- GCC4.9 で -Os(
Android NDK r10b(2014 年 9 月)
- 重要な注意点:
-
- ダウンロード可能パッケージには 512MB というサイズ制限があるため、以下の 32 ビットアイテムが 32 ビット NDK ダウンロード可能パッケージに含まれていません。代わりに、64 ビット パッケージに含まれています。
- Android-L ヘッダー
- GCC 4.9
- 現時点で、NDK から提供されている唯一の Renderscript のサポートは、Android 4.4(API レベル 19)を使用した 32 ビット Renderscript に対するものです。その他の Renderscript(32 ビットまたは 64 ビット)と Android バージョンの組み合わせでは、HelloComputeNDK(唯一の Renderscript サンプル)をビルドできません。
- ネイティブ コーデックをコンパイルするには、すべての Android-L ヘッダーが揃っている 64 ビット NDK パッケージを使用する必要があります。
- 重要なバグの修正:
- その他のバグの修正:
-
- すべてのバージョンの GCC の
include-fixed/ディレクトリからstdio.hを削除しました(不具合 73728)。 platforms/android-L/arch-*/usr/include/linux/netfilter*/ディレクトリ内の Windows パッケージから、重複するヘッダー ファイルを削除しました(不具合 73704)。- Clang で HelloComputeNDK をビルドできない問題を修正しました。
- atexit を修正しました(不具合 66595)。
docs/とsources/third_party/googletest/README.NDKのドキュメントに対するさまざまな修正を行いました(不具合 74069)。- Android-L ヘッダーに対して以下の修正を実行しました。
ctype.hとwchar.hに対し、dn_expand()、grantpt()、inet_nsap_addr()、inet_nsap_ntoa()、insque()、nsdispatch()、posix_openpt()、__pthread_cleanup_pop()、__pthread_cleanup_push()、remque()、setfsgid()、setfsuid()、splice()、tee()、twalk()(不具合 73719)の各関数と 42 個の*_l()関数を追加しました。cmsg_nxthdrの名前を__cmsg_nxthdrに変更しました。__libc_malloc_dispatchを削除しました。ptrace()のプロトタイプをlong ptrace(int, ...);に変更しました。sha1.hを削除しました。android/dlext.hのandroid_dlextinfoを拡張しました。stdlib.h、time.h、wchar.h、complex.hで float 型または double 型の値を受け取るまたは返す関数の__NDK_FPABI__の注釈を追加しました。
- すべてのバージョンの GCC の
- その他の変更点:
-
- 新しい multilib ディレクトリ レイアウトを実装し、gdb-7.7 をサポートするように、
mipsel-linux-android-4.9とmips64el-linux-android-4.9を更新しました。 - 新しい arm64 機能を検出するように
cpu-featuresを拡張しました(変更点一覧 100339)。
- 新しい multilib ディレクトリ レイアウトを実装し、gdb-7.7 をサポートするように、
Android NDK r10(2014 年 7 月)
- 重要な変更点:
-
- 3 つの新しい ABI(すべて 64 ビットの arm64-v8a、x86_64、mips64)を追加しました。 以下の点に注意してください。
- GCC 4.9 は 64 ビット ABI のデフォルトのコンパイラです。Clang の現在のバージョンは 3.4 です。
NDK_TOOLCHAIN_VERSION=clangは arm64-v8a と mips64 に対して動作しない可能性があります。 - Android-L は 64 ビット サポートを伴う最初のレベルです。この API レベルは一時的なものであり、L プレビュー専用であることに注意してください。実際の API レベル番号は L リリースで置き換えられる予定です。
- このリリースには、
APP_ABIのall32設定とall64設定が含まれます。APP_ABI=all32はAPP_ABI=armeabi,armeabi-v7a,x86,mipsと等価です。APP_ABI=all64はAPP_ABI=arm64-v8a,x86_64,mips64と等価です。APP_ABI=allはすべての ABI を選択します。
- Android-L の新しい GNU libstdc++ にはすべての
<tr1/cmath>が含まれています。リンカーからの「複数定義」エラーを回避するには、独自の数学関数を定義する前に、_GLIBCXX_USE_C99_MATH_TR1で同じ名前の関数が存在しないことを確認してください。 - cpu-features ライブラリが ARMv8 カーネル用に更新されました。既存の cpu-features ライブラリでは、ARMv8 プラットフォーム上の NEON の存在を検出できない可能性があります。コードを新しいバージョンで再コンパイルしてください。
- 新しい
platforms/android-L/API ディレクトリを追加しました。このディレクトリには以下が格納されます。 - Android API レベル 3(Cupcake)から変更されていなかった Bionic ヘッダーを 19(KitKat)に更新しました。このレベル L 用の新しいバージョンは AOSP と同期する必要があります。
- 新しいメディア API とネイティブ コーデックのサンプル。
- AudioPlayer での単精度浮動小数点オーディオ形式をサポートするように更新された SLES/OpenSLES 用の
Android.hヘッダー。 libGLESv3.so.に対する GLES 3.1 と AEP の拡張機能。- 最新の公式 Khronos バージョンにアップデートされた GLES2 ヘッダーと GLES3 ヘッダー。
- 32/64 ビット ABI に GCC 4.9 コンパイラを追加しました。GCC 4.9 は、前述したように 64 ビット ABI のデフォルト(唯一)のコンパイラです。32 ビット ABI では、依然として GCC 4.6 がデフォルトであるため、GCC 4.9 を明示的に有効にする必要があります。
- ndk-build では、
Application.mkにNDK_TOOLCHAIN_VERSION=4.9を追加するか、コマンドラインから環境変数としてエクスポートすることにより、32 ビット GCC 4.9 ビルドを有効にします。 - スタンドアロン ツールチェーンでは、
make-standalone-toolchain.shスクリプトで--toolchain=オプションを使用します(例:--toolchain=arm-linux-androideabi-4.9.)。 - GCC 4.8 / 4.9 と x86 で GDB をバージョン 7.6 にアップグレードしました*。GCC 4.6 では GDB が依然としてバージョン GDB-7.3.x(ARM と MIPS のデフォルト)であるため、ndk-gdb で GDB 7.6 を選択できるように
NDK_TOOLCHAIN_VERSION=4.8または4.9を設定する必要があります。 - SSSE3 をサポートし、それを ABI x86 のデフォルトにするために
-mssse3ビルド オプションを追加しました(SSE3 からのアップグレード)。Google からリリースされるイメージには、SSSE3 命令が含まれていません。 - GCC 4.8 を 4.8.3 にアップデートしました。
- gabi++ から libc++abi に切り替えることにより、ARM libc++ EH のサポートを向上させました。詳しくは、ドキュメントの「C++ のサポート」をご覧ください。 以下の点にご注意ください。
- Clang 3.4 と GCC 4.8 では、ロケール以外のすべてのテストに合格しました詳しくは、ドキュメントの「C++ のサポート」をご覧ください。
- X86 と MIPS libc++ 用の libc++ ライブラリではまだ gabi++ が使用されます。
- GCC 4.7 以降で、<atomic> を使用できるようになりました。
__list_imp::_end_ は TBAA ルールに違反するため、<list>を使用する場合は-fno-strict-aliasingを追加する必要があります(不具合 61571)。- GCC 4.6 以降では、LIBCXX_FORCE_REBUILD:=true のように設定しても libc++ が再ビルドされなくなります。再ビルドするためには、別のコンパイラを使用する必要があります。Clang 3.3 はテストされていないことにご注意ください。
- mclinker の最新バージョンは 2.7 で、aarch64 Linux のサポートが含まれています。
LOCAL_PCHによって指定されるヘッダーに対するプリコンパイルされたヘッダーのサポートを追加しました(不具合 25412)。
- 重要なバグの修正:
-
std::feofなどをコンパイルするように libc++ を修正しました(不具合 66668)。- ABI armeabi の libc++ テストの一部でクラッシュを引き起こす Clang 3.3/3.4 アトミック ライブラリ呼び出しを修正しました。
- プリコンパイルされたヘッダーの読み取り中に発生する Clang 3.4 のクラッシュを修正しました(不具合 66657)。
- 以下における Clang 3.3/3.4
-O3のアサートを修正しました。 - 以下における Clang 3.3/3.4 のクラッシュを修正しました。
llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef(不具合 57381)): Assertion Weights.size() >= 2 && "Need at least two branch weights!" Assertion failed: (!Fn && "cast failed but able to resolve overload expression!!"), function CheckCXXCStyleCast, file Volumes/data/ndk-toolchain/src/llvm-3.3/llvm/tools/clang/lib/Sema/SemaCast.cpp, line 2018(不具合 66950) - その他のバグの修正:
-
- 以下のヘッダーを修正しました。
- 32 ビットの
ssize_tがlong intではなくintになるよう修正しました。 WCHAR_MINとWCHAR_MAXが稼働しているアーキテクチャに応じて適切な符号を使用するように修正しました。- X86/MIPS: 符号付き。
- ARM: 符号なし。
- X86/MIPS をデフォルトで符号なしに設定するには、
-D__WCHAR_UNSIGNED__を使用します。 wchar_tを 16 ビットにするには、-fshort-wcharを使用します。- 32 ビット
libc.soから存在しないシンボルを削除し、Android API レベル 12 以降のpread64、pwrite64、ftruncate64を追加しました(不具合 69319)。詳細については、AOSP 変更点一覧 94137 を伴うコミット メッセージをご覧ください。 putcharの再定義に関する GCC 警告を修正しました。次のような警告メッセージが表示されます。make-standalone-toolchain.sh --stl=libc++を次のように修正しました。- 外部プログラムのプロセスの生成に必要な場合にのみ引数を引用するように GCC/Windows を修正しました。この変更により、32K の長さ制限を超える可能性が減少します。
APP_PLATFORM環境変数の調整ができなくなる不具合を修正しました。- ライブラリパスの真のベース名を特定するために
strchr()ではなくstrrchr()を使用するように、crazy_linker のIsSystemLibrary()の実装を修正しました。 - デバッグモードでネイティブ オーディオをビルドできない不具合を修正しました。
- gdb で極端な浮動小数点数を出力できない不具合を修正しました(不具合 69203)。
- Clang 3.4 で
-Wl,-sharedを指定してコンパイルできない不具合を修正しました(コンパイルの不具合が発生しない-sharedとは対照的)。-sharedも-staticも存在しない場合に Clang が Android ターゲット用の-pieを追加していたことが問題でした。この誤った動作によって、リンカーから-sharedと-pieは共存できないというエラーが出力されていました。
include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int);(変更点一覧 91185) - その他の変更点:
-
- Neon の約 47% をエミュレートするように、x86 ツールチェーンに
arm_neon.hを追加しました。現時点で 64 ビット型に対するサポートは存在しません。詳細については、x86 ドキュメントの ARM Neon イントリンシクスのサポートに関するセクションをご覧ください。 - ARM/GOT_PREL 最適化(GCC Google ブランチからビルドされた GCC 4.6 内に存在)を ARM GCC 4.8/4.9 に移植しました。この最適化によって、グローバル変数にアクセスするときの命令数が削減される場合があります。例として、
$NDK/tests/build/b14811006-GOT_PREL-optimization/の build.sh スクリプトをご覧ください。 - STL gabi++、stlport、libc++ の ARM バージョンを追加しました。このバージョンと Thumb モードの両方が存在することになります。
--toolchain=x86_64-4.9と等価の--toolchain=x86_64-linux-android-4.9を指定して make-standalone-toolchain.sh スクリプトを呼び出すことができるようになりました。
- Neon の約 47% をエミュレートするように、x86 ツールチェーンに
Android NDK r9d(2014 年 3 月)
- 重要な変更点:
-
- Clang 3.4 コンパイラに対するサポートを追加しました。
NDK_TOOLCHAIN_VERSION=clangオプションが Clang 3.4 を選択するようになりました。デフォルトは GCC 4.6 のままです。 - 新しい multilib オプションの
-mfloat-abi=hardを含むAPP_ABI=armeabi-v7a-hardを追加しました。これらのオプションは、ARM GCC 4.6/4.8 と Clang 3.3/3.4(4.8 のアセンブラ、リンカー、ライブラリを使用)で使用するためのものです。これらのオプションを使用する場合は、以下の変更点にご注意ください。 ndk-buildスクリプトを実行する場合は、armeabi-v7a ターゲット用の以下のオプションを追加します。 ビルドされたライブラリはTARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1 TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
libs/armeabi-v7aにコピーされます。make を想定どおりに動作させるためには、armeabi-v7aとarmeabi-v7a-hardの両方を make のターゲット(つまり、APP_ABI= 行)として指定することはできません。このような場合は、どちらかが無視されます。APP_ABI=allはまだarmeabi armeabi-v7a x86 mipsと等価であることに注意してください。make-standalone-toolchain.shスクリプトは、/hardディレクトリに追加されたライブラリをコピーします。GCC または Clang で/hard内のライブラリとリンクできるようにするには、makefile に上記のCFLAGSとLFLAGSを追加します。- yasm アセンブラに加えて、x86 ターゲット用の
LOCAL_ASMFLAGSフラグとEXPORT_ASMFLAGSフラグも追加しました。ndk-buildスクリプトはprebuilts/*/bin/yasm*を使用して、.asm拡張子を持つLOCAL_SRC_FILESをビルドします。 - MClinker を
-gc-sectionsのサポートが追加された 2.6.0 にアップデートしました。 - 試験運用版の libc++ のサポート(アップストリーム r201101)を追加しました。この新しい機能は以下の手順で使用します。
APP_STL := c++_staticまたはAPP_STL := c++_sharedをApplication.mkに追加します。LIBCXX_FORCE_REBUILD := trueのように設定してソースから再ビルドすることもできます。make-standalone-toolchain.sh --stl=libc++を実行し、libc++ ヘッダー / ライブラリを使用してスタンドアロン ツールチェーンを作成します。
CPLUSPLUS-SUPPORT.htmlをご覧ください(不具合 36496)。
- Clang 3.4 コンパイラに対するサポートを追加しました。
- 重要なバグの修正:
-
- GCC 4.6/4.8 ARM EABI の予期せぬ例外ハンドラからの捕捉されないスローを修正しました(GCC の不具合 59392)。
- 従属する非型テンプレート引数を使用したテンプレートの部分特殊化が正しく解決されるように GCC 4.8 を修正しました(GCC の不具合 59052)。
- ビルド済みの python に新しいモジュールを追加しました(不具合 59902)。
- Mac OS X:
zlib、bz2、_curses、_curses_panel、_hashlib、_ssl - Linux:
zlib、nis、crypt、_curses、_curses_panel
- Mac OS X:
- x86 と MIPS gdbserver の
event_getmsg_helperを修正しました。 - RenderScript NDK ツールチェーンのさまざまな不具合を修正しました。これには、古いデバイスと C++ リフレクションの互換性に伴う不具合が含まれます。
- その他のバグの修正:
-
- ヘッダーの修正:
- Android API レベル 13 以降の
android/asset_manager.hで#include <sys/types.h>が欠落していた不具合を修正しました(不具合 64988)。 - Android API レベル 14 以降の
android/rect_manager.hで#includeが欠落していた不具合を修正しました。 JNICALLをjni.hのJNI_OnLoadとJNI_OnUnloadに追加しました。JNICALLが__NDK_FPABI__として定義されていることに注意してください。詳しくは、sys/cdefs.hをご覧ください。- 手動で依存関係を含めなくてもいいように、以下のヘッダーを更新しました(不具合 64679)。
sys/cachectl.hをすべてのアーキテクチャに追加しました。MIPS のデベロッパーは、#ifdef __mips__を記述する代わりに、このヘッダーを含めることができるようになりました。- 浮動小数値または倍精度値を取得するまたは返す関数に
__NDK_FPABI__を追加することにより、platforms/android-18/include/android/input.hを修正しました。 - Android API レベル 12 以降の 64 ビット同等のシステムに誤って設定されていた MIPS
struct statを修正しました。この間違った設定は、リリース r9c が導入された際のリグレッションとなっていました。 - Android API レベル 9 以前用の
__PTHREAD_MUTEX_INIT_VALUE、__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE、__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUEを定義しました。 - API 18 以降の x86
libm.soにscalbln、scalblnf、scalblnlを追加しました。 sources/android/support/include/iconv.hのタイプミスを修正しました(不具合 63806)。
android/tts.h EGL/eglext.h fts.h GLES/glext.h GLES2/gl2ext.h OMXAL/OpenMAXSL_Android.h SLES/OpenSLES_Android.h sys/prctl.h sys/utime.h
- Android API レベル 13 以降の
std::terminate()を呼び出して、ユーザー定義のstd::terminate()ハンドラが実行できるように gabi++std::unexpected()を修正しました。std::nullptrをキャッチするように gabi++ を修正しました。- サンプルの Teapot と MoreTeapots を修正しました。
- 中間精度を使用するように specular 変数を変更することにより、Tegra 2 および 3 チップに伴う問題を解決しました。specular 指数の値を 1.0 未満にできるようになりました。
- 音量ボタンを押すと没入モードが復元され、
SYSTEM_UI_FLAG_IMMERSIVE_STICKYが無効になるようにサンプルを変更しました。画面の回転ではonSystemUiVisibilityChangeがトリガーされないため、没入モードが復元されません。
ld.bfdを使用して実行可能ファイルをリンクするために、-rpath-link=$SYSROOT/usr/libと-rpath-link=$TARGET_OUTを追加するようにndk-buildを修正しました(不具合 64266)。- すべての STL ビルドから
-Bsymbolicを削除しました。 - 設定を無視する
python.exeに渡す代わりに、SHELLを環境変数として設定することにより、ndk-gdb-py.cmdを修正しました(不具合 63054)。 --stl=stlportオプションで、gabi++ ヘッダーのシンボリック リンクを作成するのではなく、このヘッダーをコピーするようにmake-standalone-toolchain.shスクリプトを修正しました。cmd.exeと MinGW シェルは、cygwin によって作成されたシンボリック リンクを認識しません。
- ヘッダーの修正:
- その他の変更点:
-
- デベロッパーが cygwin 内で、推奨されている
ndk-buildスクリプトの代わりにndk-build.cmdを使用したい場合に備えて、cmd.exeシェルでの使用しか想定されていなかったすべての*cmdスクリプトに実行権限を適用しました。 - 指定された宛先ディレクトリが存在しない場合にコピーではなく移動することにより、
make-standalone-toolchain.shスクリプトの速度を改善しました。
- デベロッパーが cygwin 内で、推奨されている
Android NDK r9c(2013 年 12 月)
これはバグ修正のみのリリースです。
- 重要なバグの修正:
-
- スタック ポインタの復元が早すぎる GCC 4.8 ARM に伴う問題を修正しました。この問題によって、フレーム ポインタからスタック フレーム内の変数に確実にアクセスできませんでした(GCC の不具合 58854)。
- std::nth_element のバグによって、セグメンテーション違反がランダムに発生するコードが生成される GCC 4.8 libstdc++ に伴う問題を修正しました(不具合 62910)。
- 以下のエラーが今後発生しないように、
-fuse-ld=mcldを含む cc1/cc1plus 内の GCC 4.8 ICE を修正しました。cc1: internal compiler error: in common_handle_option, at opts.c:1774
__builtin数学関数の-mhard-floatのサポートを修正しました。STL を使用した-mhard-floatに対する修正の最新情報については、不具合 61784 をご確認ください。
- その他のバグの修正:
-
- ヘッダーの修正:
pollのプロトタイプをpoll.h内でpoll(struct pollfd *, nfds_t, int);に変更しました。- Android API レベル 12 および 19 の
libc.soにutimensatを追加しました。これらのライブラリは、Android API レベル 12~19 のすべてに含まれることになります。 - Android API レベル 19 の
libc.soにfutimensを導入しました。 - Android API レベル 8 以降の
time.hに欠落していたclock_settime()とclock_nanosleep()を追加しました。 CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,CLOCK_BOOTTIME_ALARMをtime.h.に追加しました。- サポートが終了した
CLOCK_REALTIME_HRとCLOCK_MONOTONIC_HR.を削除しました。
- サンプルの Teapot、MoreTeapots、
source/android/ndk_helperにおける変更点:- armeabi-v7a に対して hard-float abi を使用するように変更しました。
- Android API レベル 19 以降で没入モードを使用するように更新しました。
- x86 デバイスでクラッシュを引き起こす
/system/lib/libdvm.soのCheck_ReleaseStringUTFCharsに伴う問題を修正しました。
- NDK パッケージがシンボリック リンク経由で参照されているときに cygwin で発生する
ndk-buildエラーを修正しました。 LOCAL_SRC_FILESに絶対パスが含まれているときに Windows のcmd.exeで発生するndk-build.cmdエラーを修正しました(不具合 69992)。- ルーチン、ファイル名、または行番号が見つからないためにフレームを解析できなかった場合でも処理が続行されるように
ndk-stackスクリプトを修正しました。このようなケースでは??が出力されます。 pc、eip、ipを含まないstack:セクション内の行とフレーム行を誤って照合しないように、windows-x64_64 ターゲットのndk-stackスタックを修正しました。次に例を示します。I/DEBUG ( 1151): #00 5f09db68 401f01c4 /system/lib/libc.so
- gabi++ を次のように修正しました。
- C++ thread-local オブジェクトを割り当てるために malloc() を使用しないようにします。
- libc.debug.malloc が userdebug/eng Android プラットフォーム ビルドで 0 以外になった場合の gabi++ 内のデッドロックを回避します。
- ヘッダーの修正:
- その他の変更点:
-
LOCAL_EXPORT_LDFLAGSを追加しました。- オプションが明示的に
ndk-buildに渡される統合ビルドシステムで使用するための設定NDK_PROJECT_PATH=nullを導入しました。この設定を使用すれば、ndk-buildはNDK_PROJECT_PATH.の検索を試みません。また、変数で NDK_PROJECT_PATH からデフォルト設定を抽出できなくなります。そのため、NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUGの各変数(オプション、デフォルトで 0 に設定される)や、Application.mkに含まれているその他のAPP_*変数を明示的に指定する必要があります(デフォルト値がある場合はデフォルト値のままにします)。 APP_ABIは、カンマ区切り値リストに列挙できるようになりました。次に例を示します。APP_ABI := "armeabi,armeabi-v7a"
-gオプションを使用して、android-ndk-r9c-cxx-stl-libs-with-debugging-info.zipという名前の別のオプション パッケージ内のデバッグ情報を使用してすべての STL を再ビルドできるようにしました。このオプションは、ndk-stackスクリプトで STL 全体のスタックダンプを出力するのに役立ちます。最後のストリップ ファイルのコードまたはサイズには影響ありません。- コンパイル時に
APP_ABIを報告するようにhello-jniサンプルを拡張しました。 arツールを確定モード(オプション-D)で使用して、静的ライブラリをビルドします(不具合 60705)。
Android NDK r9b(2013 年 10 月)
- 重要な変更点:
-
- レベル 13、15、16、17 の追加を含む、18 までのすべての Android API レベルの
include/android/*hとmath.hを更新しました。追加された API については、変更点 68012 と変更点 68014 のコミット メッセージをご覧ください(不具合 47150、不具合 58528、不具合 38423)。 - Renderscript のバインディングを含む、Android API レベル 19 に対するサポートを追加しました。
- 既存の armeabi-v7a ABI の
-mhard-floatに対するサポートを追加しました。Clang の詳細情報と現在の制限事項については、tests/device/hard-float/jni/Android.mkをご覧ください。 - GNU Compiler Collection(GCC)4.8 から 4.8.2 に移行し、診断色のサポートを追加しました。診断色を有効にするには、以下のように
-fdiagnostics-color=autoまたは-fdiagnostics-color=always,を設定するか、GCC_COLORSをエクスポートします。 詳しくは、GCC 言語非依存オプションをご覧ください。GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
- OpenGL ES 3.0 機能を実演するための新しい 2 つのサンプルである Teapot と MoreTeapots を追加しました。 これらのサンプルは、Android 4.1(API レベル 16)以降が搭載されたデバイスで動作します。
- GCC 4.7 と Clang 3.2 は、サポートが終了し、次回のリリースで削除されます。
- レベル 13、15、16、17 の追加を含む、18 までのすべての Android API レベルの
- 重要なバグの修正:
-
- 16 ビット相対ジャンプ テーブルを生成できない ARM GCC 4.6
thumb2に伴う問題を修正しました(GCC の不具合)。 g++.dg/cpp0x/lambda/lambda-defarg3.Cに対する GCC 4.8 内部コンパイラ エラー(ICE)を修正しました(変更点 62770、GCC の不具合)。- Windows 32 ビットの
*-gdb.exe実行可能ファイルを起動できない問題を修正しました(不具合 58975)。 - bullet ライブラリのビルド時の GCC 4.8 ICE を修正しました。エラー メッセージは次のとおりです。
(不具合 58916、GCC の不具合)internal compiler error: verify_flow_info failed
- プロローグ コードでアンワインドするために
ARM.exidxデータをスキップするように GDB/ARM ビルドを修正し、exidx ベースのスタック アンワインドを制御するためのコマンド(set arm exidx-unwinding)を追加しました(不具合 55826)。 - HI レジスタと HO レジスタが正しく再利用されない Clang 3.3 MIPS コンパイラの問題を修正しました。
dbx_reg_number内の MIPS 4.7 ICE に伴う不具合を修正しました。エラー メッセージは次のとおりです。 (GCC パッチ)external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
- 16 ビット相対ジャンプ テーブルを生成できない ARM GCC 4.6
- その他のバグの修正:
-
- ヘッダーの修正
- ARM の
WCHAR_MINとWCHAR_MAXを仕様に合わせて符号なしにするように修正しました(X86/MIPS バージョンは符号付き)。以前の動作を復元するには、_WCHAR_IS_ALWAYS_SIGNEDを定義します(不具合 57749)。 TCP_INFO状態列挙型を含めるようにinclude/netinet/tcp.hを修正しました(不具合 38881)。- c++11 モードの使用時の GCC 4.8 ツールチェーンでの警告の生成を停止するように
cdefs_elh.hのマクロ_C_LABEL_STRINGを修正しました(不具合 58135、不具合 58652)。 - ヘッダー
inttypes.hから存在しない関数imaxabsとimaxdivを削除しました。 pthread_exit()の戻り値とpthread_self()に伴う不具合を修正しました(不具合 60686)。- 欠落していた
mkdtemp()関数を追加しました(bionicヘッダーstdlib.hにはすでに存在します)。
- ARM の
- Android API レベル 11 で Clang を使用して
samples/gles3jniをビルドしたときに発生する問題を修正しました。 - オプションの
-gc-sectionsと--eh-frame-hdrを複数回指定できるように MCLinker を修正しました。 --no-warn-mismatchオプションを受け入れるように MCLinker を修正しました。- すべての VFPv4 デバイスで IDIV がサポートされることを前提としないように
cpu-featuresオプションを変更しました。このオプションは、Nexus 4 を含むホワイトリストに登録されたデバイスにのみ IDIV を追加します(不具合 57637)。 - 誤ってイベント プリディスパッチ操作のエラーを記録する
android_native_app_glue.cに伴う問題を修正しました。 gabi++停止と unexpected_handler に対するすべての操作をスレッドセーフにするように修正しました。ssax-instructionsとfenvのテストに合格できるように、Clang の-integrated-asオプションに伴ういくつかの不具合を修正しました。- 静的な実行可能ファイルの場合でもリンカー オプション
--eh-frame-hdrを渡すように GCC 4.6/4.7/4.8 コンパイラを修正しました。詳しくは、GCC のパッチをご覧ください。 CPU-ARCH-ABIS.htmlの余分なアポストロフィを修正しました。詳しくは、NDK-DEPENDS.htmlをご覧ください(不具合 60142)。- Windows での ndk-build の出力に含まれる余分な引用符を修正しました(不具合 60649)。
__atomic_fetch_add、__atomic_fetch_sub、__atomic_fetch_orなどの ARM の組み込みアトミック操作をコンパイルするように Clang 3.3 を修正しました。- カスタマイズされた
vfprintfに伴う Clang 3.3 の ICE を修正しました(Clang の不具合)。
- ヘッダーの修正
- その他の変更点:
-
- すべての GCC ビルドに対して OpenMP を有効にしました。この機能を使用するには、ビルド設定に以下のフラグを追加します。
コード例については、LOCAL_CFLAGS += -fopenmp LOCAL_LDFLAGS += -fopenmp
tests/device/test-openmpをご覧ください。 ld.mcldのサイズを大幅に削減(ld.bfd3.5 MB とld.gold7.5 MB を 1.5 MB に削減)した結果、速度が約 20% 向上しました。- C のみに適用できる(C++ には適用できない)オプションを指定するために、
LOCAL_CONLYFLAGSとAPP_CONLYFLAGSを追加しました。既存のLOCAL_CFLAGSとAPP_CFLAGSは C++ コンパイルにも使用されるため(ほとんどのオプションを 2 回指定する手間を省くため)、-std=gnu99などのオプションは g++ ビルドでは警告を伴って、clang++ ビルドではエラーを伴って失敗する可能性があります。 gabi++配列ヘルパー関数を追加しました。__aeabi_idiv0などの過去にブロックされたことのあるポイントをすぎた時点でスタックをアンワインドできるようにするために、すべてのlibgcc.aファイルを-funwind-tablesを使用してビルドするように GCC ビルドを変更しました。- MIPS GCC4.6/4.7/4.8 に新しい
-mmxuオプションによる Ingenic MXU のサポートを追加しました。 - ldxc1/sdxc1 も制御するように MIPS GCC 4.6/4.7/4.8
-mldc1-sdc1を拡張しました。 - crazy linker を追加しました。詳しくは、
sources/android/crazy_linker/README.TXTをご覧ください。 - 200x200 のピクセル領域ではなく、全画面に描画するように
bitmap-plasmaを修正しました。 - 同じファイルへのシンボリック リンクを作成することにより、Linux と Darwin のツールチェーンのサイズを 25% 削減しました。
- すべての GCC ビルドに対して OpenMP を有効にしました。この機能を使用するには、ビルド設定に以下のフラグを追加します。
Android NDK r9(2013 年 7 月)
- 重要な変更点:
-
- Android 4.3(API レベル 18)に対するサポートを追加しました。詳しくは、
STABLE-APIS.htmlと、samples/gles3jni/READMEの新しいコードの解説をご覧ください。 - Android 4.3(API レベル 18)以降でサポートされる OpenGL ES 3.0 用のヘッダーとライブラリを追加しました。
- NDK に GNU Compiler Collection(GCC)4.8 を追加しました。デフォルトはまだ GCC 4.6 のため、GCC 4.8 のオプションを明示的に有効にする必要があります。
ndk-buildビルドでは、NDK_TOOLCHAIN_VERSION=4.8をエクスポートするかApplication.mkに追加します。- スタンドアロン ビルドでは、以下のように
make-standalone-toolchain.shで--toolchain=オプションを使用します。
--toolchain=arm-linux-androideabi-4.8
注:
-Wunused-local-typedefsオプションは-Wallによって有効化されています。sources/cxx-stl/stlport/stlport/stl/config/features.hの 311 行目のように、コンパイル時アサートを使用する場合は必ず__attribute__((unused))を追加します。詳しくは、変更点 55460 をご覧ください。注: GCC 4.7 リリース以降では、ARM コンパイラがデフォルトで ARMv6 以降のビルド ターゲットに対してアラインされていないアクセスコードを生成します。この機能をサポートしていないカーネルの場合は、ビルド時に
-mno-unaligned-accessビルド オプションを追加する必要があります。 - Clang 3.3 のサポートを追加しました。
NDK_TOOLCHAIN_VERSION=clangビルド オプションがデフォルトで Clang 3.3 を選択するようになりました。注: GCC 4.4.3 と Clang 3.1 の両方が非推奨になり、次回の NDK リリースから削除される予定です。
- python 2.7.5 をサポートするように GNU Project Debugger(GDB)アップデートしました。
- Windows ホストをサポートするために MCLinker を追加しました。利用可能な場合は
ld.goldがデフォルトになるため、MCLinker を有効にするにはLOCAL_LDFLAGSまたはAPP_LDFLAGSに-fuse-ld=mcldを追加する必要があります。 - ELF ライブラリの依存関係を出力する
ndk-dependsツールを追加しました。詳しくは、NDK-DEPENDS.htmlをご覧ください(不具合 53486)。
- Android 4.3(API レベル 18)に対するサポートを追加しました。詳しくは、
- 重要なバグの修正:
-
android_native_app_glueの潜在的なイベント処理の不具合を修正しました(不具合 41755)。- NEON の読み込みに十分なアライメントを生成し、VST 命令と VLD 命令を保存するように ARM/GCC-4.7 ビルドを修正しました(GCC の不具合 57271)。
- 文字列リテラルに対する一定の負のインデックス値に関する GCC 4.4.3/4.6/4.7 内部コンパイラ エラー(ICE)を修正しました(不具合 54623)。
- オブジェクト アドレスを使用した定数初期化に関する GCC 4.7 セグメンテーション違反を修正しました (不具合 56508)。
- Boost 1.52.0 使用時の
-O値に対する GCC 4.6 ARM セグメンテーション違反を修正しました(不具合 42891)。 wait4()関数をサポートするようにlibc.soとlibc.aを修正しました(不具合 19854)。clone()関数を含めるように、x86 libc.so ファイルと libc.a ファイルを更新しました。linker.listファイルが空であるかまたは使用されないLOCAL_SHORT_COMMANDSのバグを修正しました。- Mac OS 上の GCC MIPS ビルドを、CFI ディレクティブを使用するように修正しました。このディレクティブがないと、
ld.mcld --eh-frame-hdrが頻繁に失敗します。 llvm/lib/VMCore/Value.cppでの Clang 3.2 X86/MIPS 内部コンパイラ エラーを修正しました(変更点 59021)。- GCC 4.7 64 ビット Windows アセンブラのクラッシュを修正しました(エラー:
out of memory allocating 4294967280 bytes)。 --startまたは--launchのアクションが GNU Debug Server を待機するようにndk-gdbスクリプトを更新しました。これにより、実行パスの早い段階で設定されたブレークポイント(JNI コード内のブレークポイントなど)に確実にヒットするようになります(不具合 41278)。注: この機能には jdb が必要であり、保留中のブレークポイントに関する警告を生成します。 以前の動作を復元するには、
--nowaitオプションを指定します。- ライブラリ リストが空の場合の GDB のクラッシュを修正しました。
bx pcまたはblx pcThumb 命令の後にstepiコマンドを使用した場合の GDB のクラッシュを修正しました(不具合 56962、不具合 36149)。DT_DEBUGの代わりにDT_MIPS_RLD_MAPを探すよう MIPS のgdbserverを修正しました(不具合 56586)。- ndk-build スクリプト内の循環依存関係を修正しました。たとえば A-> B かつ B-> B の場合、B はビルドから削除されていました (不具合 56690)。
- その他のバグの修正:
-
ndk-buildスクリプトを修正し、Clang のバージョンをコマンドライン オプション(NDK_TOOLCHAIN_VERSION=clang3.2など)として指定できるようにしました。以前は、バージョンは環境変数としてのみ指定が可能でした。- Clang コンパイラの使用時の MIPS ビルド ターゲットの
_Unwind_Exceptionの gabi++ サイズを 24 に修正しました(変更点 54141)。 ndk-build cleanコマンドの使用時にビルド済みの静的ライブラリを含むプロジェクトからビルドしたライブラリが確実に削除されるようにndk-buildスクリプトを修正しました(変更点 54461、変更点 54480)。- 出力が冗長にならないように
NDK_ANALYZE=1オプションを変更しました。 - 下位互換性を使用するビルドの場合に
backward/パスを含めるようにgnu-libstdc++/Android.mkを修正しました(不具合 53404)。 stlport newが乱数値を返すことがある問題を修正しました。APP_ABISではなくCPU_ABISの順序と一致するようにndk-gdbを修正しました(不具合 54033)。- Mac OS X 上の NDK 64 ビットビルドでコンパイラの誤ったパスが選択される問題を修正しました(不具合 53769)。
- 64 ビット Windows Vista を検出するようにビルド スクリプトを修正しました (不具合 54485)。
- x86 の
ntonl/swap32のエラーinvalid 'asm': operand number out of rangeを修正しました(不具合 54465、変更点 57242)。 - 文字列リテラルをマージするように
ld.goldを修正しました。 - 大きなシンボルのアライメントを処理するように
ld.goldを修正しました。 --sort-section=nameオプションを有効にするようにld.goldを更新しました。- 静的にリンクされたプログラムの場合は
-export-dynamicオプションを抑制するように GCC 4.4.3/4.6/4.7 を修正しました。GCC は、静的にリンクされたプログラムの場合に.interpセクションを追加しなくなりました。 _Unwind_Control_Blockの一貫性のないtypedefに関する GCC 4.4.3stlportコンパイル エラーを修正しました(不具合 54426)。- 末尾に
\r文字が付加されるためにビルドエラーを引き起こす可能性がある Windows 上で作成されたAndroidManifest.xmlファイルに対処するよう、awkスクリプトを修正しました(不具合 42548)。 prebuilts/ディレクトリを調査してホストが 32 ビットか 64 ビットかを検出するようにmake-standalone-toolchain.shを修正しました。- Clang 3.2
-integrated-asオプションを修正しました。 - Clang 3.2 ARM EHABI コンパクト モデルの
pr1とpr2のハンドラデータを修正しました。 - 以下の Clang エラーを修正するために Clang
-mllvm -arm-enable-ehabiオプションを追加しました。clang: for the -arm-enable-ehabi option: may only occur zero or one times!
- アプリ マニフェスト内に
uses-sdk要素が存在しない場合のビルドエラーを修正しました(不具合 57015)。
- その他の変更点:
-
- ヘッダーの修正
errno.h内の__set_errnoが非推奨になり、libc.soでエクスポートされなくなったため、__set_errnoをインライン関数にするようにヘッダーを変更しました。stdint.hをインクルードするようにelf.hを変更しました(不具合 55443)。- 他のヘッダーとは独立してインクルードされるように
sys/un.hを修正しました(不具合 53646)。 const AInputEvent* motion_eventを取得するように、すべてのMotionEvent_getHistoricalAPI を修正しました(不具合 55873)。const void*を取得するようにmalloc_usable_sizeを修正しました(不具合 55725)。- C99 との互換性を高めるように stdint.h を修正しました (変更点 46821)。
WCHAR_MAXとWCHAR_MINを再定義しないよう、wchar.hを修正しました。- ポインタ関連の
PRIマクロとSCNマクロの<inttypes.h>宣言を修正しました(不具合 57218)。 - API レベルが 9 未満の場合に
__WCHAR_TYPE__が 32 ビットになるようにsys/cdefs.hヘッダーを変更しました。これにより、すべての API レベルでwchat_tが 32 ビットになります。以前の動作を復元するには、_WCHAR_IS_8BITブール変数を定義します(不具合 57267)。
- NDK
docs/の書式設定を増やし、各種ドキュメントに修正を加えました。 - 静的ライブラリのビルド時のシンアーカイブ テクニックに対するサポートを追加しました(不具合 40303)。
- オプション
--stl=stlportを指定する際にgnustlだけでなくstlportライブラリもサポートするよう、スクリプトmake-standalone-toolchain.shを更新しました。詳しくは、STANDALONE-TOOLCHAIN.htmlをご覧ください。 - ホストの clang 定義と clang++ 定義が誤って使用されることを避けるため、
--llvm-version=オプションでclangとclang++に加えて$TOOLCHAIN_PREFIX-clangスクリプトと$TOOLCHAIN_PREFIX-clang++スクリプトが作成されるようmake-standalone-toolchain.shスクリプトを更新しました。 - GCC によってコンパイルされたコードとの互換性を高めるために、NDK 内で無効になっているアップストリーム Clang の 2 つの最適化を再度有効にするための 2 つのフラグを追加しました。
- Clang 3.2+ で欠落していた戻りセマンティクスを再度有効にするため、
-fcxx-missing-return-semanticsフラグを追加しました。通常、すべてのパスは値を返す関数の return 文で終わる必要があります。そうでない場合、clang は return 文を使用せず、パスに未定義命令(またはデバッグモードのトラップ)を挿入します。コードが正しいことが確認できている場合は、このフラグを使用してオプティマイザが未定義の動作を利用できるようにします。そうでない場合は、このフラグを使用しないでください。呼び出し元は依然として不正なランダム値を受け取る可能性がありますが、オプティマイザがそれを利用することによりコードのデバッグが困難になることはありません。 - 静的コンストラクタを含むグローバル変数を定数に昇格させるための
-fglobal-ctor-const-promotionフラグを追加しました。LLVM のグローバル変数最適化パスは、このフラグを使用して静的コンストラクタを含むグローバル変数を評価し、それらをグローバル定数に昇格させようとします。この最適化は正常ですが、GCC によってコンパイルされたコードとの矛盾を引き起こす可能性があります。たとえば、コードがconst_castを実行し、定数を変更可能にキャストして変更する場合があります。GCC では変数が読み書き可能なため、コードが誤って実行されます。Clang では const 変数が読み取り専用メモリ内に存在するため、アプリのクラッシュを引き起こす可能性があります。
- Clang 3.2+ で欠落していた戻りセマンティクスを再度有効にするため、
- MIPS GCC コンパイラと Clang コンパイラに
-mldc1-sdc1を追加しました。デフォルトで、コンパイラは 8 バイトのオブジェクトを正しく配置し、それらを移動するためのldc1命令とsdc1命令を発行します。アプリが、必ずしもデフォルトのアロケータと同じ方法で新しいオブジェクトの 8 バイト境界に揃えるわけではないカスタム アロケータを使用している場合は、整列されていないメモリ上でのldc1とsdc1の操作によってアプリがクラッシュすることがあります。この場合は、-mno-ldc1-sdc1フラグを使用して問題を解決します。 APP_PLATFORM_LEVELがAPP_MIN_PLATFORM_LEVELを上回っている場合は、「警告」から「情報」にイベント重大度をダウングレードしました。jni/Application.mkではAPP_PLATFORM_LEVELがAPP_PLATFORMを下回る場合があります。これは、NDK にすべてのレベルに対応するヘッダーがないためです。この場合は、実際のレベルが下位に移動されます。APP_MIN_PLATFORM_LEVELは、アプリのマニフェスト内のandroid:minSdkVersionによって指定されます(不具合 39752)。android_getCpuIdArm()メソッドとandroid_setCpuArm()メソッドをcpu-features.cに追加しました。これにより、ARM CPUID 情報の取得が容易になります(不具合 53689)。- Clang コンパイルに GCC 4.7 の
as/ldを使用するようにndk-buildを変更しました。注: GCC 4.7 では、
monotonic_clockとis_monotonicの名前がそれぞれsteady_clockとis_steadyに変更されています。 ndk-buildスクリプトに以下の新しい警告を追加しました。LOCAL_LDLIBS/LDFLAGSが静的ライブラリ モジュールで使用されている場合の警告を追加しました。- 設定にビルドするモジュールが含まれていない場合の警告を追加しました。
- 共有ライブラリまたは実行可能モジュールの
LOCAL_LDLIBS/LDFLAGSで使用されている非システム ライブラリに関する警告を追加しました。
APP_MODULESが定義されておらず、静的ライブラリしかAndroid.mk内に列挙されない場合は、スクリプトがそのすべてを強制ビルドするようにビルド スクリプトを更新しました(不具合 53502)。LOCAL_SRC_FILESで絶対パスをサポートするようにndk-buildを更新しました。-tuiオプションが有効になっている*-gdb実行可能ファイルと重複する*-gdbtui実行可能ファイルを削除しました。- Edison Design Group(EDG)コンパイラ フロントエンドが
_STLP_HAS_INCLUDE_NEXTをオンに戻したときに警告するようにビルド スクリプトを更新しました(不具合 53646)。 - デフォルトの
$PROJECT/libsからのlibraries/gdbserverのパスのオーバーライドを許可するための環境変数NDK_LIBS_OUTを追加しました。詳しくは、OVERVIEW.htmlをご覧ください。 - 書式文字列を保護する
-Wformat -Werror=format-securityを使用してコードをコンパイルするように ndk-build スクリプトのデフォルトを変更しました。無効にする場合は、LOCAL_DISABLE_FORMAT_STRING_CHECKS=trueを設定します。詳しくは、ANDROID-MK.htmlをご覧ください。 ndk-gdb-pyに STL プリティプリントのサポートを追加しました。詳しくは、NDK-GDB.htmlをご覧ください。- googletest フレームワークに基づくテストを追加しました。
- 現在のシェルが
bashでない場合に警告する通知をツールチェーン ビルド スクリプトに追加しました。
- ヘッダーの修正
Android NDK r8e(2013 年 3 月)
- 重要な変更点:
-
- 64 ビット ホスト ツールチェーン セット(パッケージ名のサフィックスが
*-x86_64.*)を追加しました。詳しくは、CHANGES.HTMLとNDK-BUILD.htmlをご覧ください。 - Clang 3.2 コンパイラを追加しました。デフォルトは GCC 4.6 のままです。Clang コンパイラの使用方法については、
CHANGES.HTMLをご覧ください。 - Linux/MacOSX ホスト用の静的コード アナライザを追加しました。アナライザの使用方法については、
CHANGES.HTMLをご覧ください。 - Linux/MacOSX ホスト用の MCLinker を試験運用中の機能として追加しました。
ld.goldリンカーは使用可能であればデフォルトになるため、それを明示的に有効にする必要があります。詳しくは、CHANGES.HTMLをご覧ください。 - モジュールの依存関係に対してトポロジカル ソートを使用するように ndk-build を更新しました。今後は、
LOCAL_STATIC_LIBRARIES、LOCAL_WHOLE_STATIC_LIBRARIES、LOCAL_SHARED_LIBRARIES内で指定されているライブラリの順序を、ビルドが自動的に並べ替えるようになります。詳しくは、CHANGES.HTMLをご覧ください(不具合 39378)。
- 64 ビット ホスト ツールチェーン セット(パッケージ名のサフィックスが
- 重要なバグの修正:
-
-O2内のすべてのツールチェーンをビルドするようにビルド スクリプトを修正しました。以前のリリースのツールチェーンは最適化を行わず、正しくビルドされていませんでした。- 64 ビットの Mac OS X では無条件に Clang/llvm をビルドするようにビルド スクリプトを修正しました。
- GCC 4.6/4.7 内部コンパイラ エラー(
gen_thumb_movhi_clobber at config/arm/arm.md:5832)を修正しました(不具合 52732)。 - GCC/ARM 4.6/4.7 が 64 ビット アトミック組み込み関数を使用してコードをリンクできないビルド問題を修正しました(不具合 41297)。
- GCC 4.7 リンカー DIV 使用不一致エラーを修正しました (Sourceware の不具合)。
- GCC 4.7 内部コンパイラ エラー(
build_data_member_initialization, at cp/semantics.c:5790)を修正しました。 - GCC 4.7 内部コンパイラ エラー(
redirect_eh_edge_1, at tree-eh.c:2214)を修正しました。 (不具合 52909)。 - GCC 4.7 セグメンテーション違反を修正しました (GCC の不具合)。
<chrono>クロック分解能を修正し、steady_clockを有効にしました(不具合 39680)。- GCC 4.7 libstdc++ に対して
_GLIBCXX_HAS_GTHREADSを有効にするようにツールチェーンを修正しました(不具合 41770、不具合 41859)。 posix_memalignの欠落が原因で X86 MXX/SSE コードをリンクできない問題を修正しました(変更点 51872)。i386.cの関数distance_non_agu_define_in_bb()の GCC4.7/X86 セグメンテーション違反を修正しました(変更点 50383)。- 以前の
cmovの動作を復元するように GCC4.7/X86 を修正しました(GCC の不具合)。 - libstdc++/GCC4.7 での
setlocale()の NULL 戻り値の処理を修正しました(不具合 46718)。 __exidx_startと__exidx_start_endに対するld.goldランタイム未定義参照を修正しました(変更点 52134)。- Eigen ライブラリの使用時の Clang 3.1 内部コンパイラ エラーを修正しました(不具合 41246)。
- C++11 モードでの
<chrono>を含む Clang 3.1 内部コンパイラ エラーを修正しました(不具合 39600)。 - 均一に初期化された
rvalueに対するメソッド呼び出し用のオブジェクト コードを生成する際の Clang 3.1 内部コンパイラ エラーを修正しました(不具合 41387)。 - Clang 3.1/X86 スタック再アライメントを修正しました (変更点 52154)。
- Android 4.1.2 でのデバッグ時の GNU Debugger(GDB)SIGILL に伴う問題を修正しました(不具合 40941)。
- シンボルに長い間接ファイルパスが含まれている場合に GDB が
source:lineブレークポイントを設定できない問題を修正しました(不具合 42448)。 - MIPS PIE 実行可能ファイルの GDB
read_program_headerを修正しました(変更点 49592)。 uncaught_exception()のSTLportセグメンテーション違反を修正しました(変更点 50236)。DW_EH_PE_udata2、DW_EH_PE_udata4、DW_EH_PE_udata8のアラインされていないアクセスが原因の例外処理でのSTLportバスエラーを修正しました。nothrow new[]演算子に伴う Gabi++ 無限反復問題を修正しました(不具合 52833)。- 例外ハンドラ ポインタへの誤った Gabi++ オフセットを修正しました (変更点 53446)。
- 例外オブジェクト上の不要なフリーの Gabi++ を削除しました(変更点 53447)。
- その他のバグの修正:
-
- 以下の NDK ヘッダーを修正しました。
- メモリ不足エラーの後に、警告なしに終了するのではなく、中断するように
STLportを修正しました。 - API レベル 8 以前でコンパイルできるようにシステム ヘッダーと Gabi++ ヘッダーを修正しました。
/proc/self/auxvを解析しないようcpufeaturesを修正しました(不具合 43055)。- ホスト libstdc++ に依存しないように、また、Windows プラットフォームでは
libgcc_sjlj_1.dllライブラリに依存しないようにld.goldを修正しました。 .vsaveに一貫性のないレジスタリストを発行し、アセンブラを中断させる Clang 3.1 を修正しました(変更点 49930)。- libgabi++ をコンパイルして、MIPS ビルド ターゲット用の
test-stlportテストに合格するように Clang 3.1 を修正しました(変更点 51961)。 - C ではなく、C++ の場合にデフォルトで例外のみを有効にするように Clang 3.1 を修正しました。
- ほとんどの GNU 例外テストに合格するように Clang 3.1 のいくつかの不具合を修正しました。
-cc1を検出して、発見時に-targetを指定しないように、スタンドアロン NDK コンパイラのclangスクリプトとclang++スクリプトを修正しました。Application.mkでNDK_APP_OUTセットを監視するようndk-buildを修正しました。setjmp.hで宣言されたsigsetjmp関数とsiglongjmp関数が欠落している X86libc.soとlib.aを修正しました(不具合 19851)。- C++ 11 の Clang で動作するように GCC 4.4.3/4.6/4.7 libstdc++ にパッチを適用しました (Clang の不具合)。
HOST_AWKに渡される引数内の cygwin パスを修正しました。- Windows でプロジェクトの JNI ディレクトリから実行したときの
ndk-buildスクリプト警告を修正しました(不具合 40192)。 LOCAL_PATH定義内の makefile の末尾が空白の場合にndk-buildスクリプトがビルドしない問題を修正しました(不具合 42841)。
- その他の変更点:
-
- GCC/MIPS ツールチェーンでのスレッド化のサポートを有効にしました。
- GNU libstdc++ で以前の非表示の表示設定をデフォルトの表示設定にするように、GCC 例外処理ヘルパーの
__cxa_begin_cleanupと__cxa_type_matchを更新しました。詳しくは、CHANGES.HTMLをご覧ください。 - Gabi++ と STLport の静的ライブラリが例外処理ヘルパーを除いて非表示の表示設定でビルドされるようにビルド スクリプトを更新しました。
STLportが Thumb モードの ARM に対してビルドされるようにビルドを更新しました。- Gabi++ に
std::set_new_handlerのサポートを追加しました(不具合 52805)。 - GNU libstdc++ の
FUTEXシステム呼び出しを有効にしました。 - ビルド済みの静的ライブラリをプロジェクトの
obj/local/<abi>/ディレクトリにコピーしないようにndk-buildを更新しました(不具合 40302)。 __ARM_ARCH_5*__を ARMtoolchains/*/setup.mkスクリプトから削除しました(不具合 21132)。- ARM の thumb で追加の GNU libstdc++ ライブラリをビルドしました。
- 32 ビット FPU を使用した MIPS 浮動小数点
madd/msub/nmadd/nmsub/recip/rsqrt命令を有効にしました。 - GCC 4.6 および 4.7 のグラファイト ループ オプティマイザを有効にして、より多くの最適化(
-fgraphite、-fgraphite-identity、-floop-block、-floop-flatten、-floop-interchange、-floop-strip-mine、-floop-parallelize-all、-ftree-loop-linear)を行えるようにしました(情報)。 - メモリアクセスを分析して最適化する Linux と Mac OS X の 32 ビットホスト上の Clang 3.1 に対して
pollyを有効にしました(情報)。 - Linux 上の GCC 4.7、GCC 4.6、Clang 3.2、Clang 3.1 で
-fltoを有効にしました(LLVMgold.so 経由の Clang LTO)。ld.goldが使用できないため、MIPS コンパイラ ターゲットはサポートされません。 - GCC 4.6/4.7 の
ld.goldに対して--pluginと--plugin-optを有効にしました。 - GCC 4.7 の
ld.goldに対して--text-reorderを有効にしました。 - bionic ヘッダー内の
isinfスクリプトを定義解除する_GLIBCXX_USE_C99_MATHを使用して GNU libstdc++ を設定しました。詳しくは、CHANGES.htmlをご覧ください。 - ビルド スクリプトに
APP_LDFLAGSを追加しました。詳しくは、ANDROID-MK.htmlをご覧ください。 NDK_LOG=0でNDK_LOGを無効にできるようにビルド スクリプトを更新しました。NDK_HOST_32BIT=0でホスト デベロッパー環境 32 ビット ツールチェーンを無効にできるようにビルド スクリプトを更新しました。- デフォルトの GCC/X86 フラグである
-march=と-mtune=を、pentiumproとgenericからi686とatomに変更しました。 - ツールチェーン ビルド スクリプトを次のように拡張しました。
- 大量の並列ビルド処理を回避する
mingwビルドタイプのbuild-gcc.sh内の競合状態を修正しました。 build-gabi++.shとbuild-stlport.shを NDK パッケージから実行できるように更新しました(不具合 52835)。MSysユーティリティ コレクション内のrun-tests.shを修正しました。- 64 ビットホスト ツールチェーンと Canadian Cross ビルドのサポートを充実させました。
build-mingw64-toolchain.shスクリプトを最新バージョンにアップデートしました。- 非表示の表示設定を使用せずに
libgnustl_static.aとstlport_static.aをビルドするためのオプションを追加しました。
- 大量の並列ビルド処理を回避する
Android NDK r8d(2012 年 12 月)
- 重要な変更点:
-
- GNU Compiler Collection(GCC)4.7 コンパイラを NDK に追加しました。デフォルトはまだ GCC 4.6 コンパイラであるため、次のように新しいバージョンを明示的に有効にする必要があります。
ndk-buildでは、NDK_TOOLCHAIN_VERSION=4.7変数をエクスポートするか、Application.mkに追加します。- スタンドアロン ビルドでは、次のように
make-standalone-toolchain.shに--toolchain=オプションを追加します。--toolchain=arm-linux-androideabi-4.7
注: この機能は試験運用版です。お試しいただいて問題があればご報告ください。
- gabi++ による
stlport例外のサポートを追加しました。新しい gabi++ はdlopenと関連コードに依存することに注意してください。これには次のような意味があります。-staticオプションを使用した静的実行可能ファイルのビルドや、APP_STL := stlport_staticを使用したlibstlport_static.aのインクルードができなくなりました(スタンドアロン ツールチェーンではまだ-staticオプションを使用できます)。include $(BUILD_EXECUTABLE)を使用した動的実行可能ファイルのコンパイルは引き続き動作します。これは、コンパイラが自動的に-ldlオプションを追加するためです。- プロジェクトが
-nostdlibと {-Wl,--no-undefined} を使用してリンクしている場合は、手動で-ldlオプションを含める必要があります。
CPLUSPLUS-SUPPORT.htmlをご覧ください。注: この機能は試験運用中であり、GCC 4.4.3 や Clang 3.1 よりも GCC 4.6/4.7 コンパイラで効率的に動作します。お試しいただいて問題があればご報告ください。
- 古い Android C ライブラリ(bionic)と互換性があるグローバル デフォルト パスと、GCC 4.6 以降のコンパイラを使用した
-fstack-protector、-fstack-protector-all、-fstack-protector-strong用の新しい tls パス(%gs:20)のどちらかを選択するために使用する、x86 用の-mstack-protector-guard=オプションを追加しました。注:
-mstack-protector-guard設定だけでは-fstack-protector*オプションは有効になりません。 - Android 4.1 以降で
/procによる自動検出が使用できない場合に使用するandroid_setCpu()関数をsources/android/cpufeatures/cpu-features.cに追加しました(Chromium の不具合 164154)。
- GNU Compiler Collection(GCC)4.7 コンパイラを NDK に追加しました。デフォルトはまだ GCC 4.6 コンパイラであるため、次のように新しいバージョンを明示的に有効にする必要があります。
- 重要なバグの修正:
-
ndk-buildスクリプトの使用時の不要なオブジェクト ファイルの再ビルドを修正しました(不具合 39810)。- 以下のエラーを生成する Mac OS X 10.6.x 用の NDK 8c リリースに伴うリンカー不具合を修正しました。
この問題の原因は、Mac OS X 10.7 上のビルドにありました。このビルドでは、Mac OS 10.6.x および NDK と互換性のないバイナリが生成されていました。dyld: lazy symbol binding failed: Symbol not found: _memmem Referenced from: ...../arm-linux-androideabi/bin/ld Expected in: /usr/lib/libSystem.B.dylib
- Clang++ スタンドアロン ビルド スクリプトから
-x c++オプションを削除しました(不具合 39089)。 - Cygwin で
NDK_TOOLCHAIN_VERSION=clang3.1オプションを使用した場合の不具合を修正しました(不具合 39585)。 - Cygwin または MinGW 環境を使用したスタンドアロン ツールチェーンの生成を許可するように
make-standalone-toolchain.shスクリプトを修正しました。生成されたツールチェーンは Cygwin、MingGW、または CMD.exe 環境で使用できます(不具合 39915、不具合 39585)。 - ARM と X86 用の android-14 ビルドに欠落していた
SL_IID_ANDROIDBUFFERQUEUESOURCEオプションを追加しました(不具合 40625)。 ANDROID_CPU_X86_FEATURE_MOVBE機能の x86 CPU 検出を修正しました(不具合 39317)。- 標準テンプレート ライブラリ(STL)で
.cppファイル拡張子が付いていない C++ ソースを使用できない不具合を修正しました。 - reload1.c:1061 での GCC 4.6 ARM 内部コンパイラ エラーを修正しました (不具合 20862)。
- emit-rtl.c:1954 での GCC 4.4.3 ARM 内部コンパイラ エラーを修正しました (不具合 22336)。
- postreload.c:396 での GCC 4.4.3 ARM 内部コンパイラ エラーを修正しました(不具合 22345)。
- GCC 4.6/4.7 でラムダ関数がスキップされる問題を修正しました (不具合 35933)。
- その他のバグの修正:
-
- NDK ヘッダー ファイルの修正は次のとおりです。
__WINT_TYPE__とwint_tが同じ型になるよう修正しました。android/bitmap.hのスペルミスを修正しました。 (不具合 15134)。errno.hのスペルミスを修正しました。sys/cdefs.h内の__STDC_VERSION__の有無のチェックを追加しました(不具合 14627)。byteswap.hとdirent.h内のヘッダーを再編成しました。PAGE_SIZE設定を提供するpage.hをインクルードするようlimits.hを修正しました(不具合 39983)。glGetAttribLocation()とglGetUniformLocation()の戻り値の型をintからGLintに修正しました。- x86 ビルド用の
__BYTE_ORDER定数を修正しました(不具合 39824)。
- ARM ビルドで
-Osを-O2で上書きしないようにndk-buildスクリプトを修正しました。 HOST_AWK、HOST_SED、HOST_MAKEの各設定の上書きを許可するようにビルド スクリプトを修正しました。- Intel C/C++ コンパイラ(ICC)によってビルドされたオブジェクトをリンクする
fsck_msdosビルドでのld.goldに関する不具合を修正しました。 - 仕様を遵守するように Clang の ARM EHABI のサポートを修正しました。
solibイベントでターゲットのリンクマップをたどるのに要する時間を短縮するよう GNU Debugger(GDB)を修正しました(不具合 38402)。- 共有ライブラリのリンク時に欠落していた
libgcc.aファイルを修正しました。
- NDK ヘッダー ファイルの修正は次のとおりです。
- その他の変更点:
-
- ARM 用の 64 ビット組み込みアトミック関数を GCC 4.6 に移植しました。
- オーディオ出力遅延に関するドキュメントのほかに、関連するドキュメントと修正を追加しました。
- 非 void 関数が return 文のないパスに対して
SIGILL信号を発するように Clang を使用したデバッグビルドを修正しました。 - GCC 4.6 ツールチェーンに
--llvm-version=3.1を追加するのと等価のサフィックス-clang3.1を受け入れるようmake-standalone-toolchain.shを更新しました。 - GCC と Clang のバグレポート URL を https://source.android.com/source/report-bugs.html に更新しました。
llvm-objdumpに ARM ELF のサポートを追加しました。- Clang ビルドの警告「treating c input as c++」を抑制しました。
libiberty.aの 32 ビット版だけがビルドされ、lib32/に配置されるようにビルドを更新しました。
Android NDK r8c(2012 年 11 月)
- 重要な変更点:
-
- NDK に Clang 3.1 コンパイラを追加しました。デフォルトはまだ GNU Compiler Collection(GCC)4.6 であるため、次のように Clang コンパイラ オプションを明示的に有効にする必要があります。
ndk-buildでは、NDK_TOOLCHAIN_VERSION=clang3.1をエクスポートするか、この環境変数設定をApplication.mkに追加します。- スタンドアロン ビルドでは、
--llvm-version=3.1をmake-standalone-toolchain.shに追加して、makefile のCCとCXXを<tool-path>/bin/clangと<tool-path>/bin/clang++で置き換えます。詳しくは、STANDALONE-TOOLCHAIN.htmlをご覧ください。
注: この機能は試験運用版です。お試しいただいて問題があればご報告ください。
- Windows ツールチェーン用の Gold リンカー
ld.goldを追加しました。Gold リンカーは、すべてのホスト上の ARM と X86 用のデフォルトでもあります。これをオーバーライドしてld.bfdリンカーを使用するには、LOCAL_LDFLAGS += -fuse-ld=bfdをAndroid.mkに追加するか、リンクを実行する g++/clang++ コマンドラインに-fuse-ld=bfdを渡します。 - 診断が困難なビルドエラーを回避するために、
ndk-build[.cmd]スクリプトとndk-gdbスクリプトへの NDK パスに含まれるスペースのチェックを追加しました。 - API レベル処理に以下の変更を加えました。
APP_PLATFORM、project.properties、default.propertiesでandroid-13を介してandroid-10を指定するプロジェクトがandroid-14ではなくandroid-9に対してリンクするようにビルドロジックを変更しました。- android-16(Jelly Bean)以降を使用した実行可能ファイルが位置独立実行形式(PIE)用の
-fPIEオプションを使用してコンパイルされるようにビルドを更新しました。新しいAPP_PIEオプションを使用すれば、この動作を制御することができます。詳しくは、APPLICATION-MK.htmlをご覧ください。注: 14 を超えるすべての API レベルは引き続き
platforms/android-14に対してリンクします。新しいplatforms/android-Nは追加されていません。 - 調整済みの API レベルがプロジェクトの
AndroidManifest.xml内のandroid:minSdkVersionを上回っている場合に警告を出力するようにndk-buildを変更しました。
- 新しい ARM 固有の機能を含めるように
cpu-featuresヘルパー ライブラリを更新しました。詳しくは、sources/android/cpufeatures/cpu-features.hをご覧ください。 - X86 プラットフォーム上の長倍精度を 8 バイトに変更しました。このデータ型は倍精度と同じサイズになりましたが、まだ別の型として扱われます。
APP_ABI=armeabi-v7aのビルドを次のように更新しました。- リンカーに
-march=armv7-aパラメータを渡すようにこのビルドタイプを変更しました。この変更によって、v7 固有のライブラリとcrt*.oが正しくリンクされることが保証されます。 - 以前のリリースで使用されていた
-mfpu=vfpオプションの代わりに、-mfpu=vfpv3-d16をndk-buildに追加しました。
- リンカーに
- NDK に Clang 3.1 コンパイラを追加しました。デフォルトはまだ GNU Compiler Collection(GCC)4.6 であるため、次のように Clang コンパイラ オプションを明示的に有効にする必要があります。
- 重要なバグの修正:
-
- ルート権限を使用して
make-standalone-toolchain.shを実行すると、一部のユーザーがスタンドアロン ツールチェーンにアクセスできなくなる不具合を修正しました(不具合 35279)。- NDK リリース パッケージ内のすべてのファイルと実行可能ファイルに、読み取りパーミッションと実行パーミッションが割り当てられます。
libstdc++.aの所有権 / グループがコピー時に保持されるようになりました。
- Windows のビルド済み
echo.exeから不要な\rを削除しました。不要な\rが誤ってパスに含まれていたために、GNU Debugger(GDB)でgdb.setupが中断していました(不具合 36054)。 host-mkdirの実装でのタイミングの不具合が原因で中断することがあった Windows の並列ビルドを修正しました(不具合 25875)。- デフォルトで
typeinfo名をマージしないよう、GCC 4.4.3 GNUlibstdc++を修正しました。詳しくは、toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfoをご覧ください(不具合 22165)。 - コンテキストが
nullであり、TREE_CODEで参照解除されている場合に GCC がクラッシュする、GCC 4.6cp/mangle.c::write_unscoped_name内のnullコンテキストに関する不具合を修正しました。 - 浮動小数の ARM NEON 固有の型定義に関する GCC 4.4.3 クラッシュを修正しました(不具合 34613)。
- 参照解除された値を保持する古いスタック位置が返され、ランタイム クラッシュが発生する
STLport内部の_IteWrapper::operator*()実装を修正しました(不具合 38630)。 - ARM 固有の修正は次のとおりです。
- 「mangling of <va_list> was changed in GCC 4.4」という警告を発しないよう、ARM GCC 4.4.3/4.6
g++を修正しました。-Wno-psabiスイッチを使用してこの警告を回避する必要がなくなりました。 LOCAL_SRC_FILESで.armサフィックスまたは.neonサフィックスを使用したプロジェクトでAPP_STLも使用した場合の問題を修正しました。ndk-buildスクリプトはAPP_STLを使用してコンパイルに STLheader/libパスを追加する前に、LOCAL_SRC_FILESで C++ ファイルを検索します。ndk-buildを変更して、検索の前に.armサフィックスと.neonサフィックスを除外するようにしました。これを行わないと、myfile.cpp.arm.neonなどのLOCAL_SRC_FILES内のアイテムが C++ コードとしてコンパイルされません。- GNU Binutils でエラー メッセージ「assertion fail」を発生させていた
tag_FP_archを使用せずに、古い binutils からオブジェクトをリンクできるようにbinutils-2.21/ld.bfdを修正しました(不具合 35209)。 binutils-2.19/ldが新しいbinutils-2.21によってビルド済みのオブジェクトをリンクしたときに発生する警告「Unknown EABI object attribute 44」を削除しました。headers/libsをサブディレクトリarmv7-a/thumbに生成するようmake-standalone-toolchain.shを変更することで、-mthumbと-march=armv7-aの両方を使用した GNUstdc++コンパイルにおける不具合を修正しました(不具合 35616)。- 「unresolvable R_ARM_THM_CALL relocation」エラーを修正しました(不具合 35342)。
charからの符号拡張時に間違ったオペランド型を期待している ARM バックエンドによって引き起こされる、reload1.c:3633の内部コンパイラ エラーを修正しました(GCC の不具合 50099)。- 負のシフト量に伴う内部コンパイラ エラーを修正しました (GCC の不具合)。
- 「mangling of <va_list> was changed in GCC 4.4」という警告を発しないよう、ARM GCC 4.4.3/4.6
ndk-buildx86 ABI ターゲットのデフォルトでもある X86 用の-fstack-protectorを修正しました。- MIPS 固有の修正は次のとおりです。
- MIPS
libstlport_*のコンパイル時に_STLP_LITTLE_ENDIANを 1 に設定することにより、STLportエンディアンを修正しました。 - LLVM のコンパイル時の GCC
__builtin_unreachableの不具合を修正しました(GCC の不具合 54369)。 - CPU を 100% 消費する
cc1コンパイル プロセスに対する修正を移植しました(GCC の不具合 50380)。
- MIPS
- GNU Debugger 固有の修正は次のとおりです。
- ビルドにおける gdb-7.x の Python サポートを無効にしました。これを行わないと、gdb-7.x 設定関数がホスト上で使用可能な Python のどんなバージョンでも選択してしまい、Python の特定のバージョンに組み込まれた依存関係を使用して
gdbをビルドします(不具合 36120)。 APP_ABIにallが含まれる場合に、既知のどのアーキテクチャとも一致しないndk-gdbの不具合を修正しました(不具合 35392)。- ドライブ文字で始まる Windows パスの一部とみなされる場合は
:記号を維持するように Windows パス名のサポートを修正しました(GDB の不具合 12843)。 gdbserverでの ARM 用のハードウェア ブレークポイント サポートの追加を修正しました(GDB の不具合)。- リンカーが一貫している場合に現在の
solibsのみを読み取るための修正を追加しましたこの変更により、solibのイベント処理が高速化されます(不具合 37677)。 solibブレークポイントの検索を繰り返し試すための修正を追加しました。GDB は、svr4_current_sos()を呼び出すたびに、成功するまでenable_break()を試みます(変更点 43563)。gdbがdlopen-edライブラリに配置されたブレークポイントで停止しない不具合を修正しました(不具合 34856)。sym_addrのLSBが保持されないことが原因で/system/bin/linkerがシンボルを削除され、rtld_db_dlactivity()がThumbとして実装されるシステムで、dlopen()を呼び出したときの動的リンカー内のSIGILLを修正しました(不具合 37147)。
- ビルドにおける gdb-7.x の Python サポートを無効にしました。これを行わないと、gdb-7.x 設定関数がホスト上で使用可能な Python のどんなバージョンでも選択してしまい、Python の特定のバージョンに組み込まれた依存関係を使用して
- ルート権限を使用して
- その他のバグの修正:
-
- 以下の NDK ヘッダーを修正しました。
- 元のカーネルから誤って削除された
arch-mips/include/asm/*コードを修正しました(変更点 43335)。 sys/cdefs.h内の#define __unusedとの競合を避けるために、linux/sysctl.hとlinux/icmp.h内の構造体メンバーデータ__unusedを__linux_unusedで置き換えました。__BEGIN_DECLSと__END_DECLSで C 関数を囲むようにfenv.hを修正しました。- 実装されていない
malloc.hの関数を削除しました。 - ANSI コンパイラの
uint64_tのstdint.h定義を修正しました(不具合 1952)。 <arch>/include/machine/*内のプリプロセッサ マクロを修正しました。- すべてのプラットフォームをサポートする新しいバージョンで MIPS 用の
link.hを置き換えました。 linux-unistd.hを削除しました。- GLibc 固有のマクロ
LONG_LONG_MIN、LONG_LONG_MAX、ULONG_LONG_MAXを<pthread.h>から<limits.h>に移動しました。
- 元のカーネルから誤って削除された
ndk-stack-parserのバッファ オーバーフローを修正しました。- 定義されていない場合に、
__Named_exceptionのすべての宣言と使用を省略するように_STLP_USE_EXCEPTIONSを修正しました。__Named_exception設定のコンパイルと使用は、STLportに例外の使用が許可されている場合のみ可能です。 - Windows コードをビルドしないように、Linux 専用 NDK パッケージのビルドを修正しました。この種のビルドを実行するには、以下の設定を使用します。
./build/tools/make-release.sh --force --systems=linux-x86
atexit()と__do_handlerをエクスポートしないようにlibc.soを修正しました。これらのシンボルは、従来のネイティブ ライブラリをサポートするために C ライブラリのシステム バージョンによる ARM ビルド用にエクスポートされます。NDK で生成されるライブラリでは、これらのシンボルを直接参照しないようにしてください。 代わりに、各共有ライブラリまたは実行可能ファイルは、crtbegin_*.oから提供されるこれらのシンボルの独自バージョンを組み込む必要があります。プロジェクトを
-nostdlib -Wl,--no-undefinedオプションを使用してリンクする場合は、crtbegin_so.oがリンクされないため、独自の__dso_handleを指定する必要があります。以下のサンプルコードに示すように、__dso_handleの内容は問題ではありません。extern "C" { extern void *__dso_handle __attribute__((__visibility__ ("hidden"))); void *__dso_handle; }
- 読みやすい形式の
function@pltを生成するように、pltエントリのobjdumpで使用される ARM 用のシンボル デコーダを修正しました。 - X86 プラットフォームの
libc.soライブラリから、GCC 4.6libgcc.aで導入されたシンボル__aeabi_idiv0、__aeabi_ldiv0、__aeabi_unwind_cpp_pr1、__aeabi_unwind_cpp_pr2を削除しました。 - MIPS の
crt*_so.S内にある使用されていない.ctors、.dtors、.eh_frameを削除しました。 ndk-buildDUMP_XXXXの最後の出力行だけを取得するようにndk-gdbを更新しました。この変更により、Application.mkまたはAndroid.mkが$(info ...)構文を使用して出力を行った場合に、DUMP_XXXXの結果に挿入されなくなります(詳細)。
- 以下の NDK ヘッダーを修正しました。
- その他の変更点:
-
platforms/android-[3,4,5,8]からarch-x86ヘッダーとarch-mipsヘッダーを削除しました。X86 ABI と MIPS ABI の両方が API 9 以降でしかサポートされないため、これらのヘッダーは不完全なものになっていました。- 以下に示すように、簡略化された c++ にスタンドアロン パッケージ内のパスが含まれています(不具合 35279)。
<path>/arm-linux-androideabi/include/c++/4.6.x-google to: <path>/include/c++/4.6/
- デフォルトでより多くの C++ ファイル拡張子(
.cc .cp .cxx .cpp .CPP .c++ .C)を認識するようndk-buildを修正しました。LOCAL_CPP_EXTENSIONを使用すると、これらの拡張子設定を上書きすることができます。 - 再起動時に真っ黒な画面やフリーズ フレームが表示される
samples/san-angelesの不具合を修正しました。 - NDK サンプル内の非推奨の API が置き換えられました(不具合 20017)。
hello-gl2を android-5 から android-7 へnative-activityを android-9 から android-10 へnative-audioを android-9 から android-10 へnative-plasmaを android-9 から android-10 へ
- デバッグツールが対応できるように、
crtbegin_static/dynamic.oで定義した.note.android.ident内の簡略化された枠組みを使用する Android 実行可能ファイル用に、新しいブランディングを追加しました。構造体のメンバーと値は次のように定義されます。static const struct { int32_t namesz; /* = 8, sizeof ("Android") */ int32_t descsz; /* = 1 * sizeof(int32_t) */ int32_t type; /* = 1, ABI_NOTETYPE */ char name[sizeof "Android"]; /* = "Android" */ int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ }
セクション
.note.ABI-tag内の以前のブランディング オプションは廃止されました。 - さまざまな条件で
run-tests.shとstandalone/run.shを呼び出す新しいスクリプトrun-tests-all.shを追加しました。スクリプトrun-tests.shは--abiオプションなしで動作し、サポートされているすべての ABI 用のほとんどのテストをコンパイルし、接続されたすべてのデバイスで動作するように拡張されています。
Android NDK r8b(2012 年 7 月)
このリリースの主な特徴は、新しい GNU Compiler Collection(GCC)4.6 ツールチェーンと、Android 4.1(API レベル 16)システム イメージに対するデバッグ サポートを追加する GNU Debugger(GDB)7.3.x です。
- 重要なバグの修正:
-
- Mac OS 環境と Windows Cygwin 環境における静的ライブラリの
LOCAL_SHORT_COMMANDSの不具合を修正しました。リストファイルの生成が高速化されましたが、プロジェクトの再ビルドが繰り返されることを防ぐため再生成されません。 ndk-gdbのいくつかの不具合を修正しました。- フラグの
-e、-d、-sを、一貫性を保って adb に渡すようツールを更新しました。 - スペースを含むデバイスのシリアル名を受け入れるようにツールを更新しました。
/system/bin/link情報を取得するようにツールを更新しました。これにより、ホスト上のgdbが__dl_rtld_db_dlactivityでブレークポイントを設定し、リンカーのアクティビティを認識できるようになります(dlopen()が呼び出されたときにsolibシンボルを再スキャンするなど)。
- フラグの
./libs/*/lib*.soの削除に失敗する Windows 上のndk-build cleanを修正しました。makeが失敗したときに 0 以外のERRORLEVELを返すようにndk-build.cmdを修正しました。__exidx_startシンボルと__exidx_endシンボルの間違ったエクスポートを停止するようにlibc.soを修正しました。- ARM と MIPS でスタックのアンワインドが
__libc_initを超えるSEGVを修正しました。
- Mac OS 環境と Windows Cygwin 環境における静的ライブラリの
- 重要な変更点:
-
- オリジナルの GCC 4.4.3 ツールチェーン(
binutils2.19 と GDB 6.6)と共存するよう GCC 4.6 ツールチェーン(goldを含むbinutils2.21 と GDB 7.3.x)を追加しました。- GCC 4.6 がデフォルトのツールチェーンになりました。オリジナルのツールチェーンを選択するには、
Application.mkでNDK_TOOLCHAIN_VERSION=4.4.3を設定します。 goldリンカーに対するサポートは、Linux ホストと Mac OS ホスト上の ARM アーキテクチャと x86 アーキテクチャでしか利用できません。このサポートはデフォルトで無効になっています。有効にするには、Android.mkにLOCAL_LDLIBS += -fuse-ld=goldを追加します。-fPIEを使用してコンパイルするプログラムには、Android 4.1(API レベル 16)システム イメージ内のバイナリを含むデバッグ用の新しいGDBが必要です。binutils2.21ldツールには、バージョン 2.22 から移植された修正が含まれています。- 旧プラットフォームとの互換性を維持するために
sincos()の最適化を無効にしました。
- GCC 4.6 がデフォルトのツールチェーンになりました。オリジナルのツールチェーンを選択するには、
- デフォルトで Never eXecute(NX)ビットと
relro/bind_nowの保護を有効にするよう、ビルド オプションを更新しました。- スタックとヒープ上の NX ビットを有効にしてバッファ オーバーフロー攻撃から NX を保護するために、アセンブラに
--noexecstackを、リンカーに-z noexecstackを追加しました。 - メモリ破損によるセキュリティ脆弱性から保護するために、リンク後に内部データ セクションを強化する
-z relroと-z nowをリンカーに追加しました(詳細: 1、2)。 - これらの機能は、以下のオプションを使用して無効にできます。
- アセンブラの
--execstackオプションとリンカーの-z execstackを設定して NX 保護を無効にする。 - リンカーの
-z norelroオプションと-z lazyオプションを設定して内部データの強化を無効にする。 - 次のオプションを設定して、NDK
jni/Android.mkで上記の保護を無効にする。LOCAL_DISABLE_NO_EXECUTE=true # disable "--noexecstack" and "-z noexecstack" DISABLE_RELRO=true # disable "-z relro" and "-z now"
詳しくは、
docs/ANDROID-MK.htmlをご覧ください。 - アセンブラの
- スタックとヒープ上の NX ビットを有効にしてバッファ オーバーフロー攻撃から NX を保護するために、アセンブラに
- デバッグツールが対応できるよう、
.note.ABI-tagセクション(crtbegin_static/dynamic.o内)を使用した Android 実行可能ファイル用に、ブランディングを追加しました。構造体のメンバーと値は次のように定義されます。static const struct { int32_t namesz; /* = 4, sizeof ("GNU") */ int32_t descsz; /* = 6 * sizeof(int32_t) */ int32_t type; /* = 1 */ char name[sizeof "GNU"]; /* = "GNU" */ int32_t os; /* = 0 */ int32_t major; /* = 2 */ int32_t minor; /* = 6 */ int32_t teeny; /* = 15 */ int32_t os_variant; /* = 1 */ int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ }
- オリジナルの GCC 4.4.3 ツールチェーン(
- その他のバグの修正:
-
R_MIPS_TLS_LDMの不具合に適合するために切り捨てられたmips-linux-gnuリロケーションを修正しました(詳細)。--gc-sectionsの使用時のldツール セグメンテーション違反を修正しました(詳細)。- MIPS の
GOT_PAGEカウントの不具合を修正しました(詳細)。 mips_elf_count_got_symbolsのフォロー警告シンボルリンクを修正しました。mips_elf_allocate_lazy_stubのフォロー警告シンボルリンクを修正しました。- MIPS
.dynamicをデータ セグメントに移動し、書き込み可能にしました。 - シンボルのハードコードされた値を MIPS の正しいセグメント サイズで置き換えました。
- MIPS ツールチェーンのデフォルトから
-mno-sharedオプションを削除しました。Android ツールチェーンのデフォルトは-fPIC(サポートされている場合は-fpic)です。-mshared、-fpic、-fPIC、-fpie、-fPIEを明示的に指定しない場合は、MIPS コンパイラが PIC をオフにする-mno-sharedを追加します。この場合にコンパイラが-mno-sharedを追加しないよう修正しました。 - サンプル
hello-jniとtwo-libsのパッケージ名を修正して、その下のtestsプロジェクトがコンパイルできるようにしました。
- その他の変更点:
-
- 次のようにバイナリの場所を変更しました。
gdbserverをtoolchain/<arch-os-ver>/prebuilt/gdbserverからprebuilt/android-<arch>/gdbserver/gdbserverに移動しました。- x86 ツールチェーン接頭辞の名前を
i686-android-linux-からi686-linux-android-に変更しました。 sources/cxx-stl/gnu-libstdc++/includeとlibを、GCC 4.6 でコンパイルする場合はsources/cxx-stl/gnu-libstdc++/4.6に、GCC 4.4.3 でコンパイルする場合はsources/cxx-stl/gnu-libstdc++/4.4.3に移動しました。libbfd.aとlibintl.aをlib/からlib32/に移動しました。
- リビルドとテストの NDK ツールチェーンにさまざまなスクリプトを追加し、強化しました。
- Win32 実行可能ファイルと Win64 実行可能ファイルを生成する新しい Linux ホスト型ツールチェーンを生成するために
build-mingw64-toolchain.shを追加しました。 - NDK ツールチェーン バイナリをビルドするために必要なディレクトリに対して
cloneコマンドとcheckoutのみを使用することにより、download-toolchain-sources.shの速度を向上させました。 build-host-gcc.shスクリプトとbuild-host-gdb.shスクリプトを追加しました。- 特定の NDK インストール ディレクトリまたは既存の NDK パッケージの内容をチェックするための
tests/check-release.shを追加しました。 - スタンドアロン テスト
tests/standalone/run.shを書き直しました。
- Win32 実行可能ファイルと Win64 実行可能ファイルを生成する新しい Linux ホスト型ツールチェーンを生成するために
- すべてのプラットフォームとアーキテクチャから
if_dl.hヘッダーを削除しました。記述されるAF_LINK要素とsockaddr_dl要素は BSD 固有のものです(つまり Linux には存在しません)。
- 次のようにバイナリの場所を変更しました。
Android NDK r8(2012 年 5 月)
この NDK のリリースでは、MIPS ABI に対するサポートが追加され、いくつかの修正が行われています。
- 新しい機能:
-
- MIPS ABI に対するサポートを追加しました。これにより、互換性のある MIPS ベースの Android デバイスで動作するマシンコードを生成することができます。MIPS の主な機能には、MIPS 固有のツールチェーン、システム ヘッダー、ライブラリ、デバッグ サポートがあります。MIPS サポートについて詳しくは、NDK パッケージの
docs/CPU-MIPS.htmlをご覧ください。デフォルトで、ARM ベースのデバイス用のコードが生成されます。MIPS プラットフォーム用にビルドするには、
Application.mkファイル内のAPP_ABIの定義にmipsを追加します。たとえば以下では、ndk-buildに対して 3 つの異なる ABI 用のコードをビルドするよう指示しています。APP_ABI := armeabi armeabi-v7a mips
ARM アセンブリ コードなどのアーキテクチャ固有のアセンブリ ソースに依存していなければ、MIPS マシンコードをビルドするために
Android.mkファイルを編集する必要はありません。 make-standalone-toolchain.shの呼び出し時に--arch=mipsオプションを使用してスタンドアロン MIPS ツールチェーンをビルドできます。詳しくは、docs/STANDALONE-TOOLCHAIN.htmlをご覧ください。
注: ユーザーが自分のデバイスで動作するアプリしか利用できないようにするために、Google Play はアプリに含まれている命令セット情報に基づいてアプリを絞り込みます。デベロッパーがなんらかの措置を講じる必要はありません。また、Android システム自体もインストール時にアプリをチェックして、アプリがデバイスの CPU アーキテクチャ用にコンパイルされたライブラリを提供する場合にのみインストールの続行を許可します。
- MIPS ABI に対するサポートを追加しました。これにより、互換性のある MIPS ベースの Android デバイスで動作するマシンコードを生成することができます。MIPS の主な機能には、MIPS 固有のツールチェーン、システム ヘッダー、ライブラリ、デバッグ サポートがあります。MIPS サポートについて詳しくは、NDK パッケージの
- 重要なバグの修正:
-
- 派生クラス
Dへの基本クラス オブジェクトbのdynamic_cast<D>(b)の結果が基本クラスからの反対方向で正しく調整されない GAbi++ 実装内のタイプミスを修正しました(不具合 28721)。 make-standalone-toolchain.shでlibsupc++.*をコピーできない不具合を修正しました。
- 派生クラス
- その他のバグの修正:
-
- ユーザーが
SHELL環境変数を再定義した場合でもndk-build.cmdが正しく機能するようにndk-build.cmdを修正しました。この環境変数は、Windows 環境でさまざまな開発ツールをインストールしたときに変更される可能性があります。
- ユーザーが
Android NDK r7c(2012 年 4 月)
この NDK のリリースでは、Tegra2 ベースのデバイスに対する重要な修正に加えて、その他のいくつかの修正と改善が行われています。
- 重要なバグの修正:
-
- 非 NEON デバイスでクラッシュしないように GNU STL armeabi-v7a バイナリを修正しました。NDK r7b に付属のファイルが正しく設定されていなかったために、Tegra2 ベースのデバイスなどで特定の浮動小数点関数(
cosf、sinf、expfなど)を使用しようとしたときにクラッシュが発生していました。
- 非 NEON デバイスでクラッシュしないように GNU STL armeabi-v7a バイナリを修正しました。NDK r7b に付属のファイルが正しく設定されていなかったために、Tegra2 ベースのデバイスなどで特定の浮動小数点関数(
- 重要な変更点:
-
NDK_OUT環境変数を介したカスタム出力ディレクトリのサポートを追加しました。この変数を定義すると、$PROJECT_PATH/objの代わりに、生成されたすべての中間ファイルを保存するために使用されます。この変数はndk-gdbによっても認識されます。Android.mkでLOCAL_SHORT_COMMANDSをtrueに設定することにより、何百、何千というソースファイルを持つモジュールのビルドに対するサポートを追加しました。この変更により、NDK ビルドシステムは、コマンドライン長の制限に対する対策として、ほとんどのリンカー オプションまたはアーカイブ ツール オプションをリストファイルに含めるよう強制されます。 詳しくは、
docs/ANDROID-MK.htmlをご覧ください。
- その他のバグの修正:
-
cpufeaturesヘルパー ライブラリ内のandroid_getCpuCount()の実装を修正しました。以前の実装では、コアがシステムによって動的に有効にされる特定のデバイスでは、初めて関数が呼び出されたときに、物理的に使用可能なコアの総数ではなくアクティブなコアの総数を報告していました。
Android NDK r7b(2012 年 2 月)
この NDK のリリースでは、ネイティブ Windows ビルドと Cygwin のための修正に加えて、その他のさまざまな改善が行われています。
- 重要なバグの修正:
-
- 一部のマルチコア ARM ベースのデバイスでの正確さに関する不具合を回避するように
sys/atomics.hを更新しました。このバージョンの NDK を使用して未変更のソースを再ビルドしてください。この問題が完全に排除されるはずです。 詳しくは、docs/ANDROID-ATOMICS.htmlをご覧ください。 binutils2.20.1 に更新後の NDK r7 で発生したデバッグ不具合を修正するために、binutils2.19 に戻しました。- 32 ビット版の Linux の
ndk-buildを修正しました。パッケージング エラーによって、awk実行可能ファイルの 64 ビット版が NDK r7 のprebuilt/linux-x86/binに配置されます。 - ネイティブ Windows ビルド(
ndk-build.cmd)を修正しました。その他のビルドモードには影響ありません。修正には以下が含まれます。- プロジェクト パスの最上位に位置していないディレクトリ(最上位ディレクトリのサブディレクトリなど)から
ndk-build.cmdを呼び出そうとすると発生する無限ループやスタック オーバーフローといったバグを削除しました。 - 自動生成された依存関係ファイルが無視される問題を修正しました。修正前は、ヘッダーを更新してもソースの再コンパイルがトリガーされていませんでした。
- ファイルまたはパス内のスペースや引用符以外の特殊文字が正しく処理されない問題を修正しました。
- プロジェクト パスの最上位に位置していないディレクトリ(最上位ディレクトリのサブディレクトリなど)から
-lstdc++の使用時(GNUlibstdc++C++ ランタイムに対するリンク時など)に適切なバイナリを生成するようにスタンドアロン ツールチェーンを修正しました。共有ライブラリ バージョンまたは静的バージョン用の-lstdc++に対してリンクする場合は-lgnustl_sharedを使用する必要があります。この修正について詳しくは、
docs/STANDALONE-TOOLCHAIN.htmlをご覧ください。- Cygwin の
gnustl_sharedを修正しました。修正前は、ファイルが正しい場所に存在するのにlibsupc++.aが見つからないことをリンカーが報告していました。 APP_STL経由で特定の C++ ランタイムを使用していない場合の Cygwin C++ リンクを修正しました。
- 一部のマルチコア ARM ベースのデバイスでの正確さに関する不具合を回避するように
- その他の変更点:
-
- アプリで GNU
libstdc++ランタイムを使用すると、コンパイラが例外と RTTI を強制的に有効にすることがなくなります。この変更により、コードをコンパクトにすることができます。これらの機能が必要な場合は、以下のいずれかの操作を行う必要があります。
- モジュールまたは
Application.mk(推奨)で例外および / または RTTI を明示的に有効にします。 Application.mk内で'exceptions'と'rtti'のいずれかまたは両方にAPP_GNUSTL_FORCE_CPP_FEATURESを設定します。詳しくは、docs/APPLICATION-MK.htmlをご覧ください。
- モジュールまたは
- アプリの独立したプロセスで非公開サービスが動作している場合に、
ndk-gdbが適切に機能するようになりました。psで最初に列挙されるプロセス(通常はサービス プロセス)ではなく、メインのアプリプロセスをデバッグします。 - NDK r7 が
LOCAL_ARM_MODE値を信用せず、常に特定のソースファイル(すべてのファイルではない)を 32 ビット命令にコンパイルする珍しいバグを修正しました。 STLport: Android プラットフォーム バージョンと一致するようにソースを更新します。この更新により、いくつかのマイナーなバグが修正されます。- 不完全な型のインスタンス化を修正しました。
- 「==」と「=」のタイプミスを修正しました。
string::assignでmemcpyの代わりにmemmoveが使用されました。IsNANorINF、IsINF、IsNegNANなどの処理を改善しました。
詳しくは、コミットログをご覧ください。
STLport: ライブラリから 5 つの不要な静的イニシャライザを削除しました。- armeabi-v7a 用の GNU libstdc++ ライブラリが誤って armeabi 用にコンパイルされていました。この変更は正確性には影響しませんが、正しい ABI を使用することによりパフォーマンスが若干向上するはずです。
cpu-featuresヘルパー ライブラリが 3 つのオプションの x86 CPU 機能(SSSE3、MOVBE、POPCNT)を報告するように更新されました。詳しくは、docs/CPU-FEATURES.htmlをご覧ください。docs/NDK-BUILD.htmlは、カスタムApplication.mkファイルを選択するためにNDK_APP_APPLICATION_MKの代わりにNDK_APPLICATION_MKに言及するよう更新されました。- Cygwin:
ndk-buildが呼び出されたときに現在のディレクトリで空の "NUL" ファイルを作成しなくなります。 - Cygwin: 依存関係の自動検出が改善されました。以前のバージョンでは、以下の場合に正しく機能しませんでした。
- Cygwin ドライブ接頭辞が
/cygdriveではない場合。 - ドライブなしのマウントを使用している場合。たとえば、Cygwin が
/homeをC:\Some\Dirではなく\\server\subdirに変換する場合。
- Cygwin ドライブ接頭辞が
- Cygwin:
ndk-buildは、Cygwin および / または GNU Make の特定のバージョンを含む$NDK/prebuilt/windows/binの下でネイティブ Windows ツールを使用しなくなりました。
- アプリで GNU
Android NDK r7(2011 年 11 月)
この NDK のリリースでは、Android 4.0 プラットフォームをサポートする新機能が追加され、その他のさまざまな追加と改善が行われています。
- 新機能
-
- Android 4.0(API レベル 14)用の公式 NDK API を追加しました。これにより、以下のネイティブ機能がプラットフォームに追加されます。
- Khronos Group OpenMAX AL 1.0.1 標準に基づくネイティブのマルチメディア API を追加しました。新しい
<OMXAL/OpenMAXAL.h>ヘッダーと<OMXAL/OpenMAXAL_Android.h>ヘッダーを使用すれば、API レベル 14 を対象とするアプリは、新しい Android 固有のバッファキュー インターフェースを使用してネイティブ コードから直接マルチメディア出力を実行することができます。詳しくは、docs/openmaxal/index.htmlと http://www.khronos.org/openmax/ をご覧ください。 - Khronos Group OpenSL ES 1.0.1 標準に基づくネイティブのオーディオ API を更新しました。API レベル 14 を使用すれば、圧縮されたオーディオ(MP3、AAC、Vorbis など)を PCM にデコードできるようになります。詳しくは、
docs/opensles/index.htmlと http://www.khronos.org/opensles/ をご覧ください。
- Khronos Group OpenMAX AL 1.0.1 標準に基づくネイティブのマルチメディア API を追加しました。新しい
- CCache のサポートを追加しました。大規模な再ビルドの速度を上げるには、
NDK_CCACHE環境変数をccache(またはccacheバイナリへのパス)に設定します。CCache が宣言された場合、NDK ビルドシステムは、ソースファイルのコンパイル時に自動的に CCache を使用します。次に例を示します。export NDK_CCACHE=ccache
注: CCache は NDK リリースに含まれていないため、使用する前にインストールする必要があります。CCache について詳しくは、http://ccache.samba.org をご覧ください。
- 特定の NDK リリースでサポートされているすべての ABI 用に NDK モジュールの構築が必要であることを示すために、
APP_ABIをallに設定するためのサポートが追加されました。つまり、Application.mk内の以下の 2 行のどちらかがこのリリースと一致します。APP_ABI := all APP_ABI := armeabi armeabi-v7a x86
これは、
ndk-buildをコマンドラインから呼び出すときにAPP_ABIを定義した場合も機能します。この方法では、プロジェクトのApplication.mk fileを変更することなく、サポートされているすべての ABI のプロジェクト ビルドを簡単にチェックできます。次に例を示します。ndk-build APP_ABI=all
- モジュールで使用する C++ 機能(RTTI または例外)を宣言できるように
Android.mkにLOCAL_CPP_FEATURES変数を追加しました。これにより、これらの機能に依存しているモジュールを事前にビルドした場合に、最終リンクが正しく機能することが保証されます。詳しくは、docs/ANDROID-MK.htmlとdocs/CPLUSPLUS-SUPPORT.htmlをご覧ください。 - ビルドコマンドで使用されるソースファイルとオブジェクト ファイルへのパスを短くしました。プロジェクト パスから
$NDK/ndk-buildを呼び出すときに、ビルドコマンドに渡されるソースファイル、オブジェクト ファイル、バイナリ ファイルへのパスが大幅に短縮されます。これは、現在のディレクトリに相対して渡されるためです。これは、大量のソース ファイルを含むプロジェクトをビルドする場合に、ホストのオペレーティング システムでサポートされる最大コマンドライン長の制限を回避できるので便利です。プロジェクト ツリーのサブディレクトリからndk-buildを呼び出す場合や、特定のディレクトリを指すようにNDK_PROJECT_PATHを定義した場合は、この動作は変更されません。
- Android 4.0(API レベル 14)用の公式 NDK API を追加しました。これにより、以下のネイティブ機能がプラットフォームに追加されます。
- 試験運用版の機能
- コマンドラインからプロジェクト パス内の
ndk-build.cmdスクリプトを呼び出すことにより、Cygwin を使用せずに Windows 上の NDK ソースファイルをビルドできるようになりました。このスクリプトは、オリジナルのndk-buildスクリプトとまったく同じ引数を取得します。Windows NDK パッケージには、ビルドに必要な GNU Make、Awk、その他のツール用の独自のビルド済みのバイナリが付属しています。機能するビルドシステムを使用するために、他に何かをインストールする必要はありません。重要:
ndk-gdbは Windows 上では機能しないため、デバッグには引き続き Cygwin が必要です。この機能はまだ試験運用版のため、自由にお試しいただき、公開バグ データベースや公開フォーラムで不具合をご報告ください。NDK に付属のすべてのサンプルと単体テストは、この機能を使用して正常にコンパイルされます。
- 重要なバグの修正
-
Application.mkでAPP_MODULESが定義されていない場合は、インポートされた共有ライブラリがデフォルトでターゲットのインストール場所(libs/<abi>)にインストールされるようになりました。たとえば、最上位モジュールfooがモジュールbarをインポートすると、libfoo.soとlibbar.soの両方がインストール場所にコピーされます。以前は、APP_MODULESにbarを含めない限り、libfoo.soのみがコピーされていました。APP_MODULESを明示的に定義した場合は、この動作は変更されません。ndk-gdbが MAIN インテント フィルタ内に複数のカテゴリがあるアクティビティに対して正しく機能するようになりました。- 静的ライブラリのインポートが正しく行われるようになりました。たとえば、最上位モジュール
fooが静的ライブラリzooをインポートする静的ライブラリbarをインポートすると、libfoo.soがlibbar.aとlibzoo.aの両方に対してリンクされるようになりました。
- その他の変更点
-
docs/NATIVE-ACTIVITY.HTML: タイプミスを修正しました。ネイティブ アクティビティの場合は、最小 API レベルを 8 ではなく 9 にする必要があります。docs/STABLE-APIS.html: 欠落していたドキュメント リスト EGL を、API レベル 9 以降でサポートされる安定版 API として追加しました。download-toolchain-sources.sh: ツールチェーン ソースを、AOSP サーバーの新しい場所である android.googlesource.com からダウンロードするように更新しました。- 新しい C ++サポート ランタイム
gabi++を追加しました。詳しくは、更新されたdocs/CPLUSPLUS-SUPPORT.htmlをご覧ください。 - GNU libstdc++ v3(GPLv3 ライセンス)の共有ライブラリ バージョンに対応する新しい C++ サポート ランタイム
gnustl_sharedを追加しました。詳しくは、docs/CPLUSPLUS-SUPPORT.htmlをご覧ください。 - STLport C++ ランタイムに RTTI のサポートを追加しました(例外に対するサポートはありません)。
LOCAL_CPP_EXTENSIONで複数のファイル拡張子に対するサポートを追加しました。たとえば、foo.cppとbar.cxxの両方を C++ ソースとしてコンパイルするには、次のように宣言します。LOCAL_CPP_EXTENSION := .cpp .cxx
- NDK が提供するリンク時共有システム ライブラリから不要なエクスポート済みシンボルを多数削除しました。これにより、スタンドアロン ツールチェーンを使用して生成されたコードが誤って不安定な ABI シンボル(プラットフォームのビルドに使用されるツールチェーンが変更されるたびに変化する libgcc.a シンボルなど)に依存する危険性がないことが保証されます。
- より多くの拡張機能をサポートするために EGL ヘッダーと OpenGLES Khronos ヘッダーを更新しました。対応するライブラリ用の NDK ABI は変更されないことに注意してください。これは、各拡張機能をクライアント アプリケーションが実行時に調査する必要があるためです。
使用可能な拡張機能は、実際のデバイスで動作しているプラットフォームのバージョンではなく、デバイスと GPU ドライバによって異なります。ヘッダーの更新により、拡張機能が
eglGetProcAddress()またはglGetProcAddress()を使用して調査された際に使いやすくするための新しい定数と型が追加されます。新たにサポートされる拡張機能を以下に示します。- 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 r6b(2011 年 8 月)
この NDK のリリースには、r6 より新しい機能は含まれていません。r6b リリースでは、r6 リリースで見られた以下の問題が修正されています。
- 重要なバグの修正
-
APP_ABI="armeabi x86"をマルチアーキテクチャ ビルドに使用する場合のビルドを修正しました。- NDK リリース パッケージ内のビルド済みの STLport ライブラリの場所を修正しました。 これらは、パッケージ化スクリプト内のバグによって間違った場所に配置されていました。
- x86 スタンドアロン ツールチェーンを含む共有ライブラリでの
atexit()の使用方法を修正しました。 make-standalone-toolchain.sh --arch=x86を修正しました。適切な GNU libstdc++ バイナリが正しい場所にコピーされていませんでした。__dso_handleシンボルの定義とサイズが欠落していることに関するスタンドアロン ツールチェーン リンカー警告を修正しました(ARM のみ)。- x86 ビルド用の
$(SYSROOT)/usr/includeのインクルード順序を修正しました。詳しくは、バグをご覧ください。 - x86 スタンドアロン ツールチェーンで使用される場合の x86 固有のシステム内の
ptrdiff_tとsize_tの定義を修正しました。
Android NDK r6(2011 年 7 月)
この NDK のリリースでは、x86 ABI に対するサポートが追加され、その他のマイナーな変更が行われています。このリリースでの変更点の詳細については、NDK パッケージに同梱されている CHANGES.HTML ドキュメントをご覧ください。
- 一般的な注意点:
-
- x86 ABI に対するサポートが追加されます。これにより、互換性のある x86 ベースの Android デバイスで動作するマシンコードを生成することができます。x86 の主な機能には、x86 固有のツールチェーン、システム ヘッダー、ライブラリ、デバッグ サポートが含まれます。x86 サポートについて詳しくは、NDK パッケージの
docs/CPU-X86.htmlをご覧ください。デフォルトで、ARM ベースのデバイス用のコードが生成されますが、
Application.mkファイル内のAPP_ABI定義に x86 を追加して、x86 プラットフォーム用にビルドすることができます。たとえば以下では、ndk-buildに対して 3 つの異なる ABI 用のコードをビルドするよう指示しています。APP_ABI := armeabi armeabi-v7a x86
ARM ベースのアセンブリ ソースに依存していない限り、x86 マシンコードをビルドするために
Android.mkファイルを編集する必要はありません。 make-standalone-toolchain.shの呼び出し時に--toolchain=x86-4.4.3オプションを使用してスタンドアロン x86 ツールチェーンをビルドできます。詳しくは、docs/STANDALONE-TOOLCHAIN.htmlをご覧ください。- 新しい
ndk-stackツールを使用すれば、ネイティブ コードによって生成されたlogcat内のスタック トレースを変換することができます。このツールは、命令アドレスを、関数、ソースファイル、各スタック フレームに対応する行番号などを含む可読形式に変換します。 詳細と使用例については、docs/NDK-STACK.htmlをご覧ください。
- x86 ABI に対するサポートが追加されます。これにより、互換性のある x86 ベースの Android デバイスで動作するマシンコードを生成することができます。x86 の主な機能には、x86 固有のツールチェーン、システム ヘッダー、ライブラリ、デバッグ サポートが含まれます。x86 サポートについて詳しくは、NDK パッケージの
- その他の変更点:
- NDK r5 でサポートが終了している
arm-eabi-4.4.0が、NDK の配布から削除されました。
Android NDK r5c(2011 年 6 月)
この NDK のリリースには、r5b より新しい機能は含まれていません。r5c リリースでは、r5b リリースで見られた以下の問題が修正されています。
- 重要なバグの修正:
-
ndk-build: デバッグ可能なプロジェクトの並列ビルドを実行しようとしたときに発生する珍しいバグを修正しました。- 新しいツールチェーンでの
LOCAL_WHOLE_STATIC_LIBRARIESの正しい動作を妨げていたタイプミスを修正し、これに関するドキュメントをdocs/ANDROID-MK.htmlに追加しました。 gnustl_staticに対してリンクされたコードが API レベル 8(Android 2.2)より古いプラットフォーム リリースで動作中にクラッシュするバグを修正しました。ndk-gdb: Android 3.0 以降のデバイスでデバッグ中にセグメンテーション違反を引き起こすバグを修正しました。<android/input.h>: API レベル 9(Android 2.3)で導入された 2 つの関数が間違っていたため、修正されました。これにより、ソース API は更新されますが、システムへのバイナリ インターフェースは変更されません。不正な関数でhistory_indexパラメータが欠落していました。正しい定義を以下に示します。float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t pointer_index, size_t history_index); float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, size_t pointer_index, size_t history_index);
- API レベルで追加された新しい関数(
pthread_rwlock_initなど)をリンク時に正しく公開するように API レベル 9(Android 2.3)用の C ライブラリ ARM バイナリを更新しました。
- マイナーな機能強化と修正:
-
- オブジェクト ファイルが
LOCAL_SRC_FILESに指定されている順に常にリンクされるようになりました。以前はファイルがソースの拡張子ごとにグループ分けされていたため、その順序になりませんでした。 import-moduleが失敗した場合に、検索されたディレクトリのリストが出力されるようになりました。これは、ビルドシステムによって使用されるNDK_MODULE_PATH定義が正しいことをチェックするのに役立ちます。import-moduleが成功した場合に、モジュールが発見されたディレクトリがログに記録されるようになりました(NDK_LOG=1を使用して表示できます)。- プロジェクト内に大量のインクルード ディレクトリを含むデバッグ可能なアプリのビルド速度を向上させました。
ndk-gdb:adb shellの失敗検出を強化し、エラー メッセージを改善しました。<pthread.h>: API レベル 9(Android 2.3)以降のPTHREAD_RWLOCK_INITIALIZERの定義を修正しました。- モジュールがそれ自体をインポートできたことで GNU Make 内で無限ループが発生する不具合を修正しました。
LOCAL_ARM_NEONが true(build/core/build-binary.mk内の誤記述)に設定されている場合にビルドが失敗するバグを修正しました。.sアセンブリ ファイルのコンパイルを妨げる不具合を修正しました(.Sファイルは正常)。
- オブジェクト ファイルが
Android NDK r5b(2011 年 1 月)
この NDK のリリースには、r5 より新しい機能は含まれていません。r5b リリースでは、r5 リリースで見られた以下の問題が修正されています。
- r5 バイナリには glibc 2.11 が必要でしたが、r5b バイナリは glibc 2.7 以降を対象とする特別なツールチェーンを使用して生成されます。Linux ツールチェーン バイナリは Ubuntu 8.04 以降で動作するようになりました。
- arm-linux-androideabi-4.4.3 ツールチェーンでのコンパイラのバグを修正しました。 以前のバイナリは、符号付き char を処理中に無効な thumb 命令シーケンスを生成していました。
- APP_STL の "gnustl_static" 値に関する欠落していたドキュメントを追加しました。これにより、GNU libstdc++ の静的ライブラリ バージョンに対してリンクできるようになります。 the
- 以下の
ndk-buildの問題を修正しました。- Windows 上でコンパイル エラーが発生したときに一貫性のない依存関係ファイルが生成されるバグ。これにより、ソースコード内のエラーが修正された後の適切なビルドが妨げられていました。
- 非常に短いパス(Android NDK のインストール用)、またはプロジェクト パスを使用している場合に無効な依存関係ファイルが生成される Cygwin 固有のバグ。これにより、増分ビルドが不可能になっていました。
- cpufeatures ライブラリの新しい NDK ツールチェーンでの正しい動作を妨げていたタイプミス。
- すべてのソースファイルまたはオブジェクト ファイルの GNU Make からの
cygpath -mに対する呼び出しを回避することにより、Cygwin 内のビルドが高速化されます。この呼び出しによって、非常に大きなソースツリーに伴う問題が発生していました。これが正しく機能しない場合は、使用環境で再びcygpath -mを使用するようにNDK_USE_CYGPATH=1を定義します。 - Cygwin のインストールで、スペースを含む無効なインストール パスの使用がユーザーに通知されるようになりました。以前は、正しいバージョンの GNU Make がインストールされていても、無効なパスを指定すると、GNU Make のバージョンが間違っているというエラーが出力されていました。
- コロンで区切られた複数のディレクトリが含まれている場合に、
NDK_MODULE_PATH環境変数の正しい動作を妨げていたタイプミスを修正しました。 prebuilt-common.shスクリプトはホストタグに依存するのではなく、64 ビットで生成されたマシンコードに対してコンパイラをチェックするよう修正されました。これにより、Snow Leopard で 32 ビット ツールチェーンを正しく再ビルドすることができます。ツールチェーン再ビルド スクリプトは、32 ビット ホスト ツールチェーンの使用もサポートするようになりました。- 欠落していた
INET_ADDRSTRLENの宣言が<netinet/in.h>に追加されました。 - 欠落していた
IN6_IS_ADDR_MC_NODELOCALとIN6_IS_ADDR_MC_GLOBALの宣言が<netinet/in6.h>に追加されました。 -std=c99を使用したコンパイルを可能にするために、<asm/byteorder.h>で 'asm' が '__asm__' で置き換えられました。
Android NDK r5(2010 年 12 月)
この NDK のリリースでは、さまざまな新しい API が追加されています。そのほとんどは、ネイティブ コードを大量に消費するゲームなどのアプリの開発をサポートするために導入されました。デベロッパーは、API を使用して、イベント、オーディオ、グラフィックスとウィンドウの管理、アセット、ストレージに直接ネイティブ アクセスすることができます。また、新しい NativeActivity クラスを利用することで、ネイティブ コード内に Android アプリのライフサイクルを実装することもできます。このリリースでの変更点の詳細については、ダウンロードした NDK パッケージに同梱されている CHANGES.HTML ドキュメントをご覧ください。
- 一般的な注意点:
-
- ネイティブ アクティビティに対するサポートが追加されます。これにより、ネイティブ コードで Android アプリのライフサイクルを実装することができます。
- 以下に対するネイティブ サポートが追加されます。
- 入力サブシステム(キーボードやタッチ スクリーンなど)
- センサーデータ(加速度計、コンパス、ジャイロスコープなど)へのアクセス
- 入力イベントやセンサー イベントなどを待機するためのイベントループ API
- Windows とサーフェス サブシステム
- 再生と記録をサポートするだけでなく、プラットフォーム オーディオ エフェクトを制御する OpenSL ES 標準に基づくオーディオ API
.apkファイルにパッケージ化されたアセットへのアクセス
- より適切なコードを生成し、
./configure && makeを使用したビルドを希望するデベロッパー向けに、スタンドアロン クロスコンパイラとしても使用可能になった新しいツールチェーン(GCC 4.4.3 に基づく)が含まれています。詳しくは、docs/STANDALONE-TOOLCHAIN.html をご覧ください。GCC 4.4.0 のバイナリがまだ提供されていますが、4.2.1 バイナリは削除されました。 - ビルド済みの静的および共有ライブラリ(docs/PREBUILTS.html)およびモジュールのエクスポートおよびインポートに対するサポートが追加されます。これにより、サードパーティ モジュールの共有と再利用がより簡単になります(理由については、docs/IMPORT-MODULE.html をご覧ください)。
- デフォルトの C++ STL 実装(STLport に基づく)がヘルパー モジュールとして提供されます。これは、静的ライブラリと共有ライブラリのどちらにも使用できます(詳細と使用例については、sources/android/stlport/README をご覧ください)。STLport(静的または共有)と GNU libstdc++(静的のみ)用のビルド済みバイナリも提供されます(デフォルトの C++ STL 実装の代わりに、これらのライブラリに対するコンパイルを選択した場合)。 デフォルトの STL 実装では、C++ 例外と RTTI はサポートされません。詳しくは、docs/CPLUSPLUS-SUPPORT.HTML をご覧ください。
- CPU タイプの報告が改善された
cpufeaturesヘルパー ライブラリに対する機能が強化されています(以前は、一部のデバイスが ARMv6 であるにもかかわらず ARMv7 CPU として報告していました)。デベロッパーは、このライブラリを使用してアプリを再ビルドしてから Google Play にアップロードすることをおすすめします。そうすることにより、機能強化のメリットが得られます。 - OpenGL ES のテクスチャとサービスを作成して管理できる EGL ライブラリが追加されます。
- ネイティブ アクティビティの作り方を示すための新しいサンプルアプリである
native-plasmaとnative-activityが追加されます。 - 複数のバグが修正されたほか、小さな改善が行われています。詳しい変更点のリストについては、docs/CHANGES.html をご覧ください。
Android NDK r4b(2010 年 6 月)
- NDK r4b の注意点:
-
NDK ビルドとデバッグ スクリプトのいくつかの不具合が修正されました。NDK r4 を使用している場合は、NDK r4b ビルドをダウンロードすることをおすすめします。このリリースでの変更点の詳細については、ダウンロードした NDK パッケージに同梱されている CHANGES.TXT ドキュメントをご覧ください。
- 一般的な注意点:
-
- 新しい
ndk-buildビルドコマンドを介して簡略化されたビルドシステムが提供されます。 - 新しい
ndk-gdbコマンドを介して本番デバイス上で生成されたマシンコードの容易なネイティブ デバッグに対するサポートが追加されます。 - ARM ベースの CPU アーキテクチャ
armeabi-v7a用の新しい Android 固有の API が追加されます。新しい ABI は、以下の CPU 命令セット拡張機能を包含するように既存のarmeabiABI を機能強化します。- Thumb-2 命令
- VFP ハードウェア FPU 命令(VFPv3-D16)
- ARM Advanced SIMD(NEON)GCC イントリンシクスと VFPv3-D32 に対するオプション サポート。 Motorola 製の Verizon Droid や Google Nexus One などのデバイスでサポートされます。
- アプリがランタイムにホストデバイスの CPU 機能を検出することを可能にする、新しい
cpufeatures静的ライブラリ(およびソース)が追加されます。特に、アプリは VFPv3-D32 と NEON のサポートに加え、ARMv7-A に対するサポートをチェックしてから、必要に応じて別のコードパスを提供できます。 - サンプルアプリ
hello-neonが追加されます。このアプリは、cpufeaturesライブラリを使用して CPU 機能をチェックしてから、NEON イントリンシクスを使用(CPU によってサポートされている場合)して最適化されたコードパスを提供する方法を示します。 - NDK によってサポートされている命令セットのどちらかまたは両方のマシンコードを生成することができます。たとえば、ARMv5 と ARMv7-A の両方のアーキテクチャに対して同時にビルドを実行して、すべてをアプリの最終
.apkに保存することができます。 - ユーザーが確実に自分のデバイスで実行可能なアプリだけを入手できるようにするため、Google Play では、アプリに含まれている命令セット情報に基づいてアプリを絞り込みます。絞り込みを有効にするために必要なアクションはありません。また、Android システム自体もインストール時にアプリをチェックして、アプリがデバイスの CPU アーキテクチャ用にコンパイルされたライブラリを提供する場合にのみインストールの継続を許可します。
- Android 2.2 がサポートされるようになりました。たとえば、ネイティブ コードから
Bitmapオブジェクトのピクセル バッファにアクセスするための新しい安定版 API が追加されています。
- 新しい
Android NDK r3(2010 年 3 月)
- 一般的な注意点:
-
- OpenGL ES 2.0 ネイティブ ライブラリ サポートが追加されます。
- OpenGL ES 2.0 頂点シェーダーおよびフラグメント シェーダーの使い方を示すサンプルアプリ
hello-gl2が追加されます。 - このリリースのツールチェーン バイナリは GCC 4.4.0 で更新されています。以前(4.2.1)より少しだけコンパクトで効率的なマシンコードが生成されるはずです。NDK はまだ 4.2.1 バイナリを提供しています。このバイナリは、オプションで、マシンコードのビルドに使用できます。
Android NDK r2(2009 年 9 月)
元々は、「Android 1.6 NDK、リリース 1」としてリリースされました。
- 一般的な注意点:
-
- OpenGL ES 1.1 ネイティブ ライブラリ サポートが追加されます。
- サンプルアプリ
san-angelesが追加されました。このサンプルアプリは、ネイティブ OpenGL ES API を通じて 3D グラフィックスをレンダリングしつつ、GLSurfaceViewオブジェクトを使用してアクティビティのライフサイクルを管理します。
Android NDK r1(2009 年 6 月)
元々は、「Android 1.5 NDK、リリース 1」としてリリースされました。
- 一般的な注意点:
-
- Thumb-1 命令を含む ARMv5TE 命令に対するコンパイラ サポート(GCC)が含まれています。
- 安定版ネイティブ API 用のシステム ヘッダー、ドキュメント、サンプルアプリが追加されました。