こんにちは
私はcURLライブラリを使用するiOS / Android用のアプリケーションを開発しています。
最近まで、既製のlibcurlビルドを使用していました。
- 公式サイトからiOS用
- インターネットスペースのあるAndroid向け
同時に、ライブラリのバージョンは異なりましたが、ヘッダーファイルは同じでした。
順序を復元するために、ライブラリを独自にアセンブルすることが決定されました。
モバイルプラットフォームの次のバージョンのサポートが期待されています。
IOSビルド
cURLダウンロードページには、iOSのライブラリバージョンへのリンクがあります。
その後、著者がiOS用のcURLの構築方法を詳細に説明しているページを見つけました。
iOS向けのビルドは、簡単な手順になります。
export CC="__llvm-gcc" export CFLAGS="-arch armv7 -arch armv7s -pipe -Os -gdwarf-2 -isysroot __iPhoneOS.sdk" export LDFLAGS="-arch armv7 -arch armv7s -isysroot __iPhoneOS.sdk" curl -O http://curl.haxx.se/download/curl-7.31.0.tar.gz tar -xzf curl-7.31.0.tar.gz cd curl-7.31.0 ./configure --disable-shared --enable-static --disable-dependency-tracking --host=armv7-apple-darwin make
iOSでHTTPSをサポートするには、-with-darwinsslスイッチを使用してcURLを構成するだけで十分です(iOS5以降のみ)。
以前のバージョンでは、OpenSSLを使用する必要があります。
Androidビルド
cURLのドキュメントには、Android用の2つのビルドメソッドがあります。
- Android.mkスクリプトを使用しますが、この場合はAndroidソースを使用する必要があります。
- Android NDKの「スタンドアロンツールチェーン」を使用します。
Android向けのビルドでは、2番目の方法が決定されました。
これを行うには、最初にmake-standalone-toolchain.shスクリプトを実行してツールチェーンを生成する必要があります
詳細については、Android NDK STANDALONE-TOOLCHAIN.htmlドキュメントをご覧ください。
私の場合、ツールチェーンのビルドは次のようになりました(MAC OS X、Android NDK r8e、android-14、gcc4.7):
$NDK_ROOT/build/tools/make-standalone-toolchain.sh \ --platform=android-14 \ --install-dir=android-toolchain-gcc4.7 \ --toolchain=arm-linux-androideabi-4.7 \ --system=darwin-x86_64
その結果、アームandroid-14およびツールチェーンgcc4.7のsysrootのコピーを含むディレクトリandroid-toolchain-gcc4.7が作成されます。
このツールチェーンは、Autotoolsビルドシステムを使用してAndroidプロジェクト用にビルドできます。
cURLアセンブリは次のようになります。
$NDK_ROOT/build/tools/make-standalone-toolchain.sh --install-dir=toolchain bla-bla-bla export PATH=`pwd`/toolchain/bin:$PATH export CC=arm-linux-androideabi-gcc curl -O http://curl.haxx.se/download/curl-7.31.0.tar.gz tar -xzf curl-7.31.0.tar.gz cd curl-7.31.0 ./configure --disable-shared --enable-static --host=arm-linux-androideabi make
HTTPSをサポートするには、ソースからOpenSSLをさらにコンパイルする必要があります。
HTTPおよびHTTPSプロトコル(MAC OS X、Xcode 4.6.3、iOS SDK 6.1)をサポートするiOSおよびAndroid用のlibcurlを作成するためのスクリプトを次に示します。
主な手順:
- スタンドアロンツールチェーンを生成する
- cURLおよびOpenSSLソースをダウンロードして解凍する
- iOSデバイス用のcURLのビルド(armv7、armv7s)
- iOSシミュレーター用のcURLのビルド(i386)
- Android用OpenSSLのビルド(armv7)
- Android用のcURLのビルド(armv7)
コンパイルされたライブラリは、ビルド済みディレクトリにコピーされ、ヘッダーファイルがインクルードされます。
Androidの以前のバージョンをサポートするには、適切なスタンドアロンツールチェーンを構築する必要があります。
関連リンク:
cURLの公式アセンブリドキュメントiOSのCURLビルド手順Android NDKスタンドアロンツールチェーン