NDK 编译 Boringssl

1 建议采用boringssl 替代 openssl

目前Android6.0以后已经采用boringssl而非openssl,故如果网络框架中需要采用ssl加密,建议采用boringssl。而且Android平台需要openssl 1.0.1x,采用工具链编译坑也比较多,boringssl有google官方支持。

2 下载boringssl 编写 配置环境NDK环境变量

boringssl 准备好你的NDK,最好将NDK目录添加到环境变量中,比如我的NDK路径是 $HOME/Android/sdk/ndk-bundle 可以在 shell脚本里写上

 export ANDROID_NDK=/Users/fanzhengchen/Android/sdk/ndk-bundle

然后source 命令执行下这个脚本

3 cmake 构建

我们可以参考官方的BUILD.md 不过我们还需要添加一些其他的额外变量 先在boringssl 根目录下新建一个build文件夹,进入build文件夹下 编写一个shell脚本

#!/bin/sh
$ANDROID_SDK/cmake/3.6.3155560/bin/cmake \
    -DANDROID_ABI=armeabi-v7a \
    -DCMAKE_MAKE_PROGRAM=$ANDROID_SDK/cmake/3.6.3155560/bin/ninja \
    -DANDROID_NATIVE_API_LEVEL=16 \
    -DANDROID_NDK=$ANDROID_NDK \
    -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -GNinja \
    ..
cmake --build .

其中CMAKE_TOOLCHAIN_FILE完全换成boringssl自带的android.toolchain.cmake 我还添加了一个CMAKE_BUILD_TYPE 设置为Release
CMAKE_MAKE_PROGRAM 可以设置为SDK里自带的ninja。
执行这个shell脚本,你会在ssl和crypto下得到两个静态库libssl.a和libcrypto.a,头文件就是boringssl根目录下的include,导入到你的Android工程就不介绍了,文章很多的。

你可能感兴趣的:(NDK 编译 Boringssl)