Offizielle "Boost Library" Unterstützung für Android und iOS?

Diese Frage ist in Fortsetzung zu Sollte ich Boost Asio oder Aysnc Socket Threads in Android wählen? aufgefordert,

Boost-Bibliotheken sollen weit verbreitet sein und über eine breite Palette von Anwendungen verwendbar sein, aber dennoch gibt es keine offizielle Unterstützung für Android und iOS

  • Android Thread Stime, Utime?
  • Wie kann ich Javascript-Fehler in WebView in einer Android-App sehen?
  • Android: adbd kann nicht als root in der Produktion bauen laufen
  • Android ActionBar: Tabulatoren dynamisch anzeigen / ausblenden?
  • Wurzelansicht aus aktueller Aktivität erhalten
  • OnLocationChanged () hat niemals aufgerufen
    1. Gibt es einen bestimmten Grund dahinter wie nicht für eingebettete Geräte optimiert? Oder irgendeinen anderen Grund?
    2. Hat jeder Körper irgendeine Anwendung, die mit Boost auf Android oder iOS gebaut wurde?
    3. Ist es ratsam, Boost-Bibliotheken für Netzwerk-intensive Anwendung zu verwenden, die vielfache Threads für die Kommunikation hervorbringt?

    FYI .. Ich habe mit folgenden Links, um eine Beispiel-Android-Anwendung zu erstellen, aber noch nicht erfolgreich 🙁

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

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

    Include Boost C ++ – Bibliothek in Android

    Wie benutzt man die Boost-Bibliothek (einschließlich shared_ptr) mit dem Android NDK und 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 und Unterstützung von C ++ – Ausnahme

    Danke im Voraus.

  • Wie töte ich eine Aktivität, wenn die Schaltfläche "Zurück" gedrückt wird?
  • Google Play-Entwickler-Konsole: Beta-Test bezahlte Apps kostenlos?
  • Android Actionbar Tabs und Keyboard Focus
  • Nicht unterstützte Methode: InstantRun.getRestartDexFile () - Android Studio
  • Wie lese ich JSON booleschen Wert?
  • Android: Kontrolle Glatte Scroll über Recycler-Ansicht
  • 4 Solutions collect form web for “Offizielle "Boost Library" Unterstützung für Android und iOS?”

    Habe Antwort von Boost Community Ja. Diese Plattformen werden nicht offiziell unterstützt, weil niemand sich freiwillig dazu verpflichtet hat, regelmäßig Regressionstests durchzuführen.

    Es ist nicht möglich, dass ein Boost-Entwickler auf allen Plattformen testet. So hängen Entwickler von den Testergebnissen von Regressionstests ab, die von Freiwilligen durchgeführt werden. Zum Beispiel siehe http://beta.boost.org/development/tests/trunk/developer/summary.html

    Wenn niemand freiwillig die Tests für eine bestimmte Plattform ausführt, wird diese Plattform nicht offiziell unterstützt.

    Also, wenn Sie sich um Android oder iOS offiziell unterstützt werden, starten Sie regelmäßige (vorzugsweise tägliche) Regressionstests für Boost. Siehe http://beta.boost.org/development/running_regression_tests.html

    Schauen Sie sich meine Cross-Plattform-Tutorial auf Github. Es zeigt Ihnen, wie Sie Boost einrichten und es zwischen iOS und Android verwenden. Ich hatte so eine schreckliche Zeit damit, ich glaube, ich würde es dokumentieren, damit niemand sonst herausfinden musste. Sie werden feststellen, dass dieses Projekt auch mehrere andere gemeinsame Elemente zwischen den beiden Plattformen, z. B. CoreFoundation und SQLite verwendet zieht.

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

    Hinweis: In meinem Tutorial wird nicht gezeigt, wie die kompilierten Bibliotheken für den Boost erstellt werden. Ich habe das schon früher mit den Anweisungen gemacht, die Sie zur Verfügung gestellt haben:

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

    Nachdem Sie eine statische Bibliothek haben, die von der Android-Toolchain kompiliert wurde, können Sie sie problemlos über ein Modul verknüpfen, ähnlich dem unter dem Verzeichnis include/[NAME OF NEW SUBMODULE] des Projekts oben. Verwenden Sie etwas Ähnliches wie das folgende für die Android.mk Datei im Stammverzeichnis des Verzeichnisses.

     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) 

    Schließlich importiere das Modul wie im Beispiel innen

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

    Soweit Ihre anderen Fragen – wissen Sie von einer Anwendung, die Boost auf iOS und Android verwendet? Ja, ich habe es mehrmals mit Erfolg gemacht und arbeitete apps an die App Stores.

    Ihre andere Frage, ist es ratsam, Boost für Netzwerkkommunikation zu nutzen? Ich bin mir nicht sicher, was du hier meinst Von welchem ​​winkel Meinst du, philosophisch, technisch usw.

    Philosophisch müssen Sie sich fragen, was ist Ihre Argumentation für den Import dieser Bibliothek und verwenden sie zwischen Android und iOS. Ist es zu speichern Code Zeit, Wartung Belastung. Wenn ja, würde ich sagen, das ist eine hervorragende Möglichkeit, das zu tun. Klar, es gibt einige Hürden und Schmerzen, um diese Art von einrichten zu arbeiten. Auch die IDE-Features für C ++ sind nicht so genial wie für Java in Eclipse. Ich versuche, in der PDF-Präsentation im doc/ Verzeichnis fair und ausgewogen zu sein. Gib das noch einmal.

    Aus einer technischen Perspektive, denke ich, das einzige, worüber ich mich Sorgen machen würde, ist sicherzustellen, dass ich die Asio-Objekte richtig aufräumen kann, wenn die Aktivität gestoppt wird. Wenn Sie Dinge im Hintergrund machen müssen, verwenden Sie stattdessen einen Service:

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

    UPDATE: Es scheint ein Problem mit std :: atomic auf Android zu geben, und da Boost.Asio es benutzt (standardmäßig), kombiniert mit Threads, wurde man gelegentlich sperrig. Glücklicherweise Boost.Asio macht es einfach, von Std.Atomic zu Boost.Atomic wechseln und dies wurde in der Boost-für-Android- Projekt in diesem Commit gesorgt.

    Weitere Infos zum Bug finden Sie hier


    Wir entwickeln ein einfaches Multiplayer-Spiel (noch nicht freigegeben) für Android mit Boost Asio und bisher hatten wir keine Probleme. Das ist für die Frage # 2.

    Welche Probleme sehen Sie?

    Wenn die Probleme mit der Kompilierung und Verknüpfung zusammenhängen, werden sich diese Hinweise vielleicht als nützlich erweisen.

    Füge folgendes zu deiner AndroidManifest.xml-Datei hinzu:

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

    Habe dies in deiner Application.mk-Datei:

     APP_STL := gnustl_static APP_CPPFLAGS += -frtti -fexceptions 

    Und benutze dies als Vorlage für deine Android.mk-Datei:

     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: Wie bauen wir Boost für Android. Das haben wir in unserem 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 

    Beachten Sie, dass wir unsere eigene Gabel von Boost-for-Android verwenden, das ist nur, weil das einen Patch für die neueste NDK Version r8d hat. Es kann auch von der Kommandozeile aus gesehen werden, dass wir die 1.49 Version von Boost verwenden, dies ist derzeit die höchste von Boost-for-Android unterstützt.

    Wenn Sie wissen möchten, welche Kombinationen von Boost und Android NDK unterstützt werden, schauen Sie sich das Boost-for-Android-Projekt an. Es enthält Verzeichnisse mit dem Namen patches / boost- < X > / ndk-android < Y > wobei X der unterstützten Boost-Version und Y der unterstützten NDK-Version entspricht (schamloser Stecker: unsere 2 Cents zum Projekt :-)).

    Unten sind noch einige (sehr nützliche) Informationen erhalten von Boost Community:

    1. Gibt es einen bestimmten Grund desselben (wie nicht für eingebettete Geräte optimiert)? Oder irgendeinen anderen Grund?

    Boost funktioniert perfekt auf Android. Da gibt es eine NDK (native Development Kit) mit einem recht anständigen gcc (4.6 etwas) müssen Sie nur konfigurieren boost build, um die richtige gcc verwenden. Obwohl dies alles funktioniert, braucht es ein bisschen Basteln, um die Einstellungen richtig zu machen. Aber auch im Prinzip gibt es nicht viel Unterschied beim Aufbau von Boost für Android oder einer anderen Linux-Distribution.

    1. Gibt es (überhaupt) irgendwelche bekannten Probleme, wenn wir Boost-Bibliotheken für Networking und Thread-Synchronisation für Smartphone-Anwendungsentwicklung verwenden? Wird es eine gute Idee sein, BOOST ASIO für das gleiche zu benutzen?

    Es ist ganz gut, Boost.Thread oder Boost.Asio zu benutzen. Sie funktionieren perfekt auf ARM-Geräten. Es gibt sogar Unterstützung für die mehr plattformspezifischen Hackeries wie boost.atomic und boost.context.

    FYI sind die Links gefunden https://github.com/MysticTreeGames/Boost-for-Android http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

    Building Boost mit dem Android NDK ist noch einfacher als mit boost.build direkt. Ich habe eine Reihe von Android-Build-Scripts zusammengestellt, die hier zu finden sind: https://github.com/STEllAR-GROUP/HPXAndroid/tree/master/modules Suchen Sie nach dem Boost _ $ {Modul} für verschiedene Boost-Bibliotheken. Dies ist keine vollständige Liste. Nur was ich brauchte Auch könnte man etwas Liebe für 1,53 brauchen. Alle verschiedenen Bibliotheken brauchten keine spezielle Android-Behandlung (modulo einige kleinere Bugs, wo der Compiler nicht mit anderen gcc-Versionen zustimmen)

    Ich hoffe das wäre auch für andere nützlich! Vielen Dank!

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.