Приветствую всех читателей! Спешу сообщить о выпуске CrystaX NDK 10.1 — набор инструментов для разработки на C/C++ (и Objective-C) под Android. CrystaX NDK разработан как прозрачная замена Google Android NDK, но добавляет немало возможностей, отсутствующих в оригинальном NDK. Прежде всего, это означает, что вместо Google NDK можно использовать CrystaX NDK, и все продолжит работать как раньше.
Но при этом станут доступны многие вещи, которых нет в Google NDK. В этом выпуске мы проделали большую работу по обеспечению большей совместимости со стандартами ISO C, ISO C++ и IEEE Std 1003.1 (POSIX), что значительно упрощает перенос существующего кода на Android. Как вы, возможно, знаете, Android libc (Bionic) далёк от соответствия этим стандартам.
Многие части просто не реализованы, другие реализованы с ошибками, которые вынуждают тратить долгие часы на отладку, тем более, что от libc этого не ожидаешь (до сих пор помню, как мне пришлось отлаживать два дня, прежде чем выяснилось, что strtod( ) не может анализировать строки «0xXXXX»).
Конечно, со временем ситуация улучшается, и в новых версиях Android libc потихоньку исправляется и дополняется, но а) темпы исправлений и дополнений абсолютно неудовлетворительны и б) что делать разработчикам, чьи программы должны работать не только на последней, а также на предыдущих версиях Android? В CrystaX NDK мы решили эти проблемы, внедрив дополнительную библиотеку libcrystax, в которой реализовали недостающий и неправильно реализованный функционал от Bionic. Это также решает проблему запуска программ на более ранних версиях Android, поскольку.
libcrystax.so входит в состав приложения и не зависит от версии Android. Само внедрение дополнительной библиотеки также сделано максимально прозрачно - т.е.
разработчику не нужно указывать ничего дополнительного, все будет собрано автоматически.
Другими словами, типичный процесс разработки с использованием NDK остается неизменным, что позволяет использовать CrystaX NDK в качестве прозрачной замены Google Android NDK. Итак, здесь я кратко перечислю основные возможности CrystaX NDK:
- Полная поддержка широких символов (wchar_t), включая возможность преобразования многобайтовых кодировок (например, UTF-8) в широкие символы и наоборот. Это очень полезно при портировании существующего кода (например, из мира Windows) на Android.
- Полная поддержка встроенной локализации - т.е.
printf(), strftime(), strfmon() и другие работают с учетом локали, установленной с помощью setlocale() .
Это означает, что приложения можно локализовать, не прибегая к JNI. Также доступна известная библиотека.
отделение интенсивной терапии , что означает полную поддержку Unicode для тех, кому это необходимо.
- Полная поддержка математических функций в соответствии со стандартом IEEE Std 1003.1, издание 2013 г.
, включая функции для работы с комплексными значениями И независимые от типа (обобщенные) функции .
- Полная поддержка стандартной библиотеки C++.
Несмотря на заявленную поддержку C++ в Android NDK от Google, она остается чисто номинальной, т.к.
большая часть стандартной библиотеки C++ не работает. В частности, не поддерживаются std::mutex, std::chrono, std::stol, std::stoul и многие другие.
Если вы используете CrystaX NDK, вы получаете полную поддержку C++ — как самого языка, так и его стандартной библиотеки.
- Ускорьте библиотеки прямо из коробки.
Мы предоставляем скомпилированные библиотеки Boost 1.57.0 как часть CrystaX NDK, поэтому использовать Boost для программирования Android теперь очень просто.
Кроме того, Boost в CrystaX NDK работает намного лучше, чем тот же Boost, созданный с использованием Google Android NDK, просто потому, что в нашем случае он работает поверх значительно более совместимого со стандартами слоя, чем обычный Android libc (да, я говорю о libcrystax. сердце CrystaX NDK).
- Поддержка языков программирования Objective-C и Objective-C++ включена как в gcc, так и в clang. В настоящее время поддержка ограничена ядром этих языков; Ведется работа над средой выполнения Objective-C v2 и библиотеками, подобными Cocoa. Однако для многих проектов этого достаточно, поэтому такая возможность доступна в CrystaX NDK.
Пожалуй, я остановлюсь здесь.
Если у вас возникнут вопросы, буду рад ответить в комментариях.
Теги: #android ndk #crystax #boost #C++ #Разработка для Android
-
Дайджест Laravel (19–25 Октября 2020 Г.)
19 Oct, 24 -
Такой Железный И Такой Безымянный
19 Oct, 24 -
Ddos-Атака На Сайт 5Zvezd.ru
19 Oct, 24