我正在 Windows 上使用 Eclipse 开发 Android 应用程序。 我想在我的 Android 应用程序中使用 OpenSSL。它需要通过 NDK 与 C++ 一起使用。 我尝试从https://github.com/fries/android-external-openssl下载fries的OpenSSL源代码并构建它。 我阅读了 README.android 文件,但我不明白这些说明的用途。 除了 fries 源代码之外,我还需要下载 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。谢谢。
最佳答案
我知道这已经很旧了,但是当我搜索这个问题时,我一直遇到这个问题。如果您正在构建一个独立的 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
目录放置在 Android 项目的 project/jni
目录中,则这些变量将不再指向正确的位置。我解决这个问题的方法是将这些路径修改为相对于 LOCAL_PATH
:
local_c_includes := \
$(LOCAL_PATH)/.. \
$(LOCAL_PATH)/asn1 \
$(LOCAL_PATH)/evp \
$(LOCAL_PATH)/../include \
$(LOCAL_PATH)/../include/openssl
请记住,您必须对尝试构建的每个目录(crypto
、ssl
或 apps
执行此操作>)。
关于android - 在 Android 上编译并使用 OpenSSL,在 Windows 上使用 eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500246/