web-dev-qa-db-fra.com

Utilisation de cURL dans Android

Je voudrais utiliser la bibliothèque cURL dans mon Android en code natif (en utilisant NDK r5b, la dernière). Après des recherches en ligne, il semble que la seule façon d'utiliser cURL dans Android consiste à construire l'intégralité de Android arborescence source avec curl, et cela génère en quelque sorte un fichier de configuration nécessaire pour que cURL fonctionne sur Android. Je n'ai aucune expérience de la construction les sources Android à partir de zéro et se demandait s'il y avait un moyen d'utiliser la bibliothèque cURL dans Android sans avoir à reconstruire Android = à partir de la source. Idéalement, pouvoir utiliser simplement cURL comme bibliothèque statique ou partagée serait parfait. J'ai essayé de suivre les étapes mentionnées ici ...

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

mais finissent par obtenir des erreurs dans le fichier curlrules.h comme CURL_SIZEOF_LONG definition is missing!

Je suppose que ces erreurs sont dues au fait de ne pas avoir ce fichier de configuration que j'ai mentionné, mais les étapes du lien ci-dessus ne mentionnent rien de tout cela et signalent un succès. Des idées?

24
Nitrex88

Je suis dans une quête similaire! Je travaille actuellement sur une application qui nécessite cURL et juste ce soir dans ma recherche, je suis tombé sur votre message ici, et ce que je pense être la réponse:

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

Contrairement au lien que vous avez référencé, il y a plusieurs commentaires de suivi d'autres personnes qui prétendent avoir réussi également en suivant les instructions. Si vous parvenez à le faire compiler avant moi et que cela ne me dérangerait pas de m'envoyer la bibliothèque, postez un suivi ici! (Je suis assez nouveau pour empiler le débordement, donc je ne sais pas si vous pouvez pm.) J'espère que cela fonctionnera pour nous deux!

18
user562566

Il semble qu'il existe des projets sur github qui automatisent à la fois openssl et libcurl pour la construction NDK:

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

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

Je vais les utiliser dans ma propre application, donc je peux avoir une bibliothèque unique pour gérer la communication backend pour iOS et Android ...

14
p_l

Après avoir vérifié tous les articles possibles à ce sujet, j'ai finalement obtenu une bonne compilation en utilisant une machine Linux x64 et Curl version 7.37.0 sur le chemin $ {Android-ndk-r10}.

Peut-être que ces étapes peuvent vous aider:

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

Vous obtiendrez une version de build à $ {Android-ndk-r10} /external/curl/build/curl-7.37.0.

Si vous utilisez une machine 64 bits pour compiler, 2 définitions sont peut-être mauvaises et vous obtenez cette erreur:

error: size of array '__curl_rule_01__' is negative

Je résous la redéfinition des variables dans le fichier $ {CurlbuildAndroid} /include/curl/curlbuild.h (C'est dangereux de faire ça, mais ça a marché!):

CURL_SIZEOF_LONG 4
CURL_TYPEOF_CURL_OFF_T 4
13
vgonisanz

Je le suis lien . Et ça fonctionne pour moi. Je n'ai pas eu à télécharger l'intégralité du dépôt Android afin de compiler la libcurl

2
MOHAMED

Vous pouvez choisir de télécharger cURL pour Android sur https://play.google.com/store/apps/details?id=io.github.faywong.curl

1
faywong

J'ai eu une question similaire qui n'a pas reçu de réponse et a donc été automatiquement supprimée :(

Quoi qu'il en soit, j'ai utilisé avec succès curl sur Android et j'ai téléchargé une version compilée pour aider les gens qui recherchent toujours.

Télécharger: libcurl_for_arm

J'ai également eu besoin d'un fichier typecheck-gcc.h que j'ai modifié et téléchargé ici aussi

Télécharger: typecheck-gcc.h

1
RJButler

"La définition CURL_SIZEOF_LONG est manquante!"

il y a un moyen pour cela.

changer le curlbuild.h à la ligne numéro 162 ajouter comme ceci, si vous êtes la plate-forme 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__
1
ZhangXuelian