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