LINUX.ORG.RU

Вышел CrystaX NDK 10.3.0

 , ,


1

1

Новая версия 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++.

>>> Подробности



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

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

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

Вы не в курсе нашей ситуации, но делаете далеко идущие выводы. Наши клиенты к нам как раз и приходят благодаря NDK. Более того, немалая часть того, что вы видите сегодня как CrystaX NDK, сделана на деньги этих самых клиентов (разумеется, с полного их одобрения). Мы решаем проблемы наших клиентов и, так уж получается, что зачастую часть этой работы - вполне себе обобщенное решение, которое можно добавить в CrystaX NDK и позволить остальным этим пользоваться. Эти случаи оговариваются с заказчиками и довольно часто они дают согласие на это.

Ага, значит, пункт «чтобы завладеть аудиторией» :-) Т.е. вы реально планируете (мечтаете) набрать «критическую массу» пользователей, которая вас и будет кормить прямо или косвенно? :-) Такие «бизнес стратегии», пожалуй, у многих разработчиков свободного софта :-)

Эта аудитория нас уже давно кормит. И это выглядит честной сделкой - мы предоставляем хороший продукт, а это привлекает заказы, позволяющие нам в том числе заниматься и этим продуктом. Мы этого не скрываем, и пишем об этом прямо у нас на сайте.

Но вот «делать бесплатные открытые проекты, зарабатывая на них как деньги, так и карму» - звучит как обман, ибо, или проект бесплатен, или платен. А зарабатывать на «бесплатном» - это как воздух продавать. Ложь кармы не добавляет :-)

Мне неинтересно общаться в таком ключе. Убеждать вас в чем-либо не собираюсь. Однако, что бы вы (или кто-то другой) ни говорили, факт остается фактом - мы именно что зарабатываем на бесплатном и открытом проекте. Текущий способ, конечно, не есть достигнутый идеал, и мы будем развиваться дальше, делая иные продукты на основе CrystaX NDK, но сам CrystaX NDK будет оставаться бесплатным и открытым. Это - выгодная стратегия. А то, что множество людей им пользуется бесплатно - так что ж с того, пусть пользуются. Мы не жадные.

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

В принципе, такие длинные тексты можно и не писать. Достаточно просто подытожить: «каждый выживает так, как умеет». :-)

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

Вы абсолютно зря спорите по бизнес вещам с анонимами.

Сие занятие крайне беЗперспективное, разумные доводы они не понимают, а время потратите.

Проекту желаю удачи, дойдут руки до Android'a пощупаю обязательно.

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

Ещё раз удачи проекту ))

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

Порицателям С++ - когда в своем юношеском угаре дойдете до серьезных проектов MongoDb, PostgreSql, - тогда возможно мозг Ваш поймет для чего люди пользуют С++.

А когда твой мозг дойдёт до того, что PostgreSQL написана на C, а не на C++? :-)

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

Вы абсолютно зря спорите по бизнес вещам с анонимами.

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

Это же общее правило человеческого стада - слышно только Мосек, как они лают на слона, и складывается ощущение, что вокруг одни только Моськи и есть. По счастью, у меня есть возможность видеть реальную востребованность собственного проекта (в виде значительно более адекватного фидбэка), и потому я отношусь к подобным форумным личностям спокойно.

Ещё раз удачи проекту ))

Спасибо!

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

Делаю игру на Cocos2dx, когда собираю с CrystaX на ряде устройств приложение не стартует, зависает с черным экраном. Замечено на устройствах ASUS на атоме. Так-же не стартует стандартное кокосовское демо.

На стандартном NDK от гугля всё работает зашибись.

Разберитесь пожалуйста.

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

Делаю игру на Cocos2dx, когда собираю с CrystaX на ряде устройств приложение не стартует, зависает с черным экраном. Замечено на устройствах ASUS на атоме.

Это происходит только на x86 устройствах? Или на arm тоже? У нас, конечно, не тысячи тестовых устройств, но все-таки тестовое покрытие довольно большое, и подобного не замечали.

Это может быть баг как в Cocos2d-x, так и в CrystaX NDK, но чтобы с ним разобраться, хорошо было бы иметь минимальный пример, на котором воспроизводится проблема. Если у вас есть таковой, пожалуйста, заведите тикет.

Так-же не стартует стандартное кокосовское демо.

Ок, я проверю на днях и дам знать, хотя последний раз, когда я его запускал (два месяца назад), все работало.

Да, кстати, с какой версией CrystaX NDK вы пробовали все это собирать?

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

Тикет я завел https://tracker.crystax.net/issues/1189.

Единственное я еще не обновился, у меня 10.2.1. Сейчас обновлюсь и проверю еще раз.

На всех устройствах с атомом не работает. У меня 2 асуса zenfone (android 5) и один планшет asus transformer pad tf303 cl (android 4.4). Также нашлось пара китайфонов: huawei u88600 (android 4.0.1), fly iq245 plus (android 2.3.3)

Брал стандартную демку из кокоса она также зависает.

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

Тикет я завел https://tracker.crystax.net/issues/1189.

UPD: проверил на нескольких устройствах с Android 4.4, 5.0, 5.1 и 6.0. Стандартное demo из cocos2d-x на всех устройствах работает без проблем, будучи собранным с помощью CrystaX NDK 10.3.0.

Тикет проапдейтил. Если у вас все равно не работает, нужен минимальный пример, на котором воспроизводится проблема (и/или логи с устройства в момент зависания).

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

может теперь при правильном позиционировании с блек джеком и swift взлетит на kickstarter?

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

может теперь при правильном позиционировании с блек джеком и swift взлетит на kickstarter?

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

Аудитория, таким образом, не очень большая, и ожидаемый выхлоп невысокий, а времени и прочих ресурсов для подготовки кампании на kickstarter-е потребуется немало. Думается мне, что игра не стоит свеч. Те, кто хочет нас поддержать финансово, могут это сделать и так - либо напрямую на PayPal, либо через Bountysource.

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

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

Дело не в том, что мало таких гениев, которые способны использовать отличный NDK for Android, а в том, что он в таком виде мало кому нужен, в т.ч. и тем, кто, так сказать, «квалифицирован» и угробил многие годы на то, чтобы вызубрить тонны распрекрасных библиотек boost.* и готчей цепепе :-)

Те, кто хочет нас поддержать финансово, могут это сделать и так - либо напрямую на PayPal, либо через Bountysource.

А так бы взять, да и продавать лицензии за готовый и качественный продукт :-) Каждый нужный труд ведь должен справедливо оплачиваться. Логично? Логично :-) Но нет, надо сделать бесплатно, и просить дотации у прохожих :-) Да здравствует бесплатность ПО :-)

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

Дело не в том, что мало таких гениев, которые способны использовать отличный NDK for Android, а в том, что он в таком виде мало кому нужен, в т.ч. и тем, кто, так сказать, «квалифицирован» и угробил многие годы на то, чтобы вызубрить тонны распрекрасных библиотек boost.* и готчей цепепе :-)

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

Вы говорите, что в таком виде он мало кому нужен, но это не так. Он даже в таком виде уже много кому нужен (подтверждается статистикой скачиваний и фидбэком от пользователей), а в будущем, надеюсь, будет нужен еще большему количеству разработчиков. Вам вынь да подай сразу все готовое, но так не бывает. Дайте срок, и увидите, как все изменится. Дорога в тысячу миль начинается с одного шага.

В ваших словах чувствуется определенное разочарование в идее open source. Не хочется гадать, но это, видимо, что-то глубоко личное - например, обида на этот мир за то, что он не оценил ваших стараний. Это разрушительно. Зря вы так.

А так бы взять, да и продавать лицензии за готовый и качественный продукт :-)

Это мгновенно угробит весь проект, по крайней мере на данном этапе. Спасибо, но нет.

На этом общение на подобные темы прекращаю. Это отнимает много времени, а я лучше потрачу его на работу. Обычно я выделяю примерно неделю после релиза на активное общение в публичных дискуссиях, и это время подходит к концу. Пора браться за работу.

Если будут вопросы по теме, всегда готов ответить. А пустопорожнее сотрясание воздуха буду игнорировать.

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

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

Это вы никак не поймёте, что хороший продукт делается годы, а вложенный в это труд оплачивается лишь потом (это если повезёт). Это хорошо, когда есть деньги, на которые можно ходить в магазин за колбасой и оплачивать счета грубиянов из ЖЭКа, и заниматься разработкой бесплатного софта на благо всей цивилизации. :-) Обычный человек не может себе позволить годами шлифовать какую-то программу за бесплатно в надежде на то, что ещё чуть-чуть и попрёт :-)

Вы говорите, что в таком виде он мало кому нужен, но это не так. Он даже в таком виде уже много кому нужен (подтверждается статистикой скачиваний и фидбэком от пользователей), а в будущем, надеюсь, будет нужен еще большему количеству разработчиков.

Да пожалуйста, я только рад вашему успеху :-) Если получается - кодируйте на здоровье, кормите жён и детей. Это счастье, когда так :-)

Вам вынь да подай сразу все готовое, но так не бывает.

Это неправда. Всё готовое - это не для меня. И я то знаю цену труду, потому то и против бесплатного софта :-)

В ваших словах чувствуется определенное разочарование в идее open source.

Open source тут не причём. А вот «бесплатный» софт - это таки да, гадость :-)

На этом общение на подобные темы прекращаю.

Удачи :-)

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

Про безоплатный софт на форуме по линухам флудить не стоит, по моему скромному разумению, или за каждый cp под линуксом вы куда-то деньги отправляете ?

или PostgreSQL сильно плох ? в качестве примера.

Не несите чушь, раз люди смогли построить своё дело так, что и деньги зарабатывают и проект двигают - честь им и хвала.

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

С проще плюсов. Много проще.

Что ты хочешь этим сказать? :-) Что программисты C не такие крутые херои, как программисты цепепе? :-) Бугага :-)

Ладно исключительно для упоротых QNX например.

Что QNX, например? :-)

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

Начался спор - бесплатное vs опен-сорсное ? Конкретно CrystaX NDK - и бесплатный и опен-сорсный исходники - на гит-хабе бинари - публично доступны более того и тех.поддержка по факту бесплатно - не работает - заводи баг, автор оперативно ответит

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

и тех.поддержка по факту бесплатно - не работает - заводи баг, автор оперативно ответит

Прям сказка какая-то :-) В наше время даже лампочку вкрутить - и то денег требуют. Да что там лампочку, пакеты в гипермакетах - и то денег стоят :-) А тут прям всё бесплатно :-) Круто, что сказать :-)

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

Вау :-) Ты правда думаешь, что Linux или Postgres - это бесплатный софт? :-)

Ну если у самого мозгов не хватает пользоваться бесплатно - то плати. Сколько кстати заплатили не похвалитесь ? А то ведь поди не копеечки, а авторитету то сколько. У нас в продакшене все серваки крутятся без финансовых вливаний. Кластер как-то сам руками настроил и все хорошо. Да и не помню, что бы PostgreSQL стоил бы нам денех... хотя вроде stream replication и прочая прочая жужжит.

Сам себя укоряю, ну что анонимусам отвечать ))) До свидания студент.

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

Что QNX, например? :-)

Так то в принципе ничего, если не считать то, что целиком, включая ядро писан на плюсах... А так - да, ничего так система, мне нравится.

Что ты хочешь этим сказать? :-) Что программисты C не такие крутые херои, как программисты цепепе? :-) Бугага :-)

Я хочу сказать, мой недалекий друг, что С проще плюсов. И при нормальном использовании памяти он понятней и дебажится проще.

И на заметку въюношам бледным со взором горящим: нет хороших и плохих языков - есть ниши, которые они занимают, так к примеру высоконагруженные сервисы люди пишут на вполне низкоуровневых языках, где сами определяют как и что оптимизировать, ну к примеру nginx, а там где надо срочно, быстро и вот показать и что бы поддержать мог маломальски спец - тут приходят иные языки. Что будем тут прописные истины писать ?

PavelAnd
()

Удивительно, как в независимом маленьком проекте появляются версия за версией. А у огромного гугла (снаружи) воз и ныне там:

Jun 4, 2015

Doing more testing, and r10f RC2 is available internally at usual place

Они, что тоже перешли на crystax, ну неофициально, конечно, и теперь у них пропала мотивация допилить свой релиз?...

Или вообще будет как с googlecode --> github.

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

Они, что тоже перешли на crystax, ну неофициально, конечно, и теперь у них пропала мотивация допилить свой релиз?...

Мотивации у них никогда и не было. Начиная с 2009-го года, Google выпускал NDK очень нехотя, и всегда по остаточному принципу. Когда я добавил поддержку C++ в r2 и выпустил первую версию CrystaX NDK, сразу же был сделан анонс в официальной группе рассылки android-ndk@googlegroups.com. Новость была встречена с большим энтузиазмом разработчиками, но не Google-ом. На тот момент отличия CrystaX NDK от Google NDK заключались в маленьком патче на пару сотен строк, и Google мог взять этот патч и включить в свой NDK незамедлительно. Тем не менее, прошел год, прежде чем этот патч был включен в upstream.

С тех пор ситуация нисколько не изменилась - Google много обещает, да мало делает. Ну что ж, раз не делает Google - будем делать мы. Для нас этот проект - и удовольствие, и заработок.

А что будет в будущем - сложно сказать. Конечно, может быть так, что Google вдруг, после многих лет, начнет активно развивать NDK. Ну что ж, это будет здорово. Возможно даже, что CrystaX NDK станет не нужен, т.к. Google NDK будет достаточно «фичастым» и будет активно развиваться. Быть может и так. Но пока никаких предпосылок к этому не видно.

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