2011-12-14 74 views
2

我正在使用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和其他类似的东西。 更具体地说:编译并使用OpenSSL for Android,在windows上使用eclipse

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 

我不知道为什么它没有找到这些文件,我想所有种类的路径添加到LOCAL_C_INCLUDES在所有种类的Android.mk文件,但没有奏效。

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

回答

0

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

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目录在你的Android项目在project/jni目录,然后将这些变量不再指向正确的位置。我解决它的方法是修改这些路径是相对于LOCAL_PATH

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

记住,你必须为每个你想建(cryptossl,或apps目录的做到这一点)。

+0

其实这个工程,我花了很多时间在这个问题上:D – Javier 2013-10-29 20:46:43