Sloppy's Blog

编译asio下的Android动态静态库

在Android开发时,省出每次都需要编译的麻烦,我们经常需要编译各种静态库与动态库,之前,开发通信时,我们用到asio,下面来编译一个库:

  • 建文件夹asio,再在该目录下建jni目录,把相关的代码Copy进来,并新建一个CPP文件,asio.cpp,内容如下:

    #include "asio.hpp"
    
  • jni目录下新建Android.mk文件,内容如下:

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_ARM_MODE := arm
    LOCAL_MODULE := asio
    LOCAL_SRC_FILES := asio.cpp
    LOCAL_C_INCLUDES := $(LOCAL_PATH)
    \#include $(BUILD_SHARED_LIBRARY) \#这是动态库
    include $(BUILD_STATIC_LIBRARY)\#这是静态库
    
  • jni目录下新建Application.mk文件,内容:

    APP_STL := gnustl_static
    APP_OPTIM := release  
    APP_CFLAGS := -DASIO_STANDALONE=1 -fexceptions -DASIO_SEPARATE_COMPILATION -DASIO_HEADER_ONLY
    APP_CPPFLAGS := -frtti  -fexceptions -std=c++11 -fsigned-char
    APP_ABI = all
    
  • 打开命令行,切换到asio目录,运行NDK下的命令ndk-build,成功会生成libs目录