Выпущен CrystaX NDK 10.3.0
14.12.2015 06:18

Мы рады сообщить, что новый выпуск CrystaX NDK 10.3.0 готов к использованию!

Наиболее важные изменения в этом выпуске:

  • Новые GCC и LLVM/clang.
  • Сильно улучшена поддержка Objective-C v2.
  • Добавлена поддержка Python (2.7 и 3.5) для Android.

Кроме этого, починено много ошибок и сделано огромное количество улучшений. Ниже вы можете ознакомиться с более подробной информацией.

Новые GCC и LLVM/clang

В этом выпуске мы добавили новые тулчейны, основанные на gcc-5.3 и llvm-3.7. Старые gcc-4.9 и llvm-3.6 также присутствуют для совместимости, но будут удалены в следующем релизе.

Info
$ $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, в дополнение к ранее добавленным Foundation и CoreFoundation.

Для вашего удобства был создан пример, показывающий, как можно использовать Objective-C для разработки проекта сразу для iOS и Android.

ВНИМАНИЕ! Все заявленные возможности современного Objective-C v2 доступны только при использовании LLVM/clang. Если вы используете ndk-build, простейшим способом указать это будет добавление следующих строк в Application.mk:

Application.mk
# Application.mk
NDK_TOOLCHAIN_VERSION := clang
# Or this one, if you want to be explicit regarding version:
#NDK_TOOLCHAIN_VERSION := clang3.7

Python для Android

Мы предоставляем собранные бинарники python-2.7 и python-3.5 (исполняемые файлы, библиотеки и заголовочные файлы) для всех поддерживаемых Android ABI. Как и все остальные подобные пакеты в CrystaX NDK, Python был собран из официальных исходников, без единого изменения в его коде. Это прямое следствие нашего подхода: когда что-либо не собирается, мы не правим собираемый код. Вместо этого мы чиним CrystaX NDK, делая поведение нижнеуровневых библиотек соответствуюшим стандартам (POSIX и де-факто стандартам, таким как GNU/Linux).

Python в CrystaX NDK пока находится в экспериментальном состоянии, хотя он и работает довольно хорошо, насколько мы видим. Тем не менее, он пока еще не настолько хорошо оттестирован, как остальные компоненты, поэтому в нем могут быть ошибки или частично отсутствующая функциональность. В случае, если вы найдете подобные огрехи, не стесняйтесь сообщать нам о них!

Мы хотим сказать огромное спасибо Виталию Мурашеву - Python появился в CrystaX NDK главным образом благодаря его помощи. Это и есть то, как работает open source: сделать что-либо для удовольствия и поделиться результатами с сообщество. Виталий, еще раз спасибо!

Собранные бинарники Python лежат в каталогах $NDK/sources/python/2.7 и $NDK/sources/python/3.5. Если вы используете ndk-build, вот пример использования Python в вашем проекте:

Android.mk
# Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE           := mymodule
LOCAL_SRC_FILES        := ...
LOCAL_SHARED_LIBRARIES := python_shared
include $(BUILD_SHARED_LIBRARY)

# Replace 3.5 by 2.7 if needed
$(call import-module,python/3.5)

Поддержка POSIX

Мы продолжаем улучшать поддержку POSIX в CrystaX NDK. В этом выпуске мы перенесли в libcrystax.so (сердце CrystaX NDK) еще больше POSIX интерфейсов, поэтому теперь она зависит от Google libc еще меньше. Фактически, единственная большая часть POSIX, еще не реализованная в libcrystax.so - это POSIX threads. Это - то, что мы собираемся исправить в следующем релизе. Тем самым мы сможем избавиться от зависимости от Google libc, полностью заменив ее на libcrystax.so.

В рамках нашей работы по улучшению поддержки POSIX, мы интегрировали Open POSIX Test Suite в процесс автоматического тестирования CrystaX NDK. Благодаря этому, мы можем быть уверены, что libcrystax.so предоставляет реализацию, действительно соответствующую POSIX.

Boost 1.59.0

Мы включили собранные библиотеки и заголовочные файлы Boost 1.59.0. Теперь они собираются в двух вариантах - с использованием GNU libstdc++ и LLVM libc++ реализаций стандартной библиотеки C++. Ранее мы предоставляли библиотеки Boost, собранные только с GNU libstdc++, тем самым вынуждая пользователей указывать gnustl в своих проектах. Теперь вы можете указывать любую из двух: ndk-build автоматически определит предпочтительный вариант и подключит правильные версии библиотек Boost.

Также, в связи с тем, что у нас теперь есть Python для Android, мы начали собирать и тестировать Boost.Python. Эта работа еще не доведена до конца, но мы продолжаем работать над этим и со временем ситуация будет улучшаться.

CrystaX - официально одобренный тестер для проекта Boost. Это означает, что мы в непрерывном режиме тестируем библиотеки Boost, публикуя результаты на сайте Boost (master, develop). Это работает на пользу как Boost, так и CrystaX NDK. Пользователи Boost получают возможность использовать оттестированные библиотеки Boost на Android, а пользователи CrystaX NDK выигрывают оттого, что CrystaX NDK в свою очередь тестируется Boost тестами и тем самым практически доказывается хорошая степень соответствия стандартам POSIX и C++.

Другое

А также в этом выпуске было сделано большое количество исправлений и улучшений, в сумме ведущих к более стандартному и предсказуемому поведению CrystaX NDK. Здесь вы можете ознакомиться с полным списком закрытых в этой версии тикетов.

Скачать

Здесь вы можете скачать CrystaX NDK 10.3.0.

Если же вы работаете под OS X и используете Homebrew, просто наберите в командной строке:

brew install crystax-ndk

Back
Home
Map
Back
Home
Map

Наши авторы: