Новая версия CrystaX NDK 10.3.0 (набор инструментов для разработки на C/C++/Objective-C под Android) доступна для скачивания.
Наиболее важные изменения в этом выпуске:
- Новые GCC и LLVM/clang.
- Сильно улучшена поддержка Objective-C v2.
- Добавлена поддержка Python (2.7 и 3.5) для Android.
- Улучшена поддержка POSIX.
- Добавлены готовые к использованию библиотеки Boost 1.59.0.
Новые GCC и LLVM/clang
В версии 10.3.0 добавлены новые тулчейны, основанные на gcc-5.3 и llvm-3.7. Старые gcc-4.9 и llvm-3.6 также присутствуют для совместимости, но будут удалены в следующем релизе.
$ $NDK/toolchains/arm-linux-androideabi-5/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --version
arm-linux-androideabi-gcc (GCC) 5.3 20151204
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ $NDK/toolchains/llvm-3.7/prebuilt/linux-x86_64/bin/clang -target armv7-none-linux-androideabi --version
clang version 3.7
Target: armv7-none-linux-android
Thread model: posix
Улучшенный Objective-C v2
Очень сильно улучшен рантайм Objective-C v2, в связи с чем теперь доступны все современные языковые возможности Objective-C, такие как Automatic Reference Counting, Objective-C Literals syntax и т.д.
Также в этом выпуске добавлены Objective-C фреймворки CoreData, CoreText, CoreGraphics и CoreVideo, в дополнение к добавленным в 10.2.0 Foundation и CoreFoundation.
На github доступен пример, показывающий, как можно использовать Objective-C для разработки проекта сразу для iOS и Android.
Python для Android
В состав CrystaX NDK включены бинарники (исполняемые файлы, библиотеки и заголовочные файлы) Python 2.7 и 3.5, собранные для всех доступных целевых ABI. Как и все остальные подобные пакеты в CrystaX NDK, Python был собран из официальных исходников, без единого изменения в его коде. Это прямое следствие подхода, используемого в проекте CrystaX NDK: когда что-либо не собирается, никто не правит собираемый код, добавляя обходные пути. Вместо этого чинится сам CrystaX NDK, делая поведение нижнеуровневых библиотек соответствующим стандартам (POSIX и стандартам де-факто, таким как поведение современных GNU/Linux систем). Таким образом достигается весьма высокая степень повторного использования кода и новые POSIX-ориентированные библиотеки и программные пакеты портируются на Android со значительно меньшими усилиями.
Поддержка Python в CrystaX NDK появилась главным образом благодаря усилиям Виталия Мурашева ( vet), взявшегося за эту работу на общественных началах. Именно так и работает open source - сделать что-либо для удовольствия и поделиться результатами с сообществом. Виталий, огромное спасибо!
Поддержка POSIX
Поддержка POSIX в CrystaX NDK продолжает улучшаться. В этом выпуске в libcrystax.so (сердце CrystaX NDK) было перенесено еще больше POSIX интерфейсов, поэтому теперь она зависит от Google libc еще меньше. Фактически, единственная большая часть POSIX, еще не реализованная в libcrystax.so - это POSIX threads. Это - то, что планируется исправить в следующем релизе. Тем самым CrystaX NDK избавится от зависимости от Google libc, полностью заменив ее на libcrystax.so.
В рамках работы по улучшению поддержки POSIX был интегрирован Open POSIX Test Suite в процесс автоматического тестирования CrystaX NDK. В том числе и благодаря этому, можно с определенной уверенностью утверждать, что libcrystax.so предоставляет реализацию, действительно соответствующую POSIX.
Boost 1.59.0
В состав CrystaX NDK 10.3.0 включены собранные библиотеки и заголовочные файлы Boost 1.59.0. Теперь они собираются в двух вариантах - с использованием GNU libstdc++ и LLVM libc++ реализаций стандартной библиотеки C++. Ранее, в 10.2.0, предоставлялись библиотеки Boost, собранные только с GNU libstdc++, тем самым вынуждая пользователей указывать gnustl в своих проектах. Теперь разработчики вольны указывать любую из двух: ndk-build автоматически определит предпочтительный вариант и подключит правильные версии библиотек Boost.
Также, в связи с тем, что в CrystaX NDK теперь включен Python для Android, были начаты работы по сборке и тестированию Boost.Python. Эта работа еще не доведена до конца, но со временем ситуация будет улучшаться.
CrystaX - официально одобренный тестер для проекта Boost. Это означает, что в рамках проекта CrystaX NDK в непрерывном режиме тестируются библиотеки Boost, и результаты публикуются результаты на официальном сайте (master, develop). Это работает на пользу как Boost, так и CrystaX NDK. Пользователи Boost получают возможность использовать оттестированные библиотеки Boost на Android, а пользователи CrystaX NDK выигрывают оттого, что CrystaX NDK в свою очередь тестируется Boost тестами и тем самым на практике доказывается хорошая степень соответствия стандартам POSIX и C++.
>>> Подробности