2010-06-15 89 views

回答

3

你有没有试过这种,它是随机配备在Android中的OpenSSL一个独立的构建: https://github.com/fries/android-external-openssl/blob/master/README.android

+0

我们实际上现在维护我们自己的这个版本:https://github.com/guardianproject/android-ffmpeg – 2013-02-22 19:27:28

+0

我们正在使用的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

+0

@Nonos你有没有得到任何解决方案来更新OpenSSL的版本? 我也陷入了第5步。如果你能帮助我,Herte是我的[问题](http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple)。 – 2016-04-19 06:56:42

2

我将介绍几个技巧有关使用OpenSSL与Android:

  1. 有必要建立使用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的源目录中执行。

  2. 为了使用这些库(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

  3. 如果您遇到错误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”)。

  4. 最后不要忘记包含使用网络进入清单的权限。

相关问题