Java Curl 开发记录(三) 使用ndk编译libcurl

昨天将libcurl java的封装写完,今天继续将libcurl移植到Android。

首先下载curl,我下载的是7.38.0这个版本(不是最新版本)。
我使用的是ubuntu 15.04 64位,下载了ndk r9d
首先配置一下环境变量,修改文件/etc/profile

个人比较喜欢使用vim,在终端中使用vim修改文件,增加如下内容:

export NDK_HOME=/opt/android-ndk-r9d
export TOOLCHAIN=$NDK_HOME/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin
export PATH=$TOOLCHAIN:$PATH

在Android NDK下编译libcurl,首先要生成头文件:

./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 --enable-ftp --without-ssl --disable-imap --disable-smtp --disable-pop3 --disable-rtsp --without-ca-bundle --disable-warnings --disable-manual --without-nss --enable-shared --without-zlib --without-random CFLAGS="-nostdlib" CPPFLAGS="-I$NDK_HOME/platforms/android-9/arch-arm/usr/include " LDFLAGS="-L$NDK_HOME/platforms/android-9/arch-arm/usr/lib/ -lc -ldl"

这个编译并不支持zlib和ssl,因为android需要另外单独编译这两个库,而且我们项目里面目前暂时也没有用到这方面的功能,因此等以后再来编译。
此时在lib/文件夹下找到生成的curl_config.h,在include/curl/文件夹下找到curlbuild.h

用Eclipse新建一个android应用,新建一个目录jni
将curl.xx源代码解压后命名为curl,放到jni文件夹下面,并将curl_config.h和curlbuild.h文件,分别放到curl/lib/文件夹和curl/include/curl/文件夹下面 。

编写一个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_MODULE:= libcurl
LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include/ $(LOCAL_PATH)/curl/lib
include $(BUILD_SHARED_LIBRARY)

cd到jni目录下,执行:
ndk-build
就能够得到libcurl.so了。当然,也可以将libcurl编译成静态库进行调用。
安卓设备所采用的芯片比较多,为了发挥最大性能,可以新建一个Application.mk文件,这个文件里面,添加下面一行:

APP_ABI =armeabi armeabi-v7a x86

不添加默认就是按照armeabi来进行编译了,大多数的手机都能用,如果要发挥最大性能,最好是同时编译 armeabi-v7a 和x86。
这个so文件暂时还没有进行测试。等有功夫继续弄。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值