创建android中使用的openssl静态库

来源:互联网 发布:美林数据java开发岗 编辑:程序博客网 时间:2024/06/05 15:07

我的环境:ubuntu12.04, ndkr8 

guardianproject-openssl-android-1a3c579 

这个项目可以在网上找到http://download.csdn.net/detail/zhouyuqwert/3408214
经过老外修改后的下载下来再经过自己修改为供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.csdn.net/someonea/article/details/6312213




原创粉丝点击