Native Development Kit for Android
We offer CrystaX NDK - a widely used, open-source product that has been used by numerous commercial and open-source projects for years. Why not use Google's Android NDK? Because CrystaX NDK is better than Google's while remaining compatible. Basically, CrystaX NDK is a drop-in replacement for Google's NDK, allowing developers to use it in the same manner as Google's NDK but offering many added features and improvements.
Following are the main goals of CrystaX NDK:
- Better standard compatibility
- Easy porting of existing code to Android
- New features for Android native development
Look interesting? See in more detail what CrystaX NDK offers to Android developers!
News
New CrystaX NDK 10.3.2 is ready for download. This is patch release, wherewe've fixed critical issue in getauxval() implementation. Hereare corresponding tickets.
As you may know, GCC 6 is coming. There are many new features, including experimental support ofthe new C++17 features (Concepts, std::invoke, std::shared_mutex, etc) and many new warnings,helping developers to write safe and reliable code. In fact, GCC 6, with all enabled warnings,makes some static code analyzers just irrelevant anymore.
It is meaningless to describe all GCC 6 features here, so I won't. Those who are interestedin that can read about them on other sites, spreading information about the upcomingGCC 6 release (for example, hereor here).However, I'd like to tell you about GCC 6 for Android development and, in particular, aboutthe future of the GCC in CrystaX NDK.
New CrystaX NDK 10.3.1 is ready for download. This is patch release, wherewe've fixed several critical issues. Hereis full list of the fixed issues.
Earlier, we've described how to use CrystaX NDK in Android Studio.Since that time Google announced new (experimental) gradle plug-in supporting NDKin Android Studio. Let's see how to use CrystaX NDK with this new plug-in.
To be consistent, we'll remaster previous article with new conditions - i.e. this will beagain simple UI application, where Boost.Serialization would be used. Using Boost is notnecessary for understanding new scheme of work with gradle experimental plug-in; however,we've included Boost examples just to cover more use cases.
We're glad to announce the release of CrystaX NDK 10.3.0!
The biggest changes in this release are:
- New GCC and LLVM/clang toolchains
- Big improvements of Objective-C v2 support
- Initial support of Python (2.7 and 3.5) for Android.
Besides that, we've fixed many bugs and made huge number of improvements.See below for details.
We're glad to announce the release of CrystaX NDK 10.2.0!
We're moving further as promised, and in this release, we've fixed manybugs and implemented many improvements. See the list below for the main featuresintroduced in CrystaX NDK 10.2.0.
We've started a fundraising campaign on BountySourceto continue the development of CrystaX NDK and keep it available free to all Android developers.
We're asking everyone interested in the further evolution of native development for Android to help us.We would very much appreciate any kind of help - whether it is funding, contributions to the project bysending us patches, or helping to spread the news all over the world.
In the previous article, we described how to build a simple Android executable, whichuses Boost C++ libraries. This is good example to see how the process works and to understand the internals;however, for practical purposes we need to know how to build ready-to-use Android applicationswhich can be submitted to Google Play Store, for example.
Do you have code that uses Boost C++ libraries? Do you want to easily port this code to Android?Or maybe you just want start a new Android-targeted project and would like to use Boost fromthe beginning? With CrystaX NDK 10.1.0, you get both an Android native development kitand Boost C++ libraries out of the box!
By definition, good applications must look good for users.Besides many other things, that means good applications must talk with users in their language.But just translation of words and phrases to another language is not enough -many other elements differs from one culture to another, including the format of dates,money values, rules for capitalization, etc. All such specific information in computing defined throughlocales.
The way locale-specific input and output should be handled is standardized by ISO C and ISO C++ standards,so usually it's enough to just follow standards to properly localize your application.Unfortunately, this approach doesn't work on Android for software written in C/C++.Android libc (Bionic) has no native support for locales, so the only way to use localized input/output in native codeis to implement localization in Java and refer to it through JNI. Obviously, such an approach adds significantrun-time overhead, but it's the only choice if you're using Google's Android NDK.