LINUX.ORG.RU

Вышел CrystaX NDK 10.1.0

 , ,


1

2

CrystaX NDK — набор инструментов для разработки на C/C++ (и Objective-C) под Android.

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

В этом релизе основной упор сделан на совместимость с POSIX, и в большой степени этого удалось достичь. Иными словами, при использовании CrystaX NDK Android становится для разработчика намного более POSIX-совместимым, чем он есть на самом деле, а потому сильно облегчается задача портирования кода с других платформ — в частности, с Linux.

>>> Подробности на официальном сайте проекта



Проверено: fallout4all ()
Последнее исправление: fallout4all (всего исправлений: 8)

Это очень интересно.

anonymous
()

Предлагаю последние 2 абзаца заменить на:

«Подробности на официальном сайте: Ссылка».

ivanlex ★★★★★
()

Создание альтернатив это хорошо, ибо не стоит отдавать всю инфраструктуру в руки одного вендора, не правильно это.

haku ★★★★★
()
Ответ на: комментарий от ivanlex

Последние два абзаца - это «Я не буду долго расписывать...» и «Скачивайте и пользуйтесь»? Если да, то мне бы не хотелось заменять их оба на предлагаемую строчку. Согласен заменить последний - «Скачивайте и пользуйтесь».

crystax
() автор топика
Ответ на: комментарий от crystax

Новость должна быть безлика. Новость не должна выражать мнение автора. Новость не должна быть предвзята.

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

В этих же абзацах ярко выражено личное мнение автора. Слова: «Я не буду», «приглашаю», придают тексту вид личного мнения автора. Получается не новость, а сплетня, что ли.

Я понимаю, что ты хочешь передать всем радость, от произошедшего. Но делиться радостью и оформлять новость - это разные вещи. Напиши хорошо оформленную новость, а радостью поделись в комментариях.

ivanlex ★★★★★
()
Последнее исправление: ivanlex (всего исправлений: 2)
Ответ на: комментарий от ivanlex

Мне казалось, наоборот - небольшая окраска личностью автора придаст новости некий шарм, что ли. Но - ок, аргументация принята. Если здесь принят такой стиль новостей, возражать не буду. Переписал последний абзац.

crystax
() автор топика
Ответ на: комментарий от crystax

Если здесь принят такой стиль новостей, возражать не буду

здесь принято гадить во все стороны и плевать ядом, так что сразу готовься к каверзным вопросам и идиотскому трололо

Kompilainenn ★★★★★
()
Ответ на: комментарий от Kompilainenn

Ну-ну. Не пугай его так. Не все здесь плюются ядом. С плюющими он быстро познакомится. Адекватных намного больше. В последнее время я даже начал встречать адекватных анонимусов.

ivanlex ★★★★★
()
Ответ на: комментарий от crystax

Просто когда новость имеет окраску личностью, создается впечатление, что это не новость, а лишь личное мнение автора.

ivanlex ★★★★★
()
Ответ на: комментарий от Kompilainenn

Об этом я в курсе, но все же наблюдал здесь и более спокойных людей. Потому и написал сюда, собственно.

crystax
() автор топика
Ответ на: комментарий от a1batross

Да, я автор CrystaX NDK, и несколько лет вел его в одиночку. Но некоторое время назад привлек к этому проекту еще людей, потому и пишу везде «мы выпустили», а не «я выпустил».

crystax
() автор топика

Установочный файл самодостаточен? В смысле, содержит все тулзы, необходимые для разработки?

buddhist ★★★★★
()

Звучит супер-круто!

При разработке вдохновлялись ли libhybris?

Вы пишете, что libc Bionic меняется от версии к версии. Не означает ли это, что ваша обёртка libcrystax может также из-за изменений нижележащего слоя ломаться?

Adonai ★★★
()

Но при этом станут доступными многие возможности, отсутствующие в Google NDK.

Android API, Google Play Services есть? Если его подсунуть вместо Android NDK Qt будет с ним работать (иначе говоря, API имеет обратную совместимость с NDK)?

Вообще сама идея хороша. Работать в этом направлении однозначно стоит.

К стати, по поводу вашего сайта. Я еле нашел как с вами связаться. Мне кажется помещать ссылку для обратной связи в конце писания как-то странно.

RiseOfDeath ★★★★
()
Последнее исправление: RiseOfDeath (всего исправлений: 4)
Ответ на: комментарий от ivanlex

это ты перечислил признаки статьи на википедии. Посмотри новости в журналах - они все предвзяты, выражают мнение автора, и зачастую даже рассказываются от первого лица.

stevejobs ★★★★☆
()

что скажут аналитики? нужно? мне кажется, что да.

anonymous
()

Новость классная. На reddit еще бы запостить не мешало бы.

Ну и удачи в дальнейшей работе, конечно же!

eao197 ★★★★★
()

ребята значит ли это что в исходном предложении не будет никакой джавы?
это же прекрасно ?

теперь игры для андроеда не будут выглядеть как из прошлого десятилетия?

rogerw
()

Но при этом станут доступными многие возможности, отсутствующие в Google NDK.

Вот про это и нужно было подробно написать.
Что кроме rtti он добавляет?

andreyu ★★★★★
()
Ответ на: комментарий от ivanlex

Поздравляю как созидателя данного программного продукта.

Созидателя? :)

andreyu ★★★★★
()

Ну фиг знает. Это была бомба во времена младенчества официального NDK, когда в нем поддержка плюсов была никакая. Сейчас же в кристаксе плюшек маловато, widechar и локали ненужны, бинарный boost также ненужен (почти все что нужно в нем все равно header-only), ICU в дефолтном виде малополезен (icudata слишком толстый, его стрипать надо). Для Obj-C нет stdlib - вот это если пофиксить, то может быть интересно.

anonymous
()

Долго втуплял в надпись CrystalX.NET на сайте, потом дошло, что это не версия СДК для C#, а просто домен такой

anonymous
()
Ответ на: комментарий от rogerw

ребята значит ли это что в исходном предложении не будет никакой джавы?

Обвязка, запускающая скомпилированный код, все равно нужна. Но ее не придется писать самому.

У меня программа на Cocos2d-x, все на С/С++, кроме обращения к Android API в самом начале (программе нужен UID, привязанный к железу). Фактически в шаблоне Кокоса вписал пару строчек и больше Жабы не трогал.

Кстати, присоединяюсь к благодарностям автору. Не знаю, как во младенчестве, а в 7 версии NDK еще толком не понимал С++0х, и CrystaX в этом смысле был очень кстати.

Adamos ★★
()
Ответ на: комментарий от buddhist

Самодостаточен в том смысле, что содержит компиляторы, sysroot и т.д. Этого достаточно, чтоб создавать рабочие executables/libraries для Android. Тем не менее, для создания APK требуется Android SDK - как минимум для обвязки. Иными словами, CrystaX NDK - это замена Android NDK, а не Android NDK+SDK. В будущем, возможно, мы попробуем уйти от привязки к Android SDK.

crystax
() автор топика

интересный проект! поздравляю с релизом.

у вас вместо bionic что-то свое? или это перепиленный bionic? или просто другой libc? есть какое-то сравнение размера APK между вашим и официальным NDK?

кстати, сайт ваш на андроиде (смартфоне) очень плохо работает, что-то не то с меню, которое закрывает половину текста.

будут ли какие-то преимущества от использования CrystaX, если «у меня и с bionic все ок»?

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

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от Adamos

а в 7 версии NDK еще толком не понимал С++0х

Ну в 10-й NDK с этим-то норм. (Крайние gcc и шланг, кот, обмазанный лямбдами и тэдэ собирается норм. Другое дело, что иногда приходится думать, чем заменить то, что в NDK добавить поленились, т.к. он в общем-то в андроиде «на от*сь» - по остаточному принципу, что видно по AS 1.0, где поддержку начали добавлять «потом», когда радостно объявили, что «adt - всё». Если CrystaX более лучше поддерживает - так это ж отлично.)

slackwarrior ★★★★★
()
Ответ на: комментарий от ivanlex

в научных журналах все статьи обезличены

Неправда, они там чаще всего обобщенно-личные :)

buddhist ★★★★★
()
Ответ на: комментарий от Adonai

При разработке вдохновлялись ли libhybris?

Нет, но надо будет посмотреть на этот проект.

Вы пишете, что libc Bionic меняется от версии к версии. Не означает ли это, что ваша обёртка libcrystax может также из-за изменений нижележащего слоя ломаться?

Да, конечно она может ломаться. Но мы отслеживаем ситуацию и при выходе нового релиза Android оперативно приводим libcrystax в рабочее состояние. Фактически же, если смотреть ретроспективно, подобная поломка случилась всего один раз - при переходе от Android 4.4 к Android 5.0. Произошло это от того, что в 5.0 некоторые функции, на которые полагалась libcrystax, были убраны из Bionic. Мы это быстро поправили, и после этого достаточно просто пересобрать приложение с обновленной libcrystax, и все будет работать.

На самом же деле, чем дальше, тем меньше libcrystax зависит от Bionic (в идеале хотелось бы от такой зависимости уйти вообще), а потому и вероятность поломок при смене версии Android снижается.

crystax
() автор топика

и еще, можно немного подробнее про objc? какие у вас планы на этот счет? что собираетесь с ним делать?

waker ★★★★★
()
Ответ на: комментарий от RiseOfDeath

Android API, Google Play Services есть?

Если имеются в виду нативные API - да, имеются. Java частью пока не занимались, но есть планы по реализации в нативном виде тех API, что пока присутствуют только в виде Java.

Если его подсунуть вместо Android NDK Qt будет с ним работать (иначе говоря, API имеет обратную совместимость с NDK)?

Вообще говоря, мы еще не проверяли Qt, но работать должен - просто потому, что это такой же NDK с точки зрения Qt, что и гугловский; за исключением того факта, что нижележащий уровень более соответствует POSIX. Возможно, конечно, что Qt не сразу заработает из-за каких-то уж очень Android-специфичных правок в Qt коде, но исправление сведется к откату таких правок.

crystax
() автор топика
Ответ на: комментарий от Solace

Пробовали, да. Когда сможете разобраться с ObjC, то станете очень крутыми.

Работаем над этим.

crystax
() автор топика
Ответ на: комментарий от andreyu

Что кроме rtti он добавляет?

Об этом написано на странице релиза, на которую ведет ссылка из новости

crystax
() автор топика

какой интересный проект, спасибо за новость! (ну и за проект конечно)

AndreyKl ★★★★★
()
Ответ на: комментарий от anonymous

Ну фиг знает. Это была бомба во времена младенчества официального NDK, когда в нем поддержка плюсов была никакая. Сейчас же в кристаксе плюшек маловато, widechar и локали ненужны, бинарный boost также ненужен (почти все что нужно в нем все равно header-only), ICU в дефолтном виде малополезен (icudata слишком толстый, его стрипать надо). Для Obj-C нет stdlib - вот это если пофиксить, то может быть интересно.

Кому-то нужны, кому-то нет. Вот вам локали/widechar/boost не нужны, а многим другим - очень нужны.

Что же касается библиотек для Objective-C - мы работаем над этим и, думаю, в скором времени представим их на суд общественности.

crystax
() автор топика
Ответ на: комментарий от crystax

Если имеются в виду нативные API - да, имеются. Java частью пока не занимались, но есть планы по реализации в нативном виде тех API, что пока присутствуют только в виде Java.

Честно говоря не знаю naative API это или именно Java часть - всякие покупки в приложениях, всплывающие уведомления и т.п.

Вообще говоря, мы еще не проверяли Qt, но работать должен

Попробую на досуге собрать какой-нибудь Hello World с ним.

RiseOfDeath ★★★★
()
Ответ на: комментарий от waker

у вас вместо bionic что-то свое? или это перепиленный bionic? или просто другой libc?

На данный момент у нас гибрид - часть функциональности предоставляется libcrystax (в составе CrystaX NDK, должна паковаться и распространяться вместе с приложением), часть из Bionic. Есть желание полностью отвязаться от Bionic, чтоб не зависеть от нее.

есть какое-то сравнение размера APK между вашим и официальным NDK?

Размер APK увеличивается ровно на размер libcrystax.so, при прочих равных. Пострипанная libcrystax.so занимает 600 Kb, а при включении в APK еще и немного жмется, так что размер APK вырастает незначительно.

crystax
() автор топика
Ответ на: комментарий от waker

кстати, сайт ваш на андроиде (смартфоне) очень плохо работает, что-то не то с меню, которое закрывает половину текста.

Разберемся. Вообще, CrystaX NDK не для мобильных платформ, скачивать его на мобильный девайс смысла нет. Но все-таки с сайтом разберемся.

будут ли какие-то преимущества от использования CrystaX, если «у меня и с bionic все ок»?

Сложно сказать. Сильно зависит от ваших потребностей. Вообще мы планируем добавлять много «вкусностей», так что наверняка преимущества появятся, если даже пока нет. Просто этот релиз - важная веха, в которой проделана немалая работа на нижнем уровне, которая не очень видна пользователю NDK - обеспечение POSIX совместимости. Быть может, это не выглядит мощной фичей, но это - основа для дальнейших улучшений, которые теперь будет делать намного легче. Поэтому, как говорят в америках, stay tuned!

crystax
() автор топика
Ответ на: комментарий от slackwarrior

а в 7 версии NDK еще толком не понимал С++0х

Ну в 10-й NDK с этим-то норм.

Не так уж и нормально. Что касается самого языка - то тут все более или менее, из-за использования gcc/clang. А если вам понадобилась стандартная библиотека C++ - об этом можно забыть. В Android NDK от Google доступны на выбор две реализации стандартной библиотеки C++ — GNU libstdc++ и LLVM libc++. К сожалению, обе работают плохо. Используя GNU libstdc++, вы не получите ни std::thread, ни std::mutex, ни std::chrono — и это далеко не все. Что же касается LLVM libc++, то там std::thread/std::mutex/std::chrono и т.д. доступны, но ее стабильность оставляет желать лучшего — т.е. при ее использовании регулярные падения вам обеспечены. Собственно говоря, из-за этого LLVM libc++ находится в «экспериментальном» статусе в Android NDK от Google.

Причины столь плохой работы обеих реализаций стандартной библиотеки C++ — неполноценная реализация Bionic. Многие части (требующиеся по стандарту ISO C) в ней просто не реализованы, а многие из тех, что есть — реализованы с серьезными ошибками. Как один из самых запомнившихся примеров таких серьезных ошибок могу привести реализацию strtod(), которая не парсит «0xNNNN» строки, а просто возвращает 0. Ну а что касается отсутствующей функциональности, то тут можно долго перечислять — нет поддержки wide characters, нет поддержки локалей, нет поддержки многих математических функций и т.д. Понятно, что стандартная библиотека C++ просто не может быть полноценно реализована на основе такой куцей базы.

У нас же в CrystaX NDK вы получаете абсолютно полноценную стандартную библиотеку C++, причем вольны использовать либо GNU libstdc++, либо LLVM libc++ - на ваш выбор. Никакой «экспериментальности» там нет, они просто работают. Именно благодаря libcrystax, обеспечивающей честное POSIX поведение.

crystax
() автор топика
Ответ на: комментарий от waker

и еще, можно немного подробнее про objc? какие у вас планы на этот счет? что собираетесь с ним делать?

Сам язык доступен для использования уже сейчас. Для примера можно посмотреть здесь и здесь. Пока еще нет поддержки Objective-C runtime v2 и Foundation etc. Над этим и работаем.

crystax
() автор топика
Ответ на: комментарий от crystax

Разберемся. Вообще, CrystaX NDK не для мобильных платформ, скачивать его на мобильный девайс смысла нет. Но все-таки с сайтом разберемся.

ну я лор на смартфоне иногда читаю, и по ссылкам перехожу. я не собирался использовать crystax на мобиле, но почитать о нем ведь можно, да?

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от RiseOfDeath

К стати, по поводу вашего сайта. Я еле нашел как с вами связаться. Мне кажется помещать ссылку для обратной связи в конце писания как-то странно.

Там еще есть меню в верхнем правом углу. При наведении на него мышкой выплывает список дополнительных ссылок, в том числе и для связи.

crystax
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.