CrystaX NDK 10.1 Release

    Greetings to all readers!

    I hasten to announce the release of CrystaX NDK 10.1 - a set of tools for developing in C / C ++ (and Objective-C) for Android.

    CrystaX NDK is designed as a transparent replacement for Google’s Android NDK, but it adds a lot of goodies that are not in the original NDK. First of all, this means that CrystaX NDK can be used instead of Google NDK, and everything will continue to work as before. But at the same time, many things that are not available in the Google NDK will become available.

    In this release, we have done a lot of work to ensure greater compatibility with the ISO C, ISO C ++ and IEEE Std 1003.1 (POSIX) standards, which makes porting existing code to Android much easier. As you may know, Android libc (Bionic) is far from meeting the specified standards. Many parts are simply not implemented, others are implemented with errors that force them to spend long hours debugging, especially since you don’t expect this from libc (I still remember how I had to debug it for two days before it became clear that strtod () doesn’t parse "0xXXXX" lines). Of course, the situation improves over time, and in new versions of Android libc is slowly being fixed and supplemented, but a) the pace of corrections and additions is absolutely unsatisfactory and b) what developers should do,

    In CrystaX NDK, we solved these problems by introducing an additional libcrystax library, in which we implemented the missing and incorrectly implemented functionality from Bionic. It also solves the problem of running programs on earlier versions of Android, as is packaged with the application and does not depend on the version of Android. The introduction of the additional library itself is also done in the most transparent way - i.e. The developer does not need to specify anything additional, everything will be collected automatically. In other words, the typical development process using NDK remains unchanged, which allows you to use CrystaX NDK as a transparent replacement for Google’s Android NDK.

    So, here I will briefly list the main features of CrystaX NDK:
    • Full support for wide characters (wchar_t), including the ability to convert from multi-byte encodings (such as UTF-8) to wide-character and vice versa. It helps a lot when porting existing code (for example, from the Windows world) to Android.
    • Full support for native localization - i.e. printf (), strftime (), strfmon () and others work based on the locale set using setlocale () . This means the ability to localize applications without resorting to JNI. The well-known ICU library is also available , which means full Unicode support for those who need it.
    • Full support for mathematical functions in accordance with the IEEE Std 1003.1, 2013 Edition standard, including functions for working with complex values and type-independent (type-generic) functions .
    • Full support for the standard C ++ library. Despite the declared support for C ++ in Google’s Android NDK, it remains purely nominal, as most of the standard C ++ library does not work. In particular, std :: mutex, std :: chrono, std :: stol, std :: stoul and many others are not supported. In the case of using CrystaX NDK, you get full support for C ++ - both the language and its standard library.
    • Boost libraries out of the box. We provide the compiled Boost 1.57.0 libraries as part of CrystaX NDK, so now using Boost for Android programming is becoming very simple . In addition, the Boost in CrystaX NDK works much better than the same Boost compiled using Google’s Android NDK, simply because in our case it runs on a much more standards-compliant level than regular Android libc (yes, I'm talking about libcrystax, CrystaX NDK heart).
    • Support for the Objective-C and Objective-C ++ programming languages ​​is included in both gcc and clang. Support is currently limited to the core of these languages; work is underway on Objective-C v2 runtime and Cocoa-like libraries. However, for many projects this is enough, therefore this feature is available in CrystaX NDK.

    A more complete description can be found on the release page .

    I’ll dwell on this. If you have questions, I will be happy to answer in the comments.

    Also popular now: