Использование cURL в Android - PullRequest
       53

Использование cURL в Android

24 голосов
/ 10 февраля 2011

Я хотел бы использовать библиотеку cURL в своем приложении для Android в нативном коде (используя последнюю версию NDK r5b). После исследования в Интернете, кажется, что единственный способ использовать cURL в Android - это построить полное дерево исходников Android с curl, и каким-то образом это генерирует необходимый конфигурационный файл для cURL для работы на Android. У меня нет никакого опыта создания источников Android с нуля, и я задавался вопросом, есть ли способ использовать библиотеку cURL в Android без необходимости перестраивать Android из исходного кода. В идеале было бы идеально использовать cURL в качестве статической или совместно используемой библиотеки. Я попытался выполнить шаги, упомянутые здесь ...

http://curl.haxx.se/mail/lib-2009-12/0071.html

но в итоге получаю ошибки в файле curlrules.h вроде CURL_SIZEOF_LONG definition is missing!

Я предполагаю, что эти ошибки связаны с отсутствием того конфигурационного файла, о котором я упоминал, но шаги в приведенной выше ссылке не упоминали об этом и сообщали об успехе. Есть идеи?

Ответы [ 7 ]

18 голосов
/ 24 февраля 2011

Я в похожем квесте! Сейчас я работаю над приложением, для которого требуется cURL, и только сегодня вечером в своем поиске я наткнулся на ваше сообщение здесь, и я считаю, что ответом будет:

http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html

В отличие от ссылки, на которую вы ссылались, есть несколько последующих комментариев от других людей, которые утверждают, что добились успеха, также следуя инструкциям. Если вам удастся скомпилировать ее до меня, и вы не против отправить мне библиотеку, разместите продолжение здесь! (Я довольно новичок в переполнении стека, поэтому я не знаю, можете ли вы отправлять вечера.) Надеюсь, у нас это получится!

14 голосов
/ 26 июня 2011

Похоже, на github есть проекты, которые автоматизировали openssl и libcurl для сборки NDK:

https://github.com/jahrome/curl-android

https://github.com/guardianproject/openssl-android

Собираюсь использовать их в своем собственном приложении, чтобы у меня была отдельная библиотека для взаимодействия с бэкэндом для iOS и Android ...

13 голосов
/ 17 апреля 2015

После проверки всех возможных постов об этом, я наконец-то получил хорошую компиляцию с использованием машины Linux x64 и Curl версии 7.37.0 по пути $ {android-ndk-r10}.

Может быть, вам помогут следующие шаги:

${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

export CC="${android-ndk-r10}/external/curl/tmp/android-15/bin/arm-linux-androideabi-gcc"

./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

make -j4

make install

Вы получите версию сборки по адресу $ {android-ndk-r10} /external/curl/build/curl-7.37.0.

.

Если вы используете 64-битную машину для компиляции, возможно, 2 определения плохие, и вы получаете эту ошибку:

error: size of array '__curl_rule_01__' is negative

Я решаю переопределить переменные в файле $ {CurlbuildAndroid} /include/curl/curlbuild.h (это опасно, но это работает!):

CURL_SIZEOF_LONG 4
CURL_TYPEOF_CURL_OFF_T 4
2 голосов
/ 05 января 2015

Я перехожу по этой ссылке .И это работает для меня.Мне не нужно было загружать весь репозиторий Android, чтобы скомпилировать libcurl

1 голос
/ 13 апреля 2015

У меня был похожий вопрос, на который не получил ответа, и поэтому он был автоматически удален: (

В любом случае, я успешно использовал curl на Android и загрузил скомпилированную версию, чтобы помочь людям, которые все еще ищут.

Загрузить: libcurl_for_arm

Мне также понадобился файл typecheck-gcc.h, который я тоже исправил и загрузил здесь

Загрузить: typecheck-gcc.h

1 голос
/ 01 февраля 2015

Вы можете загрузить cURL для Android по адресу https://play.google.com/store/apps/details?id=io.github.faywong.curl

1 голос
/ 16 ноября 2011

"Определение CURL_SIZEOF_LONG отсутствует!"

есть способ для этого.

измените curlbuild.h в строке 162, добавьте вот так, если вы используете arm32.

//----------------------------------------------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__
...