`

curl在Android中使用的Demo

    博客分类:
  • curl
 
阅读更多

      在Android源码环境下编译出curl.a静态库后可以放到JNI下直接使用了。

 

      要注意的是,在Android.mk中需要这样将静态库编译到jni的动态库中。

 

     

LOCAL_PATH := $(call my-dir)

#使用静态库
include $(CLEAR_VARS)
LOCAL_MODULE := curl
LOCAL_SRC_FILES := ./curllib/libcurl.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_CFLAGS := -D_GNU_SOURCE
LOCAL_CPPFLAGS := -frtti

# 打算编译出的动态库的名字
LOCAL_MODULE:= jni_curl

# 使用的本地静态库
LOCAL_SHARED_LIBRARIES := libcurl

LOCAL_SRC_FILES := jni_main.cpp

# 如果不包含这一句的话,会提示:__android_log_print 未定义
LOCAL_LDLIBS := -llog



include $(BUILD_SHARED_LIBRARY)

 

     参见NDK中的prebuild一章。

 

     2.如果要在curl的使用过程中使用stl的c++就需要有Application.mk文件,里面的内容注释都有。

 

     例子以www.baidu.com为例,简单使用了一下。返回的数据都能被打印出来。

 

    

CURL *curl;
	CURLcode res;
	// 接受返回的内容,用于打印出来看
	std::string content;
//	char content[1024*20];

	    curl_global_init(CURL_GLOBAL_ALL);

	    curl = curl_easy_init();
	    if (curl) {
	        curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
	        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Post_Response);
	        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
	        res = curl_easy_perform(curl);
	        if (0!=res) {
//	            printf("curl error: %d\n", res);
	            LOGD("curl error: %d\n", res);
	        }
	        LOGD("curl error: %d\n", res);


	        LOGD("curl content = %s \n", content.c_str());

	        curl_easy_cleanup(curl);
	    }

	curl_global_cleanup();

 

详细内容请参考Demo,附件中:

 

1
1
分享到:
评论
5 楼 dingran 2013-09-27  
tofaluanle 写道
我使用你这个demo测试通过。然后我自己写了个函数,建立ftp连接并下载文件,curl会返回错误码:1。请问这是为什么


什么错误码呢?也得让我看看才能知道啊
4 楼 tofaluanle 2013-09-22  
我使用你这个demo测试通过。然后我自己写了个函数,建立ftp连接并下载文件,curl会返回错误码:1。请问这是为什么
3 楼 dingran 2013-04-11  
csmap 写道
不好意思,想问下,LOCAL_SHARED_LIBRARIES不是给动态链接库设置的吗?为什么这里写的是静态?然后后面指向的libcurl,是最上面build的那个curl吗?

csmap 写道
不好意思,想问下,LOCAL_SHARED_LIBRARIES不是给动态链接库设置的吗?为什么这里写的是静态?然后后面指向的libcurl,是最上面build的那个curl吗?

这个没写错,确实是:
# 使用的本地静态库 
LOCAL_SHARED_LIBRARIES := libcurl 
这个libcurl就是以前build的静态库,通过这个关联:LOCAL_MODULE := curl 起来的。
你后面的疑问说的没错。如果是动态库不能这样搞,搞法不同。
2 楼 csmap 2013-04-10  
不好意思,想问下,LOCAL_SHARED_LIBRARIES不是给动态链接库设置的吗?为什么这里写的是静态?然后后面指向的libcurl,是最上面build的那个curl吗?
1 楼 dingran 2013-02-16  
需要注意在AndroidManifest.xml中添加网络权限,否则不能联网成功。

相关推荐

    android使用NDK编译curl库源码

    在这个场景中,我们将探讨如何在Android环境下使用NDK(Native Development Kit)编译Curl库源码。 首先,NDK是Google提供的一个工具集,允许开发者在Android应用中集成原生代码。通过NDK,我们可以编写C和C++代码...

    android 翻页 demo 别人的

    在这个项目中,开发者可能会使用到Android的ViewFlipper或者ViewPager组件来实现页面间的切换。ViewFlipper允许开发者在多个视图之间进行简单的自动或手动切换,而ViewPager则提供了更复杂的滑动手势支持和页面间...

    android 书籍翻页效果的demo

    在这个demo中,可能使用了ObjectAnimator或ValueAnimator来实现页面翻转时的平滑过渡。通过改变View的旋转、缩放、透明度等属性,可以模拟出纸张翻页的动作。 2. **Canvas与绘图**:为了创建逼真的翻页效果,开发者...

    Android书籍翻页效果的demo.zip

    这个"Android书籍翻页效果的demo.zip"压缩包文件很可能是包含了一个示例项目,演示如何在Android应用中实现类似真实书籍翻页的动态效果。下面将详细介绍这种效果的实现原理和技术要点。 首先,我们要理解Android中...

    Android 书籍翻页效果的demo.zip

    在Android开发中,实现书籍翻页效果是一种常见的增强用户体验的方式,尤其在电子阅读应用或者教育类应用中。这种效果模拟了真实纸质书翻页的动态,使得数字内容更具吸引力。以下将详细介绍如何在Android中实现书籍...

    android-curl:详细信息,请检查完整文档

    独立的aar module,可以直接引入项目使用,结合app中的封装demo,可以快速集成进入项目中。 更多请见文档: keywords: android curl jni ndk https http openssl http2.0 libnghttp2 nghttp2 关键字:安卓 curl jni ...

    Android翻书特效可翻图片

    在Android开发中,实现“翻书特效”是一种增强用户体验、为应用增添互动性的技术。这种特效通常用于电子书籍、杂志阅读应用或者展示类应用中,模拟真实的翻页体验。"Android翻书特效可翻图片"是指在Android平台上,...

    大众点评api 接口Demo

    大众点评API接口Demo是开发者了解和使用大众点评平台服务的重要入口,它提供了多种编程语言的实例,包括ASP.NET、JavaScript、Java、PHP以及Android,使得开发者能够方便地集成大众点评的功能到自己的应用中。...

    千应支付接口demo

    5. **Android**: Android的DEMO则需要使用HttpURLConnection或Retrofit等网络库进行接口调用,处理JSON数据可能使用Gson或Jackson库。Android开发者还需要关注权限管理、异步处理(如使用AsyncTask或LiveData)以及...

    Android 监听自身应用卸载-IT计算机-毕业设计.zip

    在这个Demo中,当应用被卸载时,会触发一个三方请求,这可能涉及到网络编程。Android提供了HttpURLConnection和OkHttp等库来处理网络请求,但本项目使用了libcurl库。libcurl是一个开源的客户端URL传输库,支持多种...

    友盟一键获取手机号PHP后端demo

    2. **集成SDK**:在你的移动应用客户端(Android或iOS)中,需要集成友盟的SDK,设置AppKey,并实现友盟的权限申请及回调机制,以便在用户同意授权后能够触发获取手机号的请求。 3. **后端接口设计**:在PHP后端,...

    android_samples

    “regId”打印在日志中,它可以从日志中复制并在PushServer项目中的一个简单的独立 java 类demo.sayan.pushnotifierserver.PushServer.java中使用,以通过 Google Cloud Messaging 向 Android 设备发送推送通知。...

    android2.3_ubuntu编译环境配置说明.pdf

    在`device/rockchip/sdkDemo/BoardConfig.mk`中设置目标板的配置文件,并使用`make rk29_sdk_defconfig`生成默认配置。之后使用`make kernel.img`等命令编译内核和各个映像文件,如`boot.img`、`misc.img`、`...

    在ubuntu下编译ijkplayer-android的方法

    在本文中,我们将详细介绍在 Ubuntu 环境下编译 ijkplayer-android 的方法。ijkplayer-android 是一个开源的 Android 媒体播放器,能够播放多种格式的音视频文件。在 Ubuntu 环境下编译 ijkplayer-android 需要安装...

    Delphi-Restful-Test-PHP

    在IT行业中,跨平台通信是常见的需求,而RESTful API作为一种轻量级的Web服务交互方式,被广泛应用。本项目“Delphi-Restful-Test-PHP”专注于演示如何使用PHP来调用由Delphi开发的数据Snap/RESTful接口服务。下面...

    react-with-apis:使用API​​的React Demo

    视窗要在Windows上安装nvm,请在下载安装程序。 如果您有问题或需要更多信息,请查看nvm-windows的。安装节点我们需要安装最新版本的节点并确保使用它。 nvm install 12nvm use 12node --version运行创建React应

    使用tensorflows详细过程总结

    bazel build --config=opt --copt=-mavx --copt=-mavx2 --copt=-mfma //tensorflow/examples/android:tensorflow_demo ``` 注意,编译选项应根据实际的硬件特性进行调整。 以上是针对初学者使用TensorFlow的一份...

    Appium自动化测试——iOS

    在iOS环境中配置Appium,首先需要确保你的开发环境是Mac,并且具备基本的开发工具。以下是详细的步骤: 1. **环境准备**:开始之前,你需要安装Node.js,它是Appium的依赖。在Mac上,推荐使用Homebrew来管理软件包...

Global site tag (gtag.js) - Google Analytics