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-02-12 16:36:23

    图片工具GraphicsMagick的安装配置与基本使用

    GraphicsMagick是一个短小精悍的的图片处理工具和库集合。对于Java开发者来说,常用的图片处理工具有3个,JDK自带的图片处理库,ImageMagick,GraphicsMagick。JDK自带的图片处理库,虽稳定简单,性能却比较差;ImageMagick是目前最流行的图片处理工具,它的功能非常丰富;GraphicsMagick的功能略逊于ImageMagick,但是它的效率更强悍,但大多数情况下,GM的功能已经足够使用了。

  • 2019-02-15 10:35:31

    使用ffmpeg转码m3u8并播放

    m3u8是苹果公司开发的一项新型播放格式,这种播放格式支持目前市面的windows、androis、ios设备主流的浏览器,同样的视频文件既可以在flash环境播放,又能在无flash的html5环境播放,它的优势还不止于此,它可以实现多种码率在不同网速下的自动切换,网速好自动切换高清晰度视频,网速慢自动播放低清晰度文件,还可以实现流加密(视频文件本身加密)、分段下载播放、任意时间点拖拽播放、随机视频文件广告插入等等优势,所以公司打算是用m3u8格式作为视频格式。 --------------------- 作者:悠闲咖啡007 来源:CSDN 原文:https://blog.csdn.net/psh18513234633/article/details/79312607 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 2019-02-15 10:36:45

    将MP4转成m3u8

    网上很多垃圾文章推荐segmenter工具,但用的时候,3.5G的ts文件丢了一半的数据,于是想到了ffmpeg转。