【NDK】移植openssl到Android

目录

一、下载&编译静态库

1.下载源码和脚本

2.修改脚本配置

3.修改环境变量

4.编译输出

5.结果:

二、JNI调用



在移植gsoap库到android时有用到openssl的库,因此写了篇记录,openssl移植的案例网上数不胜数,非常成熟,因此也没碰到声明问题

一、下载&编译静态库

1.下载源码和脚本

下载解压,修改脚本名称为小写

mkdir openssl
cd openssl/
wget https://www.openssl.org/source/openssl-1.1.1f.tar.gz
tar -zxvf openssl-1.1.0f.tar.gz
cd openssl-1.1.1f/
wget https://wiki.openssl.org/images/7/70/Setenv-android.sh
mv Setenv-android.sh setenv-android.sh

2.修改脚本配置

setenv-android.sh:修改为自己的环境配置

  • _ANDROID_NDK="android-ndk-r11c" 
  • _ANDROID_EABI="arm-linux-androideabi-4.9"
  • _ANDROID_API="android-18"

3.修改环境变量

配置NDK编译目录ANDROID_NDK_ROOT

export ANDROID_NDK_ROOT=/home/felix/wd500g/android-sdk/android-ndk-r11c
source ./setenv-android.sh

4.编译输出

配置输出目录

脚本含义:

  • no-shared:不编译动态库(.so), 我用的.a静态库
./config no-shared no-ssl2 no-ssl3 no-comp no-hw no-engine \ --openssldir=/home/felix/wd500g/openssl/out/$ANDROID_API --prefix=/home/felix/wd500g/openssl/out/$ANDROID_API
make depend
make all -8

5.结果:

  • include包含我们需要的头文件
  • lib包含编译出来的.a静态库:libcrypto.a  libssl.a
drwxrwxr-x 2 felix felix    4096 11月 19 15:22 bin
drwxrwxr-x 2 felix felix    4096 11月 19 15:22 certs
drwxrwxr-x 3 felix felix    4096 11月 19 15:22 include//头文件
drwxrwxr-x 4 felix felix    4096 11月 19 15:22 lib //生成我们需要的库
drwxrwxr-x 2 felix felix    4096 11月 19 15:22 misc
-rw-r--r-- 1 felix felix   10771 11月 19 15:22 openssl.cnf
-rw-r--r-- 1 felix felix   10771 11月 19 15:22 openssl.cnf.dist
drwxrwxr-x 2 felix felix    4096 11月 19 15:22 private
drwxrwxr-x 4 felix felix    4096 11月 19 15:22 share

二、JNI调用

  • 在项目中导入include文件,并再Android.mk中声明
LOCAL_C_INCLUDES := \
	$(LOCAL_PATH) \
	$(LOCAL_PATH)/openssl/include \
  • Android.mk
# libssl library
include $(CLEAR_VARS)
LOCAL_MODULE := libssl
LOCAL_SRC_FILES := plugin/openssl/libssl.a
include $(PREBUILT_STATIC_LIBRARY)

# libssl library
include $(CLEAR_VARS)
LOCAL_MODULE := libcrypto
LOCAL_SRC_FILES := plugin/openssl/libcrypto.a
include $(PREBUILT_STATIC_LIBRARY)

LOCAL_STATIC_LIBRARIES :=libssl libcrypto# libcutils  libc libstdc++

参考:https://www.jianshu.com/p/b790c548e787

猜你喜欢

转载自blog.csdn.net/sslinp/article/details/84306781