创建android中使用的openssl静态库
来源:互联网 发布:美林数据java开发岗 编辑:程序博客网 时间:2024/06/05 15:07
我的环境:ubuntu12.04, ndkr8
和
guardianproject-openssl-android-1a3c579
最近需要将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 所以里面添加10default.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
- 创建android中使用的openssl静态库
- iOS中,导入openssl静态库配置路径,自己创建.pch文件、解决openssl/rsa.h
- Openssl 库的静态链接
- iphone中使用Xcode创建自己的静态链接库
- openssl库中MD算法的使用
- openssl库中BIGNUM的使用
- Android下编译OpenSSL静态库
- Android下编译OpenSSL静态库
- Android下编译OpenSSL静态库
- Android下编译OpenSSL静态库
- android编译openssl静态库.a
- VS中创建静态库&C/C++静态库的使用
- iOS中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)
- 使用OPENSSL创建证书
- iOS中创建自己的静态库
- 静态库的创建及使用
- iOS 创建使用静态库的方法
- Linux 静态库的创建和使用
- C Looooops&&http://poj.org/problem?id=2115
- xcode 4 适配 iphone 3
- Oracle查询优化
- Apache错误:LoadModule takes two arguments, a module name and the name of a shared object
- 用cookie实现localstorage功能
- 创建android中使用的openssl静态库
- 在windows下运行Felzenszwalb的Discriminatively Trained Deformable Part Models matlab代码
- 感悟自然-人生
- 《代码大全》读后感2
- 几个简单的步骤大幅提高Oracle性能
- Oracle的like和substr对于索引的操作
- Linux下的TCP/IP socket 文件传输
- How to run 32 bit .NET Windows apps on 64 bit Windows (including with IEExec)
- win7 操作注册表