1 建議采用boringssl 替代 openssl
目前Android6.0以后已經(jīng)采用boringssl而非openssl,故如果網(wǎng)絡(luò)框架中需要采用ssl加密,建議采用boringssl。而且Android平臺(tái)需要openssl 1.0.1x,采用工具鏈編譯坑也比較多,boringssl有g(shù)oogle官方支持。
2 下載boringssl 編寫(xiě) 配置環(huán)境NDK環(huán)境變量
boringssl 準(zhǔn)備好你的NDK可帽,最好將NDK目錄添加到環(huán)境變量中,比如我的NDK路徑是 $HOME/Android/sdk/ndk-bundle 可以在 shell腳本里寫(xiě)上
export ANDROID_NDK=/Users/fanzhengchen/Android/sdk/ndk-bundle
然后source 命令執(zhí)行下這個(gè)腳本
3 cmake 構(gòu)建
我們可以參考官方的BUILD.md 不過(guò)我們還需要添加一些其他的額外變量 先在boringssl 根目錄下新建一個(gè)build文件夾窗怒,進(jìn)入build文件夾下 編寫(xiě)一個(gè)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 我還添加了一個(gè)CMAKE_BUILD_TYPE 設(shè)置為Release
CMAKE_MAKE_PROGRAM 可以設(shè)置為SDK里自帶的ninja映跟。
執(zhí)行這個(gè)shell腳本,你會(huì)在ssl和crypto下得到兩個(gè)靜態(tài)庫(kù)libssl.a和libcrypto.a扬虚,頭文件就是boringssl根目錄下的include努隙,導(dǎo)入到你的Android工程就不介紹了,文章很多的辜昵。