下载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/
本文链接:https://it72.com:4443/12215.htm