下载curl源代码:http://curl.haxx.se/download.html curl是一个著名的开源文件传输协议实现软件,其中包括了HTTP、HTTPS、FTP等多种常用不常用协议的实现。其实,在curl最新版本的官方源代码中已经包括了android的编译文件(Android.mk)在\packages\Android目录下。
首先,我们来读读curl库中Android.mk上的说明。我这里只截取重要的部分: Note:you must first create a curl_config.h file by running configure in the Android environment.
1.使用Ubuntu得到得到curl_config.h和curlbuild.h文件。 我是在虚拟机中安装Ubuntu12.04,进行基本的编程配置,下载NDK的Linux版本。 配置NDK的几个路径(根据自己需要在/ect/profile文件中修改,具体方法自己查询)
export NDK=$HOME/adt/android-ndk-r9d export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin export PATH=$TOOLCHAIN:$PATH
执行source /ect/profile
进入curl目录下执行下述configure操作
./configure --host=arm-linux --target=arm-linux CC=arm-linux-androideabi-gcc --disable-tftp --disable-sspi --disable-ipv6 --disable-ldaps --disable-ldap --disable-telnet --disable-pop3 --disable-ftp --without-ssl --disable-imap --disable-smtp --disable-pop3 --disable-rtsp --disable-ares --without-ca-bundle --disable-warnings --disable-manual --without-nss --enable-shared --without-zlib --without-random CFLAGS="-nostdlib" CPPFLAGS="-I$NDK/platforms/android-9/arch-arm/usr/include " LDFLAGS="-L$NDK/platforms/android-9/arch-arm/usr/lib/ -lc -ldl"
此时在lib/文件夹下找到生成的curl_config.h,在include/curl/文件夹下找到curlbuild.h
2.在windows上打开eclipse建立一个android应用。
添加文件夹为jni,在文件夹中建立以下文件
Android.mk
LOCAL_PATH:= $(call my-dir) CFLAGS := -Wpointer-arith -Wwrite-strings -Wunused -Winline \ -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long \ -Wfloat-equal -Wno-multichar -Wsign-compare -Wno-format-nonliteral \ -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement \ -Wno-system-headers -DHAVE_CONFIG_H include $(CLEAR_VARS) include $(LOCAL_PATH)/curl/lib/Makefile.inc LOCAL_SRC_FILES := $(addprefix curl/lib/,$(CSOURCES)) LOCAL_CFLAGS += $(CFLAGS) LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include/ $(LOCAL_PATH)/curl/lib LOCAL_COPY_HEADERS_TO := libcurl LOCAL_COPY_HEADERS := $(addprefix curl/include/curl/,$(HHEADERS)) LOCAL_MODULE:= libcurl include $(BUILD_STATIC_LIBRARY) # Build shared library now # curltest include $(CLEAR_VARS) LOCAL_MODULE := curltest LOCAL_SRC_FILES := curltest.c LOCAL_STATIC_LIBRARIES := libcurl LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include $(LOCAL_PATH)/curl/lib include $(BUILD_SHARED_LIBRARY)
curltest.c(不需要实现代码)
#include <jni.h> #include "curl/curl.h"
此时将curl.xx源代码解压后命名为curl,放到jni文件夹下面,并将curl_config.h和curlbuild.h文件,分别放到curl/lib/文件夹和curl/include/curl/文件夹下面
3.创建一个NDK_Builder,
参考地址http://www.linuxidc.com/linux/2011-11/47667.htm
这样就可以编程成功libcurl.a文件了。
参考:
http://blog.sina.com.cn/s/blog_6244ae4b0100w7oe.html http://bloodysofiya.blog.163.com/blog/static/11656234320108704954344/
- 文章2295
- 用户1336
- 访客10465445
智慧始于好奇。