GMSSL 编译 Android端

文章目录

环境

  • Android SDK/NDK
  • shell
  • Mac OX 操作系统

编译so库

针对Android/ARM目标平台,需要先安装Android SDK/NDK。设置交叉编译环境后,可以直接用GmSSL内置的编译系统进行编译。下面的脚本给出了交叉编译的示例,需要根据安装的SDK位置及预计的平台编号修改ANDROID_PATH和PLATFORM_VERSION的值。

创建脚本

#!/bin/bash

# SDK路径 自行修改 例如 /Users/zxs.zl/Library/Android/
ANDROID_PATH=/Users/zxs.zl/Library/Android/

# 平台 自行修改
PLATFORM_VERSION=22 

MAKE_TOOLCHAIN=$ANDROID_PATH/sdk/ndk-bundle/build/tools/make-standalone-toolchain.sh
export TOOLCHAIN_PATH=$ANDROID_PATH/android-toolchain-arm
$MAKE_TOOLCHAIN --arch=arm --platform=android-$PLATFORM_VERSION --install-dir=$TOOLCHAIN_PATH

export MACHINE=armv7
export SYSTEM=android
export ARCH=arm
export CROSS_SYSROOT=$TOOLCHAIN_PATH/sysroot
export TOOL_BASENAME=$TOOLCHAIN_PATH/bin/arm-linux-androideabi
export CC=$TOOL_BASENAME-gcc
export CXX=$TOOL_BASENAME-g++
export LD=$TOOL_BASENAME-ld
export LINK=$CXX
export AR=$TOOL_BASENAME-ar
export RANLIB=$TOOL_BASENAME-ranlib
export STRIP=$TOOL_BASENAME-strip

./config
make

保存到GmSSL源码目录,并执行

$ sh 创建的脚本.sh

JNI

Mac OX 下可以测试通过

在源代码根目录下找到java文件夹,进入,然后创建Android.mkApplication.mk 内容如下(根据 Android平台、API level、CPU架构 自行修改)

Android.mk

# Android.mk

#宏函数 my-dir 将返回当前目录(Android.mk 文件本身所在的目录)的路径。
LOCAL_PATH := $(call my-dir)

# libcrypto
include $(CLEAR_VARS)
LOCAL_MODULE := crypto
LOCAL_SRC_FILES := ../libcrypto.so
include $(PREBUILT_SHARED_LIBRARY)

#libssl
include $(CLEAR_VARS)
LOCAL_MODULE := ssl
LOCAL_SRC_FILES := ../libssl.so
include $(PREBUILT_SHARED_LIBRARY)

#libgmssljni
include $(CLEAR_VARS)

# CPU 系列 arm arm64 x86 x86_64
TARGET_ARCH := arm

#  Android API 级别号
TARGET_PLATFORM := android-22

#模块的名称 生成最终共享库文件名为 lib模块名字.so
LOCAL_MODULE := gmssljni

#头文件搜索路径
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include 

#源文件 (以空格分隔多个文件)
LOCAL_SRC_FILES := gmssl_err.c GmSSL.c

#需要连接的动态库
LOCAL_SHARED_LIBRARIES := crypto ssl

#帮助系统将所有内容连接到一起  静态库请使用 BUILD_STATIC_LIBRARY
include $(BUILD_SHARED_LIBRARY)

Application.mk

#Application.mk

#Android 版本 最小支持为android-16
APP_PLATFORM := android-16

#指令集
APP_ABI := armeabi-v7a

执行命令

$ /Users/xxx/Library/Android/sdk/ndk-bundle/ndk-build  NDK_PROJECT_PATH=GmSSL源码目录/java  APP_BUILD_SCRIPT=Android.mk路径   NDK_APPLICATION_MK=Application.mk路径

猜你喜欢

转载自blog.csdn.net/holdsky/article/details/89213537
今日推荐