Использование 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!
Я предполагаю, что эти ошибки связаны с тем, что у меня нет файла конфигурации, о котором я упоминал, но шаги в приведенной выше ссылке не упоминали об этом и не сообщали об успехе. Любые идеи?
Ответы
Ответ 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}.
Возможно, эти шаги помогут вам:
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.
Если вы используете 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__
Ответ 6
Вы можете загрузить cURL для Android в https://play.google.com/store/apps/details?id=io.github.faywong.curl
Ответ 7
У меня был аналогичный вопрос, на который не ответили, и поэтому он автоматически удаляется: (
В любом случае я успешно использовал curl на android и загрузил скомпилированную версию, чтобы помочь людям по-прежнему искать.
Загрузить: libcurl_for_arm
Мне также потребовался файл typecheck-gcc.h, который был изменен и загружен здесь.
Загрузить: typecheck-gcc.h