Android下openssl编译和使用(一)

2019-08-30 21:57:40

参考链接 Android下openssl编译和使用(一)

项目中需要用到openssl库的AES加密,写下来方便以后查阅。


编译

1、安装Linux版本的NDK


编译openssl需要使用NDK,先下载NDK:


# 在home目录下建立ndk目录

$ mkdir android

$ cd android

$ wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip

$ unzip android-ndk-r14b-linux-x86_64.zip

最后NDK被解压在:/home/zoujin6649/android/android-ndk-r14b


2、下载openssl源码


# 下载openssl源码

$ cd android

$ wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1a.tar.gz

$ tar -zxvf openssl-1.1.1a.tar.gz

3、开始编译


根据NOTES.ANDROID文件提示的执行以下命令设置环境变量并安装


$ cd /home/zoujin6649/android/openssl-1.1.1b

$ rm -rf ./output

$ mkdir ./output

 

$ export ANDROID_NDK=/home/zoujin6649/android/android-ndk-r14b

$ export PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH

$ ./Configure android-arm -D__ANDROID_API__=23 --prefix=/home/zoujin6649/android/openssl-1.1.1b/output

 

$ make && make install





4、编译其他cpu架构的库


# armeabi armeabi-v7a armeabi-v7a-hard arm64-v8a mips mips64 x86 x86_64

$ export ARCH=armeabi

 

$ cd /home/zoujin6649/android/openssl-1.1.1b

$ rm -rf ./output-$ARCH

$ mkdir ./output-$ARCH

 

$ export ANDROID_NDK=/home/zoujin6649/android/android-ndk-r14b

$ export PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH

$ ./Configure android-arm -D__ANDROID_API__=23 --prefix=/home/zoujin6649/android/openssl-1.1.1b/output-$ARCH

 

$ make && make install

5、编译脚本编译各cpu架构的库


编写脚本build-android.sh如下:


func_cmp(){

cd /home/zoujin6649/android/openssl-1.1.1b

make clean

rm -rf ./output-$ARCH

mkdir ./output-$ARCH

export ANDROID_NDK=/home/zoujin6649/android/android-ndk-r14b

export PATH=$ANDROID_NDK/toolchains/$TOOL_CHAIN/prebuilt/linux-x86_64/bin:$PATH

./Configure android-$ARCH_NAME -D__ANDROID_API__=23 --prefix=/home/zoujin6649/android/openssl-1.1.1b/output-$ARCH

make && make install

}

 

for ARCH in armeabi-v7a armeabi arm64-v8a x86 x86_64 mips mips64

do

echo $ARCH

if [ "$ARCH" = "armeabi-v7a" ]; then

ARCH_NAME=android-arm

TOOL_CHAIN=arm-linux-androideabi-4.9

fi

if [ "$ARCH" = "armeabi" ]; then

ARCH_NAME=android-arm

TOOL_CHAIN=arm-linux-androideabi-4.9

fi

if [ "$ARCH" = "arm64-v8a" ]; then

ARCH_NAME=android-arm64

TOOL_CHAIN=aarch64-linux-android-4.9

fi

if [ "$ARCH" = "mips" ]; then

ARCH_NAME=android-mips

TOOL_CHAIN=mipsel-linux-android-4.9

fi

if [ "$ARCH" = "mips64" ]; then

ARCH_NAME=android-mips64

TOOL_CHAIN=mips64el-linux-android-4.9

fi

if [ "$ARCH" = "x86" ]; then

ARCH_NAME=android-x86

TOOL_CHAIN=x86-4.9

fi

if [ "$ARCH" = "x86_64" ]; then

ARCH_NAME=android-x86_64

TOOL_CHAIN=x86_64-4.9

fi

echo $TOOL_CHAIN

func_cmp

done

执行编译


$ cd /home/zoujin6649/android/openssl-1.1.1b

$ sh build-android.sh



  • 2019-06-13 11:31:32

    Android Studio接入ARouter以及简单使用

    你可能会说如果我的A module依赖了 B module,那么只要在B里面配置是不是就可以了?绝对不行!无论module之间关系如何,必须要同样配置!包括主项目和library项目!

  • 2019-06-13 11:34:24

    Android组件化方案

    1为什么要项目组件化 2如何组件化 3组件化实施流程

  • 2019-06-23 09:22:33

    Android 拍摄(横\竖屏)视频的懒人之路

    一般用在多媒体录制上面,当然如果你只是简单的想录制音频,用它最合适不过,不过如果你想更多样化的录制这里推荐《Android MP3录制,波形显示,音频权限兼容与播放》。今天的主题是录制视频,用的还是老式通用的Camera,不是新的camera2(这就尴尬了.....((/- -)/),反正个人秉承能用是王道的做法(懒)。之前也尝试过FFMPEG的录制合成音频,大小和效果也不错,只是有时候的兼容性确实有些问题,最主要还是资料不多,不好改啊 ̄へ ̄(懒)。

  • 2019-06-23 09:24:59

    仿抖音系列

    最近公司在做个短视频的项目,其中借鉴了很多抖音的设计,其中就有抖音的上下滑切换视频。