在Android中使用cURL
我想在本地代码中使用我的android应用程序中的cURL库(使用NDK r5b,最新)。 在线研究之后,似乎在android中使用cURL的唯一方法是用curl来构build整个android源代码树,并在某种程度上为cURL生成一个必要的configuration文件以在Android上运行。 我没有从头开始构buildandroid源码的经验,并想知道是否有一种方法可以在Android中使用cURL库,而无需从源码重buildandroid。 理想情况下,能够将cURL用作静态或共享库是完美的。 我试着按照这里提到的步骤…
http://curl.haxx.se/mail/lib-2009-12/0071.html
但最终得到错误的文件curlrules.h像CURL_SIZEOF_LONG definition is missing!
我认为这些错误是由于没有我提到的configuration文件,但上述链接中的步骤没有提到任何的和报告的成功。 有任何想法吗?
我在类似的任务! 我现在正在开发一个应用程序,它需要cURL,而且在今天晚上我的search中,我在这里遇到了你的post,我相信这是一个答案:
http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html
与您引用的链接不同的是,其他人也会根据说明提出几个后续评论。 如果你能在我之前把它编译出来,而且不介意把图书馆寄给我,那就在这里发表一个跟进意见! (我很新的堆栈溢出,所以我不知道你是否可以下午。)希望这对我们俩都有效!
看起来github上的项目为NDK构build自动化了openssl和libcurl:
https://github.com/jahrome/curl-android
https://github.com/guardianproject/openssl-android
要在我自己的应用程序中使用这些,所以我可以让单个库处理iOS和Android的后端通信。
在检查了所有可能的后,我终于得到了一个很好的编译使用Linux x64机器和Curl版本7.37.0path$ {android-ndk-r10}。
也许这个步骤可以帮助你:
1º
${android-ndk-r10}/build/tools/make-standalone-toolchain.sh --platform=android-15 --arch=armv7-a --toolchain=arm-linux-androideabi-4.8 --install-dir=./tmp/android-15
2º
export CC="${android-ndk-r10}/external/curl/tmp/android-15/bin/arm-linux-androideabi-gcc"
3º
./configure --host=arm-linux --enable-cross-compile --enable-threaded-resolver --disable-shared --disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smtp --disable-gopher --disable-manual --enable-proxy --enable-ipv6 --enable-cookies --enable-symbol-hiding --disable-versioned-symbols --disable-soname-bump --disable-sspi --disable-ntlm-wb --prefix=${android-ndk-r10}/external/curl/build/curl-7.37.0
4º
make -j4
5?
make install
您将在$ {android-ndk-r10} /external/curl/build/curl-7.37.0上获得构build版本。
如果你正在使用一个64位的机器来编译,也许2个定义是不好的,你会得到这个错误:
error: size of array '__curl_rule_01__' is negative
我解决了重新定义文件$ {CurlbuildAndroid} /include/curl/curlbuild.h中的variables(它危险的做到这一点,但它的工作!):
CURL_SIZEOF_LONG 4 CURL_TYPEOF_CURL_OFF_T 4
我跟随这个链接 。 它适用于我。 我不必下载整个Android库来编译libcurl
“CURL_SIZEOF_LONG定义丢失!”
有一个办法。
如果你是arm32平台,改行号162的curlbuild.h就这样加上。
//----------------------------------------------add # define CURL_SIZEOF_LONG 4 # define CURL_TYPEOF_CURL_OFF_T long long # define CURL_FORMAT_CURL_OFF_T "lld" # define CURL_FORMAT_CURL_OFF_TU "llu" # define CURL_FORMAT_OFF_T "%lld" # define CURL_SIZEOF_CURL_OFF_T 8 # define CURL_SUFFIX_CURL_OFF_T LL # define CURL_SUFFIX_CURL_OFF_TU ULL # define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int # define CURL_SIZEOF_CURL_SOCKLEN_T 4 //#define __SYMBIAN32__
我有一个类似的问题没有得到答案,因此被自动删除:(
无论如何,我已经成功地在Android上使用curl,并上传了编译版本,以帮助仍在search的人。
下载:libcurl_for_arm
我也需要一个typecheck-gcc.h文件,我已经修改并上传了
下载:typecheck-gcc.h