Intereting Posts
Использование Android AccountManager для аутентификации пользователей для сервера Как реализовать uncaughtException android Java.lang.IncompatibleClassChangeError, вызванный экземпляром ActivityTestRule Методы переопределения Java при создании нового экземпляра класса Должны ли мы использовать setTargetFragment ()? Я думал, что Фрагменты не должны общаться друг с другом Показать подсказку, чтобы узнать местоположение Невозможно импортировать класс клиентской библиотеки конечных точек Google в проекте Android Где дополнительные параметры командной строки в Android Studio версии 1.5.1 для эмулятора Как я могу добавить эффект водяного знака к изображению в Android? Всегда затухайте с места с Пикассо ANDROID: если WiFi включен и активен, запустите намерение Ошибка Кордовой сборки Gradle при открытии / извлечении zip-файла Как отключить кнопку «Далее» на клавиатуре программного обеспечения EditText (заменить кнопкой «Готово») Как создать тему в уведомлениях FCM На каком потоке выполняется onReceive () из BroacastReceiver, зарегистрированного при запуске LocalBroadcastManager?

Официальная «Boost library» Поддержка Android и iOS?

Этот вопрос в продолжении. Должен ли я выбирать потоки Boost Asio или Aysnc Socket в Android? спросил,

Библиотеки Boost предназначены для широкого использования и использования в широком спектре приложений, но пока нет официальной поддержки для Android и iOS

  1. Есть ли какая-то конкретная причина в том же, что и не оптимизирована для встроенных устройств? Или любая другая причина?
  2. Знает ли какой-либо орган какое-либо приложение, созданное с помощью Boost на Android или iOS?
  3. Целесообразно ли использовать расширенные библиотеки для интенсивного приложения в сети, которое порождает многопоточные потоки для компромиссов?

FYI .. Я использовал следующие ссылки для создания примера приложения для Android, но пока не удалось 🙁

https://github.com/MysticTreeGames/Boost-for-Android

http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

Включить библиотеку Boost C ++ в android

Как использовать библиотеку boost (включая shared_ptr) с Android NDK и STLport

https://sites.google.com/site/fourdollars/android/android-mk

https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/4lxhsKFe7Ho

http://www.crystax.net/trac/ndk/ticket/6

Android NDK R5 и поддержка исключения C ++

Заранее спасибо.

Solutions Collecting From Web of "Официальная «Boost library» Поддержка Android и iOS?"

Получил ответ от сообщества поддержки Да. Эти платформы официально не поддерживаются, потому что никто не вызвался регулярно проводить регрессионные тесты.

Разработчик Boost не может тестироваться на всех платформах. Поэтому разработчики зависят от результатов теста регрессионных тестов, проводимых добровольцами. Например, см. http://beta.boost.org/development/tests/trunk/developer/summary.html

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

Поэтому, если вам нравится официально поддерживать Android или iOS, начните регулярные (предпочтительно ежедневные) регрессионные тесты для Boost. См. http://beta.boost.org/development/running_regression_tests.html

Посмотрите мой кросс-платформенный учебник по github. Он показывает, как настроить Boost и использовать его между iOS и Android. У меня было такое ужасное время с этим, я полагаю, что я буду документировать его, чтобы никто больше не мог понять это. Вы заметите, что этот проект также использует несколько других общих элементов, используемых между двумя платформами, например CoreFoundation и SQLite.

https://github.com/markshiz/cross-platform-tutorial

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

http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

После того, как у вас есть статическая библиотека, собранная с помощью инструментальной цепочки Android, вы можете легко связать ее с помощью модуля, аналогичного тому, который находится в каталоге include/[NAME OF NEW SUBMODULE] проекта выше. Для файла Android.mk в корневой директории используйте что-то похожее на следующее.

 include $(CLEAR_VARS) LOCAL_MODULE:= boost_regex LOCAL_SRC_FILES:= ./path/to/built/static/library/libboost_regex-gcc-mt-sa LOCAL_EXPORT_C_INCLUDES := ./path/to/the/directory/that/has/the/boost/headers include $(PREBUILT_STATIC_LIBRARY) 

Наконец, импортируйте этот модуль, как в примере, внутри

 $(call import-module,[NAME OF NEW SUBMODULE]) 

По другим вопросам – знаете ли вы о приложении, использующем Boost на iOS и Android? Да, я сделал это несколько раз с успехом и выпустил рабочие приложения в App Store.

Ваш другой вопрос, целесообразно ли использовать boost для сетевой коммуникации? Я не уверен, что вы имеете в виду здесь. С какого угла? Вы имеете в виду, философски, технически и т. Д.?

Философски, вы должны спросить себя, каковы ваши аргументы в пользу импорта этой библиотеки и использования ее между Android и iOS. Это экономить время кода, затраты на обслуживание. Если так, я бы сказал, что это отличный способ сделать это. Ясно, что есть некоторые препятствия и боль, чтобы получить такую ​​работу. Кроме того, функции IDE для C ++ не так велики, как для Java в Eclipse. Я стараюсь быть справедливым и сбалансированным в презентации PDF в каталоге doc/ . Дайте это один раз.

С технической точки зрения, я думаю, что единственное, что меня беспокоит, – это убедиться, что я правильно очищаю объекты Asio, когда активность остановлена. Если вам нужно сделать что-то в фоновом режиме, используйте «Сервис»:

http://developer.android.com/reference/android/app/Service.html

ОБНОВЛЕНИЕ: Кажется, что проблема связана с std :: atomic на Android, и поскольку Boost.Asio использует ее (по умолчанию), в сочетании с потоками, один из них иногда зашел в тупик. К счастью, Boost.Asio позволяет легко переключаться с Std.Atomic на Boost.Atomic, и об этом позаботились в проекте Boost-for-Android в этой фиксации .

Для получения дополнительной информации об ошибке см. Здесь


Мы разрабатываем простую многопользовательскую игру (еще не выпущенную) для Android с использованием boost asio, и до сих пор у нас не было никаких проблем. Это вопрос №2.

Какие проблемы вы видите?

Если проблемы связаны с компиляцией и связыванием, возможно, эти подсказки окажутся полезными.

Добавьте в свой файл AndroidManifest.xml следующее:

 <uses-permission android:name="android.permission.INTERNET"></uses-permission> 

Имейте это в своем файле Application.mk:

 APP_STL := gnustl_static APP_CPPFLAGS += -frtti -fexceptions 

И используйте это как шаблон для своего файла Android.mk:

 LOCAL_PATH := $(call my-dir) BOOST_VERSION := 1_49 PROJECT_ROOT := $(LOCAL_PATH)/../../../.. BOOST_INCLUDE_PATH := /path/to/boost/headers BOOST_LIB_PATH := /path/to/boost/libraries # Path and name of the STL library. Add this to the *end* of LOCAL_LDLIBS. # Note this is a hack/workaround to prevent linker errors when compiling with # boost. STL_LIBS := -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi \ -lgnustl_static include $(CLEAR_VARS) LOCAL_MODULE := native-activity LOCAL_C_INCLUDES:= $(BOOST_INCLUDE_PATH) \ $(PROJECT_ROOT)/src \ $(PROJECT_ROOT)/platform/android/jni LOCAL_SRC_FILES := main.cpp LOCAL_LDLIBS := -llog -landroid # The order of these libraries is often important. LOCAL_LDLIBS += -L$(BOOST_LIB_PATH) \ -lboost_system-gcc-mt-$(BOOST_VERSION) \ -lboost_thread-gcc-mt-$(BOOST_VERSION) \ $(STL_LIBS) LOCAL_STATIC_LIBRARIES := android_native_app_glue include $(BUILD_SHARED_LIBRARY) $(call import-module,android/native_app_glue) 

EDIT: Как мы наращиваем поддержку Android. Это то, что мы имеем в нашем Makefile:

 git clone git://github.com/madadam/Boost-for-Android.git ./build-android.sh --boost=1.49.0 --with-libraries=chrono,program_options,system,thread /path/to/ndk 

Обратите внимание, что мы используем нашу собственную версию Boost-for-Android, это только потому, что у нее есть патч для новейшей версии NDK r8d. Из командной строки также видно, что мы используем версию boost 1.49, которая в настоящее время является самой высокой поддержкой Boost-for-Android.

Если вы хотите узнать, какие комбинации Boost и Android NDK поддерживаются, посмотрите проект Boost-for-Android. Он содержит каталоги, называемые patches / boost- < X > / ndk-android < Y >, где X соответствует поддерживаемой версии boost и Y для поддерживаемой версии NDK (бесстыдный плагин: наши 2 цента для проекта :-)).

Ниже представлена ​​еще одна (очень полезная) информация, полученная от сообщества разработчиков:

  1. Есть ли какая-то конкретная причина в том же (что не оптимизировано для встроенных устройств)? Или любая другая причина?

Boost отлично работает на Android. Поскольку существует NDK (собственный набор для разработки) с довольно приличным gcc (4.6), вам просто нужно настроить boost build для использования правильного gcc. Хотя это все работает, для этого нужно немного поработать, чтобы правильно настроить настройки. Но опять же, в принципе, нет большой разницы в создании Boost для Android или любого другого дистрибутива Linux.

  1. Существуют (вообще) какие-либо известные проблемы, если мы используем библиотеки boost для организации сетей и синхронизации потоков для разработки приложений для смартфонов? Будет ли неплохо использовать BOOST ASIO для того же?

Прекрасно использовать Boost.Thread или Boost.Asio. Они отлично работают на устройствах ARM. Существует даже поддержка более специфичных для платформы хакеров, таких как boost.atomic и boost.context.

FYI – это ссылки, найденные https://github.com/MysticTreeGames/Boost-for-Android http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

Повышение уровня с Android NDK еще проще, чем с boost.build напрямую. Я собрал кучу скриптов для сборки Android, которые можно найти здесь: https://github.com/STEllAR-GROUP/HPXAndroid/tree/master/modules Ищите ускорение _ $ {module} для различных библиотек boost. Это не полный список. Только то, что мне нужно. Кроме того, может понадобиться любовь к 1.53. Все разные библиотеки не нуждались в специальной обработке для Android (по сравнению с некоторыми незначительными ошибками, когда компилятор не соглашался с другими версиями gcc)

Надеюсь, это будет полезно и для других! Благодаря!