创建android中使用的openssl静态库

本文介绍了如何在Ubuntu 12.04和NDK r8环境下,将guardianproject-openssl-android-1a3c579编译为适用于Android的静态库。主要步骤包括修改AndroidManifest.xml、default.properties、Application.mk和Android.mk文件,以适应静态库的编译,并通过ndk-build命令生成静态库。同时提到,若需要动态库,直接编译即可,但不支持engine机制,可能需要使用不同版本的OpenSSL进行替换。

我的环境:ubuntu12.04, ndkr8 

guardianproject-openssl-android-1a3c579 

经过老外修改后的下载下来再经过自己修改为供NDK编译的openssl源码,自己的JNI程序放在myApp文件夹即可编译为动态库给java调用,当然可以根据自己的需求修改

最近需要将openssl库编译成静态库给android使用,由于android自带的openssl静态库不支持engine机制,所以只好自己找方法来编译了。

编译首先需要安装ndk,这个不多说了

安装好ndk后

开始解压guardianproject-openssl-android,(你可以给这个文件夹改个名字),我把名字换成了android-openssl

cd android-openssl

这里需要修改几处代码:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="org.openssl.android"

      android:versionCode="1"

      android:versionName="1.0">

    <uses-sdk android:minSdkVersion="10" />  

</manifest>

这里我用的android版本是10  所以里面添加10

default.properties

target=android-10

然后进入jni文件夹

修改里面的

Application.mk

APP_PROJECT_PATH := $(shell pwd)

APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk

APP_ABI  := armeabi armeabi-v7a

APP_PLATFORM  := android-10


这里面的ABI可有可无,随自己的心情


接下来就需要修改几个重要的make文件

首先修改android-openssl/crypto/Android.mk:

要编译静态库,所以把include $(BUILD_SHARED_LIBRARY) 修改为 include $(BUILD_STATIC_LIBRARY)。

 

我们不需要编译Host库,所以可以把include $(BUILD_HOST_SHARED_LIBRARY)之类的都注释掉。

注意这里文件里面有3个include哦   看见有host注释的就不需要管了,只要修改第一个就行

同样的我们还需要修改ssl/Android.mk:

要编译静态库,所以把include $(BUILD_SHARED_LIBRARY) 修改为 include $(BUILD_STATIC_LIBRARY)

host的不需要修改


最后保存文件  

回到android-openssl目录  ndk-build,最后可以在obj文件夹下面看到了这两个静态库文件了  


补充,如果需要动态库 的话 直接编译就可以 不需要多余的修改

但是这个不支持engine(我目前没有试过还不知道,等我测试过了我再修改)所以通常我们需要下载1.0.0的其他版本,将ssl和crypto 和include3个文件夹复制到这个项目的目录下面替换,然后编译,这样可能就可以解决这个问题,下面贴上另一篇文章,里面信息很多,希望能帮到大家

http://blog.youkuaiyun.com/someonea/article/details/6312213




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值