Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Кажется, что есть проекты в github, которые автоматизируют как openssl, так и libcurl для сборки NDK:

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

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

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

Ответ 3

После проверки всех возможных сообщений об этом я, наконец, получил хорошую компиляцию с использованием 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

Ответ 4

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

Ответ 5

"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__

Ответ 7

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

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

Загрузить: libcurl_for_arm

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

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