以下载链接https://www.openssl.org/source/openssl-1.1.1o.tar.gz为例
下载解压之后,查看根目录的 NOTES.ANDROID,其中有
1 |
|
这里就是最直接的编译方式了。但是这样编译之后,会有一个坑
1 |
|
编译时尝试链接 libssl.so ,实际上会链接到 libssl.so.1.1 ,但是当你尝试将 libssl.so.1.1 集成到 Android studio 工程内时,会发现 libssl.so.1.1 这种命名格式so,Android studio 是不会自动将其打包到 apk 内的,即使将 libssl.so.1.1 改名为 libssl.so 可以集成到 apk ,app运行时仍然会去找 libssl.so.1.1。因为 so 内部有其文件名信息
1 |
|
对于Android来说,我们更希望,编译之后,so 本身名字就叫 libssl.so。
具体做法是解压 openssl-1.1.1o.tar.gz 之后,修改 15-android.conf
大概 193 行
1 |
|
这样可以编译出来不带版本后缀的 libssl.so 和 libcrypto.so
可以参考下边的懒人脚本来自行编译
1 |
|
使用时,将 NDK_HOME传入,例如,脚本保存为 build.sh,则执行命令
1 | ANDROID_NDK_HOME=/home/whoever/android-ndk-r21e ./build_android_openssl.sh |
想为 Android (arm/x86/x86_64)编译时,修改脚本末尾的 buildopenssl 注释