我正在使用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。谢谢。
答案 0 :(得分:3)
我知道这已经过时了,但是当我在寻找这个问题时,我一直在遇到这个问题。如果您 构建一个独立的OpenSSL以配合您的项目并且收到此错误,我会根据this thread找到解决方案:
在openssl-android/crypto
,openssl-android/ssl
和openssl-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
请记住,您必须为您尝试构建的每个目录(crypto
,ssl
或apps
)执行此操作。
答案 1 :(得分:0)
我意识到薯条'github只是修补OpenSSL源码的东西,它不是一个独立的OpenSSL for android。 这是必需的,因为它提供了ndk的ndk-build所需的Android.mk文件。您不希望使用标准gcc构建它,因为您想为Android构建它。