modules.poke : NO_BZIP2 : 1 ;   #ANDROID_NDK = ../.. ;   ANDROID_NDK = E:/Android/android-ndk-r11c ;   using gcc : android4.9 : $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-g++ :   $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ar   $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ranlib   --sysroot=$(ANDROID_NDK)/platforms/android-21/arch-arm   -I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.9/include   -I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include   #-DBOOST_NO_STD_WSTRING  -DBOOST_FILESYSTEM_VERSION=3 -lgnustl_shared   -mthumb -Os   -fno-strict-aliasing -O2 -DNDEBUG -g   -lstdc++ -std=gnu++11 -D__GLIBC__ -D_GLIBCXX__PTHREADS -D__arm__ -D_REENTRANT 注意调整 ANDROID_NDK 的路径 这里使用android-ndk-r11c ,所以用的是android4.9 在boost_1_64_0 文件夹下新建 Android.mk 写入
LOCAL_PATH:= $(call my-dir)  
#LOCAL_CPPFLAGS += –fexceptions
include $(CLEAR_VARS)  
LOCAL_MODULE:= boost_system  
LOCAL_SRC_FILES:= android/lib/libboost_system.a  
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  
include $(PREBUILT_STATIC_LIBRARY)  
include $(CLEAR_VARS)  
LOCAL_MODULE:= boost_serialization
LOCAL_SRC_FILES:= android/lib/libboost_serialization.a  
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  
include $(PREBUILT_STATIC_LIBRARY)  
include $(CLEAR_VARS)  
LOCAL_MODULE:= boost_wserialization
LOCAL_SRC_FILES:= android/lib/libboost_wserialization.a  
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  
include $(PREBUILT_STATIC_LIBRARY)

3. 项目打包

打开jni/Android.mk 添加

LOCAL_WHOLE_STATIC_LIBRARIES += boost_system
LOCAL_WHOLE_STATIC_LIBRARIES += boost_serialization

$(call import-module, boost_1_64_0)

编译报错:

则要在 jni/Application.mk 文件中添加 ,

APP_CPPFLAGS += -fexceptions (添加异常支持 LOCAL_CPPFLAGS += –fexceptions)

编译到boost::serialization报错,

参考 http://stackoverflow.com/questions/15479136/how-to-implement-mbtowc-for-android-or-ideally-how-not-to

在cpp文件里加入代码,替代那些没定义的函数

#ifdef ANDROID
int wctomb(char *s, wchar_t wc) { return wcrtomb(s,wc,NULL); }
int mbtowc(wchar_t *pwc, const char *s, size_t n) { return mbrtowc(pwc, s, n, NULL); }
#endif
在网上找了好多关于 android 如何 编译 和使用 boost 的文章,不时过时,就是行不通。花了些时间研究了这个问题,所以整理如下。由于文笔有限,大家在使用过程有问题,欢迎多交流。 Android NDK: android -ndk-r7-crystax-5.beta3 ( http://www.crystax.net/en/download) Boost For Android :
有个 android 项目上需要使用到 boost 标准c++ , Boost 是一个可移植、提供源代码的C++ ,作为标准 的后备,是C++标准化进程的发动机之一,所以想将其移植到 android 系统上进行 编译 。 直接从网上下载 boost 1.52版本,然后写makefile。。。进行 编译 ,,碰到无数的 编译 错误。求助于google网络,终于发现一个好东东: 一个通过NDK 编译 boost 代码的git项
git clone https://github.com/moritz-wundke/ Boost -for- Android .git 2、切到 Boost 项目内,修改build- android .sh 其中的下载链接可能已经失效,我们将其替换为可下载的版本链接 需要替换的内容: http://dl.bintray.com/ boost org/release/$ BOOST _VER1.$ BOOST _VER2.$ BOOST _VER3/sou
开源项目:https://github.com/MysticTreeGames/ Boost -for- Android 编译 注意点: 1.NDK只能用老的,项目文档有说明,我下的是r8e版本 2. windows 安装cygwin,设置NDK环境 3.执行build- android .bat $NDK,这个$NDK不能用/cydrvier/e之类的,必须用e:/