Intereting Posts
Google Analytics в приложении для Android – работа с несколькими действиями Приложение Android Market для Android – телефония? Получение содержимого тела запроса с использованием метода POST-метода Retrofit 2.0 Опубликовать данные в webview в android Как включить выделенные меню по умолчанию в веб-обозревателе Android? Возможно ли ввести режим отладки для андроида при запуске теста junit? Добавление динамического представления в элемент RecyclerView Добавление круглой рамки вокруг закругленного растрового изображения Как синхронизировать время ядра и время логарифма? Phonegap – кордова – медленная и медленная работа на устройствах Android и iOS Как получить правильную ширину окна при изменении ориентации для устройств Android как на планшетах, так и на мобильных телефонах Прозрачная тема не работает при программном программировании на Android 2.3.3 или 4.2 Можно ли использовать распознавание речи Android, не показывая диалог? Как развернуть текст для обтекания изображения Как получить уведомление Heads Up в android с помощью Firebase Cloud Messaging (Уведомление), в то время как приложение не находится на переднем плане?

USTL или STLPort для Android?

Я работаю с Android NDK, и поскольку в настоящее время он не поддерживает STL, мне было интересно, есть ли там блестящие люди, которые добились успеха в этом или знают, что лучше подходит для платформы Android: uSTL или STLPort.

EDIT: Похоже, что другой вариант может быть CrystaX .NET .

На своем веб-сайте:

… настраиваемая дистрибуция Android NDK r3, которую я перестроил из официальных источников. Добавлена ​​поддержка исключений C ++, RTTI и стандартной библиотеки C ++.

Solutions Collecting From Web of "USTL или STLPort для Android?"

STLport поддерживается с Android2.3 сейчас !!!

Порты STL официально доступны в Android NDK с версии r5 on. Его можно использовать как статическую или разделяемую библиотеку. Следующие реализации доступны с помощью NDK:

  • STLport , на основе v5.2.0:
    • Static stlport_static : используйте, если в вашем проекте имеется только одна динамическая библиотека.
    • Dynamic stlport_shared : использовать, если в вашем проекте имеется более одной динамической библиотеки.
  • system GNU libstdc ++ (статическая библиотека)

Рекомендуемый, простой способ использовать его во время сборки – это определить APP_STL в Application.mk, например:

 APP_STL := stlport_static 

И если вы хотите его перестроить (это необязательно), определите STLPORT_FORCE_REBUILD в своем Application.mk:

 STLPORT_FORCE_REBUILD := true 

Также доступна платформа тестирования модулей для STLport.

Текущие ограничения для STLport :

  • Исключения C ++ не поддерживаются
  • RTTI не поддерживается
  • «Вероятные ошибки» в поддержку wchar_t и локалей

Различные ссылки:

Документация доступна в пакетах NDK в следующих местах (их может быть больше):

  • docsCPLUSPLUS-SUPPORT.html
  • Источники / CXX-СТЛ / STLport
  • Источники / CXX-СТЛ / гну-libstdc ++

Загрузите NDK + docs здесь ; Ошибки в файлах здесь


Ниже приведен фрагмент документа docs / CPLUSPLUS-SUPPORT.html (из документов NDK, r5)

III. Выбор реализации стандартной библиотеки C ++:

По умолчанию заголовки и библиотеки для минимальной системной библиотеки времени выполнения C ++ (/system/lib/libstdc++.so) используются при создании источников C ++.

Однако вы можете выбрать другую реализацию, установив переменную APP_STL на что-то еще в Application.mk, например:

APP_STL: = stlport_static

Чтобы выбрать статическую реализацию STLport, предоставляемую этим NDK. Значения значения APP_STL:

System -> Использовать минимальную библиотеку времени выполнения C ++ по умолчанию. Stlport_static -> Использовать STLport, созданный как статическая библиотека. Stlport_shared -> Использовать STLport, созданный как разделяемая библиотека.

ПРЕДУПРЕЖДЕНИЕ: ВАЖНАЯ ПЕЧЬ

  AT THE MOMENT, OUR STLPORT IMPLEMENTATION DOES NOT SUPPORT EXCEPTIONS AND RTTI. PLEASE BE SURE TO NOT USE -fexceptions OR -frtti IN ALL MODULES THAT USE IT. 

ПРЕДУПРЕЖДЕНИЕ: КОНЕЦ ВАЖНОЙ ПЕЧИ

«Stlport_shared» предпочтительнее, если в вашем проекте есть несколько разделяемых библиотек, в которых используется C ++ STL, поскольку он позволяет избежать дублирования функций и, что более важно, глобальных переменных (например, std :: cout) в каждом из них, что может иметь неожиданные результаты ,

С другой стороны, вам придется загружать его явно при запуске приложения, как в следующем примере:

  static { System.loadLibrary("stlport_shared"); System.loadLibrary("foo"); System.loadLibrary("bar"); } 

Там, где «libfoo.so» и «libbar.so» зависят от «libstlport_shared.so».

Обратите внимание, что имя общей библиотеки, если «libstlport_shared.so», чтобы избежать именования конфликтов с некоторыми изображениями системы Android, которые включают системный уровень libstlport.so (который, как оказалось, не является ABI-стабильным и не может использоваться из машинного кода, созданного NDK) ,

«Stlport_static» предпочтительнее, если в вашем проекте имеется только одна общая библиотека: только функции STL и необходимые вам переменные будут связаны с вашим машинным кодом, уменьшая его размер кода, и вам не нужно будет загружать динамический stlport_shared в запускать.

Внутривенно Проблемы, связанные с STLport:

Этот NDK предоставляет готовые статические и разделяемые библиотеки для STLport, но вы можете принудительно его перестроить из источников, указав в своей среде или вашем Application.mk следующее:

 STLPORT_FORCE_REBUILD := true 

STLport лицензируется под лицензией open-source типа BSD. Дополнительные сведения о библиотеке см. В источниках / cxx-stl / stlport / README.

V. Планы на будущее:

  • Сделать STLport совместимым с исключениями C ++ и RTTI
  • Полная поддержка GNU libstdc ++
  • Поддержка uSTL?

Просто отметьте, что uSTL немного отличается от стандарта. Например, он предполагает кодировку UTF-8 для std :: string. Все еще выглядит интересно, хотя …

Недавно я столкнулся с некоторыми вспомогательными скриптами и портом STLport для Android от Джона Рипли.

Существует также связанное сообщение в блоге с инструкциями по его настройке .

Полагаю, это может облегчить переход с STLport.

Вот как я настроил STLPort для работы с Android Froyo.

 // The code // The set of definitions and includes for STLPort // They used defined() instead of #ifdef. #define _STLP_HAS_INCLUDE_NEXT 1 #define _STLP_USE_MALLOC 1 #define _STLP_USE_NO_IOSTREAMS 1 #include <stl/config/_android.h> #include <map> #include <string> // Android.mk # For Android STL support LOCAL_C_INCLUDES += external/stlport/stlport LOCAL_SHARED_LIBRARIES += libstlport 

Андрей

Обратите внимание, что упоминание репозитория git в ссылке из ответа Степана Райко больше не существует. Альтернативные источники находятся на anddev и, через git, на git: //stlport.git.sourceforge.net/gitroot/stlport/stlport. Я нашел последнее в более продолжительном обсуждении использования stlport и boost под Android.

Начиная с первого ответа на этот вопрос, я получил START-файл anddev для работы с моей библиотекой, которая также вызывает повышение, включая проблемную shared_ptr. Для получения подробной информации о моем решении см. Этот вопрос .