CrystaX NDK 10.1 -Android用のC / C ++(およびObjective-C)で開発するためのツールセットのリリースを発表するのを急いでいます。
CrystaX NDKは、GoogleのAndroid NDKの透過的な代替品として設計されていますが、元のNDKにはない多くの利点を追加します。 まず第一に、これはGoogle NDKの代わりにCrystaX NDKを使用できることを意味し、すべては以前と同様に機能し続けます。 しかし同時に、Google NDKで利用できない多くのものが利用可能になります。
このリリースでは、ISO C、ISO C ++、およびIEEE Std 1003.1(POSIX)標準との互換性を確保するために多くの作業を行いました。これにより、既存のコードのAndroidへの移植がはるかに容易になります。 ご存知かもしれませんが、Android libc(Bionic)は、指定された標準を満たすにはほど遠いです。 多くの部分は単純に実装されておらず、他の部分は特にlibcからこれを期待しないため、長時間のデバッグを強制するエラーで実装されています(strtod()がどのようにわからないことが明らかになるまでデバッグに2日かかったのを今でも覚えています) 「0xXXXX」行を解析します)。 もちろん、状況は時間の経過とともに改善され、Android libcの新しいバージョンでは徐々に修正と補足が行われていますが、a)修正と追加のペースは完全に不十分であり、b)開発者は何をすべきですか?
CrystaX NDKでは、追加のlibcrystaxライブラリを導入することでこれらの問題を解決しました。このライブラリでは、Bionicの機能が欠落しており、正しく実装されていません。 また、以前のバージョンのAndroidでプログラムを実行する問題を解決します。 libcrystax.soはアプリケーションにパッケージ化されており、Androidのバージョンに依存しません。 追加のライブラリ自体の導入も最も透過的な方法で行われます-つまり 開発者は追加のものを指定する必要はありません。すべてが自動的に収集されます。 つまり、NDKを使用した一般的な開発プロセスは変更されないため、CrystaX NDKをGoogleのAndroid NDKの透過的な代替品として使用できます。
そのため、ここでCrystaX NDKの主な機能を簡単にリストします。
- マルチバイトエンコーディング(UTF-8など)からワイド文字への変換、およびその逆の変換を含む、ワイド文字(wchar_t)の完全サポート。 既存のコード(たとえば、Windowsの世界から)をAndroidに移植するときに役立ちます。
- ネイティブローカリゼーションの完全サポート-つまり printf()、strftime()、strfmon()などは、 setlocale()を使用して公開されたロケールに基づいて機能します。 これは、JNIに頼らずにアプリケーションをローカライズできることを意味します。 よく知られているICUライブラリも利用できます。これは、それを必要とする人のための完全なUnicodeサポートを意味します。
- IEEE Std 1003.1、2013 Edition標準に準拠した数学関数の完全サポート。 複雑な値や型に依存しない(型ジェネリック)関数を操作する関数を含みます 。
- 標準C ++ライブラリの完全サポート。 GoogleのAndroid NDKでのC ++のサポートが宣言されているにもかかわらず、 ほとんどの標準C ++ライブラリは機能しません。 特に、std :: mutex、std :: chrono、std :: stol、std :: stoulなどはサポートされていません。 CrystaX NDKを使用すると、言語とその標準ライブラリの両方であるC ++を完全にサポートできます。
- すぐにライブラリをブーストします。 コンパイル済みのBoost 1.57.0ライブラリをCrystaX NDKの一部として提供しているため、AndroidプログラミングにBoostを使用することが非常に簡単になりました 。 さらに、CrystaX NDKのBoostは、GoogleのAndroid NDKで構築された同じBoostよりもはるかに優れた動作をします。これは、この場合、通常のAndroid libcよりもはるかに標準準拠のレベルで実行されるためです(はい、libcrystaxについて話している、 CrystaX NDK heart)。
- Objective-CおよびObjective-C ++プログラミング言語のサポートは、gccとclangの両方に含まれています。 現在、サポートはこれらの言語のコアに限定されています。 Objective-C v2ランタイムおよびCocoaライクなライブラリで作業が進行中です。 ただし、多くのプロジェクトではこれで十分であるため、この機能はCrystaX NDKで使用できます。
より完全な説明はリリースページにあります 。
これで、おそらく、私は停止します。 ご質問がある場合は、コメントでお答えします。