This project has been on hold since 2016
All the data on this site is still available (and will stay available) but not up-to-date anymore
You might like to check Dmitry Moskalchuk's portfolio for his other projects
ВНИМАНИЕ!!! Вы находитесь на странице устаревшего выпуска CrystaX NDK.
Новый CrystaX NDK 10.3.2 доступен для скачивания, предлагая многочисленные исправления и улучшения; скорее всего, вам стоило бы попробовать новую версию вместо устаревшей.

Описание

Здесь выложены дистрибутивы Android NDK r7, пересобранные мной из официальных исходников. Начиная с NDK r5, Google добавил поддержку С++ exceptions, RTTI и STL в свой NDK. Это очень хорошо, но все еще недостаточно для многих, включая меня. Начиная с r5-crystax-1, основной целью этого проекта будет улучшение официального NDK (в конце-концов, это наилучший способ добиться включения таких улучшений в mainline - как это было с поддержкой полноценного C++ в Google NDK)

Улучшения в CrystaX NDK:

  1. Wide characters.
    Google NDK не поддерживает wide chars - ни для C ни для C++. Используя же CrystaX NDK вы получаете полноценную поддержку wchar. Теперь вы можете легко портировать существующий код, содержащий работу с wide characters/strings/streams или написать новый.

  2. Новый 4.6.3 toolchain
    Начиная с r7-crystax-1, CrystaX NDK содержит две версии компилятора (toolchain): 4.4.3 (старый, такой же как и в Google NDK) и 4.6.3 (новый).
    Новый toolchain содержит GCC 4.6.3 с включенным Graphite framework позволяющим gcc производить высокоуровневые оптимизации.
    По умолчанию 4.6.3 toolchain не используется. Это сделано для совместимости с Google NDK. Чтобы включить его для вашего приложения, просто добавьте следующую строчку в Application.mk:
    APP_TOOLCHAIN_VERSION := 4.6.3
  3. Поддержка C++11 (известного также как C++0x)
    Google NDK предлагает к использованию GCC 4.4.3 который, безусловно, весьма неплох, но не поддерживает некоторые современные возможности. Одна из таких возможностей - поддержка нового международного стандарта известного как C++11 (C++0x). GCC 4.4.3 поддерживает очень ограниченный набор возможностей C++0x.
    Используя CrystaX NDK вы можете начать использовать многие возможности C++0x прямо сейчас. Конечно же, GCC 4.6.3 еще не поддерживает полностью C++11 но GCC team работает над этим очень интенсивно и поэтому он уже поддерживает довольно много новых возможностей (лямбды, decltype, auto и много другого). Вы можете просмотреть полный список на GCC C++ Support page.
    Чтобы начать использовать C++0x в вашем проекте, добавьте следующую строку в Application.mk:
    APP_USE_CPP0X := true
    Обратите внимание, что в этом случае неявно будет подключен 4.6.3 toolchain.

  4. Поддержка Objective-C
    Google NDK поддерживает только C и C++ для разработки. Начиная с r7-crystax-4, CrystaX NDK поддерживает дополнительно Objective-C. Это экспериментальная возможность, но core language работает уже хорошо. Конечно же, core language недостаточно; люди, пишущие на Objective-C, используют библиотеки типа Cocoa (в девичестве NeXTSTEP/OpenStep). Я понимаю это и не останавливаюсь на достигнутом. В моих планах - портирование GNUStep на Android, однако это непростая задача и она не может быть выполнена быстро. Тем временем, я полагаю, многие люди смогут начать пользоваться Objective-C как есть.
    Чтобы начать использовать Objective-C в вашем проекте, просто добавьте исходные файлы с расширением .m (Objective-C) или .mm (Objective-C++) и укажите их в списке LOCAL_SRC_FILES в Android.mk.

  5. Статический анализ кода
    Android NDK использует GCC, который весьма неплохо анализирует код и предупреждает о потенциальных ошибках (особенно с опциями -Wall -Wextra) но, как каждый разработчик знает, не бывает достаточно проверок кода. На самом деле, иногда мы делаем абсолютно глупые ошибки и пропускаем их в production. Для уменьшения количества таких ошибок опытные разработчики используют статические анализаторы кода. Существует довольно много такого рода инструментов (open source и коммерческих) поэтому выбор не прост.
    Проект Clang предлагает анализатор кода который показывает себя хорошо во многих ситуациях. Это тот же анализатор, который известен Apple разработчикам через "Build and analyze" меню в XCode. С CrystaX NDK вы можете начать использовать его для Android. Для этого вам нужно установить Clang и удостовериться что скрипт 'scan-build' из пакета Clang доступен из командной строки. Далее, запустите сборку вашего проекта:
    ndk-build ANALYZE=1
    Я планирую добавить поддержку и других анализаторов но пока нет никаких конкретных планов на это.

  6. Продолжение следует...
    На самом деле, если вы не видите некоторых фич, вы можете попросить меня об этом! Используйте мой issue/bug tracker чтобы сообщить обо всех проблемах или пожеланиях. Я с радостью возьмусь за реализацию востребованных фич. И, конечно же, патчи с готовыми исправлениями/улучшениями приветствуются!

Лицензия

Содержимое CrystaX NDK покрывается различными open-source лицензиями. Более детально можно узнать, заглянув в каждый интересующий файл и прочитав copyright disclaimer.

Обратите внимание, что CrystaX NDK дистрибутивы также содержат уже собранные двоичные файлы - компилятор, линкер и т.д. Их исходные коды доступны на GitHub-е (вы можете использовать сборочный скрипт, чтобы скачать их автоматически).

GCC и сопутствующие инструменты (GDB, binutils и т.д.) покрываются либо GNU General Public License (GPL), либо GNU Lesser General Public License (LGPL). Вы можете найти более детальную информацию о них в файлах COPYING и COPYING.LIB, находящихся в каталогах $NDK/toolchains/$tc/prebuilt/$system.

Набор инструментов LLVM/Clang покрывается LLVM "BSD" лицензией.

По существу, правила лицензирования такие же, как у Android NDK от Google - т.е. разрешается любое использование, как коммерческое, так и некоммерческое. Единственное добавление к этим правилам - это CrystaX-специфичный код, который покрывается разрешительной 'BSD 2-clause' лицензией.

Скачать

Файл Размер SHA256
android-ndk-r7-crystax-5.beta3-windows.zip 249.952 MB 90d8d3353479539...99ee2235410629
android-ndk-r7-crystax-5.beta3-darwin-x86.tar.bz2 178.772 MB 8e9e60e2e0bc1c5...2d377951794c7c
android-ndk-r7-crystax-5.beta3-linux-x86.tar.bz2 196.778 MB f9825045d58bc8c...3e6c81465e53e7

Инструкции по сборке

Вы также можете собрать дистрибутив самостоятельно, если вас не устраивают по каким-либо причинам те версии, что собрал я. Для этого следуйте инструкциям ниже.

Настройка рабочего окружения для сборки:

Следуйте инструкциям с сайта AOSP за исключением части, касающейся Java.
ВНИМАНИЕ!!! Начиная с версии r5, NDK может быть собран только на Linux/Mac машинах. Сборка на Windows более не поддерживается! Тем не менее, Windows версия может быть собрана на Linux используя так называемый "cross-canadian build". Для этого вам нужно установить пакет mingw32; сборочный скрипт автоматически определит его наличие и соберет Windows версию автоматически.

Инструкции

  • Скачайте сборочный скрипт и запустите его:
    wget -O - http://crystax.net/download/ndk-crystax-r7-build.sh | /bin/sh
    Это может занять довольно много времени, вплоть до нескольких часов. По завершении работы скрипт выведет на экран путь к архиву содержащему NDK release.
  • Используйте этот архив вместо Google NDK

Back
Home
Map
Back
Home
Map

Наши авторы: