在Windows上使用eclipse编译和使用OpenSSL for Android

时间:2011-12-14 06:19:38

标签: android windows eclipse openssl

我正在使用eclipse在Windows上开发Android应用程序。 我想在我的Android应用程序中使用OpenSSL。它需要通过NDK与C ++一起使用。 我试图从https://github.com/fries/android-external-openssl下载薯条的OpenSSL源代码并构建它。 我阅读了README.android文件,但我不明白这些说明的用途。 除了薯条源代码之外,我还需要下载OpenSSL源代码吗? 我已经尝试将Fries的所有文件放入Android项目的jni文件夹中。它抱怨没有找到e_os.h和openssl / crypto.h以及其他类似的东西。 更具体地说:

In file included from D:/Projects/Fatal/Android/OpenSSL/jni/ssl/s2_meth.c:59:
D:/Projects/Fatal/Android/OpenSSL/jni/ssl/ssl_locl.h:124:18: error: e_os.h: No such file or directory
D:/Projects/Fatal/Android/OpenSSL/jni/ssl/ssl_locl.h:126:28: error: openssl/buffer.h: No such file or directory
D:/Projects/Fatal/Android/OpenSSL/jni/ssl/ssl_locl.h:127:26: error: openssl/comp.h: No such file or directory

我不确定为什么它找不到这些文件,我试图在所有类型的Android.mk文件中将所有类型的路径添加到LOCAL_C_INCLUDES中,但没有任何效果。

我想知道如何为Android构建OpenSSL。谢谢。

2 个答案:

答案 0 :(得分:3)

我知道这已经过时了,但是当我在寻找这个问题时,我一直在遇到这个问题。如果您 构建一个独立的OpenSSL以配合您的项目并且收到此错误,我会根据this thread找到解决方案:

openssl-android/cryptoopenssl-android/sslopenssl-android/apps中,您会找到local_c_includes的变量声明,如下所示:

local_c_includes := \
    $(NDK_PROJECT_PATH) \
    $(NDK_PROJECT_PATH)/crypto/asn1 \
    $(NDK_PROJECT_PATH)/crypto/evp \
    $(NDK_PROJECT_PATH)/include \
    $(NDK_PROJECT_PATH)/include/openssl

如果您已将openssl-android目录放在project/jni目录中的Android项目中,则这些变量不再指向正确的位置。我解决它的方法是将这些路径修改为相对于LOCAL_PATH

local_c_includes := \
    $(LOCAL_PATH)/.. \
    $(LOCAL_PATH)/asn1 \
    $(LOCAL_PATH)/evp \
    $(LOCAL_PATH)/../include \
    $(LOCAL_PATH)/../include/openssl

请记住,您必须为您尝试构建的每个目录(cryptosslapps)执行此操作。

答案 1 :(得分:0)

我意识到薯条'github只是修补OpenSSL源码的东西,它不是一个独立的OpenSSL for android。 这是必需的,因为它提供了ndk的ndk-build所需的Android.mk文件。您不希望使用标准gcc构建它,因为您想为Android构建它。