我想在我的Android应用程序中使用Android NDK嵌入openssl库,但我不知道如何使用该库,因此请任何人告诉我如何使用那请发送源代码,供我参考.......如何在ANDROID应用程序中使用openSSL库
相关:
How to build OpenSSL on Android/Linux ?
我想在我的Android应用程序中使用Android NDK嵌入openssl库,但我不知道如何使用该库,因此请任何人告诉我如何使用那请发送源代码,供我参考.......如何在ANDROID应用程序中使用openSSL库
相关:
How to build OpenSSL on Android/Linux ?
你有没有试过这种,它是随机配备在Android中的OpenSSL一个独立的构建: https://github.com/fries/android-external-openssl/blob/master/README.android
我将介绍几个技巧有关使用OpenSSL与Android:
有必要建立使用NDK工具OpenSSL库,否则他们将与NDK不兼容。 Compiling the latest OpenSSL for Android
CC=~/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc
./Configure android-armv7
export ANDROID_DEV=~/android-ndk-r9//platforms/android-8/arch-arm/usr
make build_libs
假设该命令将在OpenSSL的源目录中执行。
为了使用这些库(ssl和crypto)与ndk自己的库,您需要在jni文件夹中创建额外的* .mk文件。例如:
include $(CLEAR_VARS)
LOCAL_MODULE := ssl-crypto
LOCAL_SRC_FILES := openssl-crypto/libcrypto.so
include $(PREBUILT_SHARED_LIBRARY)
,并将其纳入到主Android.mk:
include $(LOCAL_PATH)/openssl-ssl/Android.mk
而且可能添加
include $(CLEAR_VARS)
后,为避免错误。图书馆将被放入libs/armabi
和.apk
。
如果您遇到错误could not load library ... needed by ...
这可能意味着您的图书馆具有版本号的soname。 AFAIK ndk目前无法与此类图书馆合作。有一种变通方法(Dalvik is looking for .so file with '.0' extension - why?):
rpl -R -e library.so.1.1 "library.so\x00\x00\x00\x00" libs obj
其中rpl
是Linux的字符串替换工具。在构建之后和运行应用程序之前运行此脚本,它将从项目文件中删除版本号。点击链接查看更多信息。
如果您使用C++编译器,您的C函数中可能会出现“未定义引用”错误。使用extern "C" {}
来避免这种情况(有关更多信息,请参阅“C++ name mangling”)。
最后不要忘记包含使用网络进入清单的权限。
我们实际上现在维护我们自己的这个版本:https://github.com/guardianproject/android-ffmpeg – 2013-02-22 19:27:28
我们正在使用的guardianproject提供OpenSSL的构建..我现在想升级由于最近的android playstore安全警报导致的openssl版本。我按照Readme文件中的步骤进行了操作,但卡住了:5)在构建之前进行清理: m -j16 clean-libcrypto clean-libssl clean-openssl clean-ssltest。 据我所知,当你从源代码构建android时,m和mm是可用的,所以我没有找到m:命令,并在下一步中找到mm。任何帮助是极大的赞赏! – Nonos 2016-04-04 16:26:15
@Nonos你有没有得到任何解决方案来更新OpenSSL的版本? 我也陷入了第5步。如果你能帮助我,Herte是我的[问题](http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple)。 – 2016-04-19 06:56:42