Utilisation de cURL dans Android
je voudrais utiliser bibliothèque cURL dans mon application android en code natif (en utilisant NDK r5b, le dernier). Après des recherches en ligne, il semble que la seule façon d'utiliser cURL dans android est de construire l'arbre des sources android entier avec curl en elle, et d'une certaine façon, cela génère un fichier de configuration nécessaire pour cURL de travailler sur Android. Je n'ai aucune expérience de la construction des sources android à partir de zéro et je me demandais s'il y a un moyen d'utiliser la bibliothèque cURL dans Android sans avoir à reconstruire android à partir de la source. Idéalement, être capable d'utiliser simplement cURL comme une bibliothèque statique ou partagée serait parfait. J'ai essayé de suivre les étapes indiquées ici...
http://curl.haxx.se/mail/lib-2009-12/0071.html
mais finissent par avoir des erreurs dans les curlrules des fichiers.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 dans le lien ci-dessus ne mentionnaient rien de tout cela et ont rapporté le succès. Des idées?
7 réponses
je suis sur une quête similaire! Je travaille sur une application en ce moment qui nécessite cURL et juste ce soir dans ma recherche je suis tombé sur votre poste ici, et ce que je crois être la réponse:
http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html
Contrairement au lien que vous l'avez mentionné, il y a plusieurs commentaires d'autres personnes qui prétendent avoir du succès aussi en suivant les instructions. Si vous parvenez à le compiler avant moi, et ça ne me dérangerait pas de m'envoyer la bibliothèque, postez un suivi ici! (Je suis assez nouveau pour empiler débordement donc je ne sais pas si vous pouvez pm. Espérons que ça marche pour nous deux!
Il semble qu'il y a des projets sur github qui automatisé tant d'openssl et de libcurl pour NDK construire:
https://github.com/jahrome/curl-android
https://github.com/guardianproject/openssl-android
je vais utiliser ceux de ma propre application, de sorte que je puisse avoir une bibliothèque unique pour traiter la communication d'arrière-plan pour iOS et Android...
après avoir vérifié tous les post possibles à ce sujet, j'ai finalement obtenu une bonne compilation en utilisant une machine Linux x64 et la version 7.37.0 de Curl à path ${android-ndk-r10}.
Peut-être ce qui suit peut vous aider:
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
Vous obtiendrez une version à ${android-ndk-r10}/externe/curl/build/curl-7.37.0.
Si vous êtes en utilisant une machine 64bits pour compiler, peut-être que 2 définitions sont 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
" CURL_SIZEOF_LONG definition is missing!"
il y a un moyen pour qu'il .
changez le curlbuild.h à la ligne numéro 162 ajoutez comme ceci, si vous êtes 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__
Vous pouvez choisir de télécharger cURL pour android https://play.google.com/store/apps/details?id=io.github.faywong.curl
j'ai eu une question similaire qui n'a pas répondu et a donc été automatiquement supprimé :(
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 cherchent encore.
j'avais aussi besoin d'un typecheck-gcc.h fichier que j'ai modifié et téléchargé ici aussi