Android NDK: Inklusive Boost C ++ – Bibliothek

Ich versuche, eine Boost-Bibliothek in meinem Android-Anwendung verwenden, mit dem NDK. Ich habe hier ein paar Erfolgsgeschichten gefunden , aber ich kann das nicht über mich sagen. Ich bin speziell versucht, die Bibliothek in diesem Link zu verwenden , sowie die Boost-Thread-Bibliothek. In dem unten stehenden Code versuche ich nur, die Threadbibliothek einzuschließen, nicht die Mathematik-Bibliothek. Der Prozess, den ich verwendet habe, um die Boost-Bibliotheken zu bauen, ist genau so wie der erste Link, den ich angeschlossen habe.

So weit, es scheint, dass ich die Boost-Bibliotheken erfolgreich aufgebaut habe, aber wenn ich ndk-build laufe, ndk-build ich folgende Fehlermeldung:

  • Android - wie kann ich eine ANR untersuchen?
  • Gradle Build Error: Maven Meta-Daten können nicht von https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml geladen werden
  • Hardtastatur Fail to focus editText
  • Android inventory.getSkuDetails () return null
  • Holen Sie WhatsApp Nachrichten
  • Wie würden Sie Dalvik verbessern? Android Virtual Machine
  •  Prebuilt : libboost_thread.a <= <NDK>/sources/ cp: omitting directory `path/to/ndk/sources/boost' make: *** [obj/local/armeabi/libboost_thread.a] Error 1 

    Offensichtlich ist das cp: omitting directory... ist nicht gerade ein Fehler. Aber das Einzige, was ich sonst noch bekomme, ist die nächste Zeile, was eigentlich nichts bedeutet. Error 1

    Hier ist meine Android.mk Datei:

     LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_STATIC_LIBRARIES := boost_thread LOCAL_LDLIBS := lboost_system-gcc-md lboost_thread-gcc-md -lgnustl_static LOCAL_LDLIBS += lboost_system-gcc-md lboost_thread-gcc-md \ -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi \ -lgnustl_static LOCAL_SRC_FILES := #cpp_sources LOCAL_MODULE := com_example_ndkFile_CppMethods include $(BUILD_SHARED_LIBRARY) $(call import-module,boost) 

    Und es gibt auch eine Android.mk Datei im path/to/ndk/sources/boost/ :

     LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= boost_thread LOCAL_SRC_FILES:= android/lib/libboost_thread.a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) include $(PREBUILT_STATIC_LIBRARY) 

    Und meine bescheidene Application.mk Datei:

     APP_ABI := armeabi armeabi-v7a APP_STL := gnustl_static APP_CPPFLAGS = -fexceptions 

    Ich baute die Boost-Bibliotheken mit bjam . Alle libboost_###.a Dateien befinden sich im sources/boost/android/lib Ordner.

    Was ist der Fehler, den ich bekomme?

  • Wie mache ich einen Toast aus einer Nicht-Aktivitätsklasse?
  • Erkennung "Nur 2G-Netzwerke verwenden" einstellen
  • Android fügen Padding zwischen Radiogroup-Tasten programmgesteuert hinzu
  • Android-Logcat ist mit "W / Google Maps Android API überschwemmt: GLHudOverlay veraltet; Draw (): no-op "
  • Animierte Änderungsbreite von android RelativeLayout
  • Navigation Schublade und VideoView in Android
  • 2 Solutions collect form web for “Android NDK: Inklusive Boost C ++ – Bibliothek”

    Ich baute die Boost-Bibliotheken mit Boost-for-Android . Dann habe ich in meinem boost / include / lib Verzeichnis die android makefile boost.mk

     LOCAL_PATH := $(call my-dir) # boost_date_time # include $(CLEAR_VARS) LOCAL_MODULE := boost_date_time LOCAL_SRC_FILES := libboost_date_time-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_filesystem # include $(CLEAR_VARS) LOCAL_MODULE := boost_filesystem LOCAL_SRC_FILES := libboost_filesystem-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_thread # include $(CLEAR_VARS) LOCAL_MODULE := boost_thread LOCAL_SRC_FILES := libboost_thread-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_system # include $(CLEAR_VARS) LOCAL_MODULE := boost_system LOCAL_SRC_FILES := libboost_system-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_program_options # include $(CLEAR_VARS) LOCAL_MODULE := boost_program_options LOCAL_SRC_FILES := libboost_program_options-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_chrono # include $(CLEAR_VARS) LOCAL_MODULE := boost_chrono LOCAL_SRC_FILES := libboost_chrono-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) 

    Und mein Modul, wo ich einige der Boost-Bibliotheken verwende, sieht so aus

     LOCAL_PATH := $(call my-dir) # SignalServer, executable # include $(CLEAR_VARS) LOCAL_CFLAGS := -DTIXML_USE_TICPP #LOCAL_CFLAGS += -DDEBUG LOCAL_STATIC_LIBRARIES := boost_thread \ boost_system \ boost_filesystem \ boost_program_options \ boost_chrono \ LOCAL_STATIC_LIBRARIES += ticpp \ tia \ tobicore \ tobiid \ tid \ gdf LOCAL_MODULE := signalserver LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_C_INCLUDES += $(LOCAL_PATH)/extern/include LOCAL_C_INCLUDES += $(LOCAL_PATH)/../boost/include/boost-1_53 LOCAL_SRC_FILES := #cpp source include $(BUILD_EXECUTABLE) 

    Darüber hinaus habe ich eine Android.mk wo alle subdir makefiles aufgeführt sind

     TOP_PATH := $(call my-dir) include $(TOP_PATH)/boost/lib/boost.mk include $(TOP_PATH)/signalserver/signalserver.mk . . 

    Und meine Anwendung.mk:

     APP_PLATFORM := android-14 APP_ABI := armeabi-v7a #APP_OPTIM := debug #NDK_DEBUG := 1 NDK_TOOLCHAIN_VERSION := 4.6 APP_STL := gnustl_static APP_CPPFLAGS := -fexceptions -frtti 

    Hier: http://silverglint.com/boost-for-android/ Sie finden eine einfache und schmerzlose neue Möglichkeit, eine moderne (zB 1.64.0) Version von Boost für Android zu bauen. Arbeitet mit clang und gcc.

    Ebenfalls enthalten ist eine Beispiel-App, die Ihnen zeigt, wie Sie die so gebauten Boost-Binärdateien nutzen können.

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