web-dev-qa-db-ja.com

AndroidでcURLを使用する

Androidネイティブコードのアプリケーション(最新のNDK r5bを使用)でcURLライブラリを使用したいと思います。オンラインで調査した後、cURLを使用する唯一の方法はAndroidは、Android curlを含むソースツリー全体をビルドすることであり、これにより、cURLがAndroidで動作するために必要な構成ファイルが生成されます。ビルドの経験はありません。 Androidソースをゼロから作成し、Androidを再構築せずにcURLライブラリを使用する方法があるかどうか疑問に思っていましたAndroid = from source。理想的には、cURLを静的または共有ライブラリとして使用できるのが理想的です。ここに記載されている手順に従ってみました...

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

しかし、ファイルcurlrules.hでCURL_SIZEOF_LONG definition is missing!

これらのエラーは、私が言及した構成ファイルがないためと思われますが、上記のリンクの手順ではそれについて言及せず、成功を報告しました。何か案は?

24
Nitrex88

私も同様のクエストをしています!私は現在、cURLを必要とするアプリの開発に取り組んでいますが、今夜の検索であなたの投稿に出くわしました。

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

あなたが参照したリンクとは異なり、指示に従って成功したと主張する他の人々からのいくつかのフォローアップコメントがあります。あなたが私の前にそれをコンパイルすることに成功し、私にライブラリを送ることを気にしないなら、ここにフォローアップを投稿してください! (スタックオーバーフローはかなり新しいので、pmを実行できるかどうかはわかりません。)これが両方のユーザーに役立つことを願っています。

18
user562566

NDKビルド用にopensslとlibcurlの両方を自動化したプロジェクトがgithubにあるようです。

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

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

自分のアプリでそれらを使用するため、iOSとAndroidの両方のバックエンド通信に対処するために単一のライブラリを持つことができます...

14
p_l

これに関するすべての可能な投稿をチェックした後、パス$ {Android-ndk-r10}でLinux x64マシンとCurlバージョン7.37.0を使用して、ようやくコンパイルできました。

たぶん、この手順はあなたを助けることができます:

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

私はこれをフォローしました link 。そしてそれは私のために働いています。 libcurlをコンパイルするために、リポジトリ全体をダウンロードする必要はありませんでしたAndroidリポジトリ

2
MOHAMED

Android https://play.google.com/store/apps/details?id=io.github.faywong.curl でcURLをダウンロードすることを選択できます。

1
faywong

私は答えられなかったので自動的に削除された同様の質問がありました:(

とにかく、Android=でcurlを正常に使用し、コンパイル済みのバージョンをアップロードして、ユーザーが引き続き検索できるようにしました。

ダウンロード:libcurl_for_arm

また、typecheck-gcc.hファイルも必要でした。これも修正し、ここにアップロードしました

ダウンロード:typecheck-gcc.h

1
RJButler

「CURL_SIZEOF_LONG定義がありません!」

それには方法があります。

arm32プラットフォームの場合は、行番号162のcurlbuild.hを次のように変更します。

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