移植libwebsockets到Android平台

1 编译工具

libwebsockets 构建工具采用cmake, 我们采用Android SDK自带的cmake工具,指定编译平台为armeabi-v7a,api level设置为16

2 添加ssl支持

libwebsockets支持openssl以及worfssl,这里鉴于boringssl和openssl接口大致一样,默认编译选项ssl是打开,所以我编译的时候openssl的库路径里写的是boringssl编译出来的libssl.a和libcrypto.a,这里需要提一句libssl.a需要在libcrypto.a之前。

3 编译选项

1、关闭服务器编译选项

-DLWS_WITHOUT_SERVER=ON 

2、关闭不必要的服务器测试编译选项

-DLWS_WITHOUT_TEST_SERVER=ON
-DLWS_WITHOUT_TESTAPPS=ON
-DLWS_WITHOUT_SERVER_EXTPOLL=ON
-DLWS_WITHOUT_TEST_PING=ON
-DLWS_WITHOUT_TEST_ECHO=ON
-DLWS_WITHOUT_TEST_CLIENT=ON
-DLWS_WITHOUT_TEST_FRAGGLE=ON

3、选择boringssl的库路径和头文件路径

-DLWS_OPENSSL_INCLUDE_DIRS=$HOME/Desktop/boringssl/include
-DLWS_OPENSSL_LIBRARIES="$HOME/Desktop/boringssl/build_armv7a/ssl/libssl.a;$HOME/Desktop/boringssl/build_armv7a/crypto/libcrypto.a"

4、最后我的编译用的shell脚本

#!/bin/sh
name=android-build.sh
for file in `ls`
do
    if [ $file = $name ]
    then
        continue
    else
        rm -rf $file
    fi
done
ABI="armeabi-v7a"
$ANDROID_SDK/cmake/3.6.3155560/bin/cmake .. \
    -DANDROID_NATIVE_API_LEVEL=16 \
    -DANDROID_ABI=$ABI \
    -DCMAKE_TOOLCHAIN_FILE=$HOME/Desktop/boringssl/third_party/android-cmake/android.toolchain.cmake \
    -DLWS_OPENSSL_INCLUDE_DIRS=$HOME/Desktop/boringssl/include \
    -DLWS_OPENSSL_LIBRARIES="$HOME/Desktop/boringssl/build_armv7a/ssl/libssl.a;$HOME/Desktop/boringssl/build_armv7a/crypto/libcrypto.a" \
    -DLWS_WITHOUT_SERVER=ON \
    -DLWS_WITHOUT_TEST_SERVER=ON \
    -DLWS_WITHOUT_TESTAPPS=ON \
    -DLWS_WITHOUT_SERVER_EXTPOLL=ON \
    -DLWS_WITHOUT_TEST_PING=ON \
    -DLWS_WITHOUT_TEST_ECHO=ON \
    -DLWS_WITHOUT_TEST_CLIENT=ON \
    -DLWS_WITHOUT_TEST_FRAGGLE=ON \
    -DLWS_WITH_LIBUV=ON \
    -DLWS_LIBUV_LIBRARIES="$HOME/Desktop/libs/armeabi-v7a/libuv.a" \
    -DLWS_LIBUV_INCLUDE_DIRS="$HOME/Desktop/libuv-1.12.0/include" 
$ANDROID_SDK/cmake/3.6.3155560/bin/cmake --build .

我这里也顺带着编译了libuv,所以打开了libuv的选项,你也可以不打开,没什么关系,客户端其实可以不使用libuv

你可能感兴趣的:(移植libwebsockets到Android平台)