iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >在android中增加curl的解决方法
  • 600
分享到

在android中增加curl的解决方法

方法curlAndroid 2022-06-06 10:06:53 600人浏览 泡泡鱼
摘要

curl是一个著名的开源文件传输协议实现软件,其中包括了Http、https、FTP等多种常用不常用协议的实现。在curl最新版本的官方源代码中其实已经包括了Android的编

curl是一个著名的开源文件传输协议实现软件,其中包括了Httphttps、FTP等多种常用不常用协议的实现。在curl最新版本的官方源代码中其实已经包括了Android的编译文件(Android.mk),不过要想编译通过还需要做一些工作。
我所使用的curl版本是7.20.0,android源代码版本是eclair 2.1。
首先将curl解压到external目录下,将目录名称改为curl(不改也可以,不过android的习惯是不带版本号,入乡随俗吧)。
(1) 首先要创建一个头文件curl_config.h。创建方法在curl/Android.mk文件头部的注释里有说明。根据这个说明运行configure。我所使用的命令行如下(我是编译成x86版本的,不过我们的目的只是要生成curl_config.h文件,所以x86还是arm其实是一样的):
代码如下:
ANDROID_ROOT=`realpath ../..` && PATH="$ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin:$PATH" ./configure --host=x86-linux CC=i686-unknown-linux-gnu-GCc CPPFLAGS="-I $ANDROID_ROOT/external/curl/include/ -I $ANDROID_ROOT/external/curl -I $ANDROID_ROOT/out/target/product/eeepc/obj/STATIC_LIBRARIES/libcurl_intermediates -I $ANDROID_ROOT/system/core/include -I $ANDROID_ROOT/hardware/libhardware/include -I $ANDROID_ROOT/hardware/libhardware_legacy/include -I $ANDROID_ROOT/hardware/ril/include -I $ANDROID_ROOT/dalvik/libnativehelper/include -I $ANDROID_ROOT/frameworks/base/include -I $ANDROID_ROOT/frameworks/base/opengl/include -I $ANDROID_ROOT/external/skia/include -I $ANDROID_ROOT/out/target/product/eeepc/obj/include -I $ANDROID_ROOT/bionic/libc/arch-x86/include -I $ANDROID_ROOT/bionic/libc/include -I $ANDROID_ROOT/bionic/libstdc++/include -I $ANDROID_ROOT/bionic/libc/kernel/common -I $ANDROID_ROOT/bionic/libc/kernel/arch-x86 -I $ANDROID_ROOT/bionic/libm/include -I $ANDROID_ROOT/bionic/libm/include/i387 -I $ANDROID_ROOT/bionic/libthread_db/include -I $ANDROID_ROOT/external/openssl/include" CFLAGS="-fno-exceptions -Wno-multichar -march=i686 -m32 -fPIC -include $ANDROID_ROOT/system/core/include/arch/target_linux-x86/AndroidConfig.h -m32 -DANDROID -fmessage-length=0 -fno-strict-aliasing -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -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" LIB="$ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/libgcc.a $ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/crtbegin.o $ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/crtend.o"

(2) configure找不到openssl,所以所生成的配置文件是不使用openssl的。要想使用ssl,需要手动修改 lib/curl_config.h和src/curl_config.h,打开宏定义HAVE_LIBSSL、 HAVE_OPENSSL_CRYPTO_H、HAVE_OPENSSL_ERR_H、HAVE_OPENSSL_PEM_H、 HAVE_OPENSSL_PKCS12_H、HAVE_OPENSSL_RSA_H、HAVE_OPENSSL_SSL_H、 HAVE_OPENSSL_X509_H、USE_OPENSSL、USE_SSLEAY(但是注意android没有编译openssl中的 engine,因此不要打开宏定义HAVE_OPENSSL_ENGINE_H),同时注释掉宏定义HAVE_MALLOC_H和HAVE_iocTL,这两个宏定义在Android_config.h中有定义,不注释的话在编译过程中会有很多警告(但是能正确编译通过)

(3)修改curl/Android.mk文件,在LOCAL_C_INCLUDES变量的值中增加external/openssl/include,在 LOCAL_SYSTEM_SHARED_LIBRARIES变量的值中增加 libssl libz libcrypto。

好了现在可以编译了:
make curl ONE_SHOT_MAKEFILE=external/curl/Android.mk TARGET_PRODUCT=<...>
 
不过上述Android.mk文件会将libcurl编译为静态库,要想编译为动态库还需要修改一下Android.mk文件。


--结束END--

本文标题: 在android中增加curl的解决方法

本文链接: https://www.lsjlt.com/news/27503.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在android中增加curl的解决方法
    curl是一个著名的开源文件传输协议实现软件,其中包括了HTTP、HTTPS、FTP等多种常用不常用协议的实现。在curl最新版本的官方源代码中其实已经包括了android的编...
    99+
    2022-06-06
    方法 curl Android
  • php7无法加载curl的解决方法
    这篇文章主要介绍了php7无法加载curl的解决方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。为了快速救火先贴出解决办法:#在apache 的主配置文件httpd.conf中加入LoadFile ...
    99+
    2023-06-15
  • Android中增加新字库的方法
    Android系统的字库文件放在:alps\frameworks\base\data\fonts 其中DroidSans.ttf是默认英文字库;DroidSans-Bold.t...
    99+
    2022-06-06
    方法 Android
  • 解析在Android中为TextView增加自定义HTML标签的实现方法
    Android中的TextView,本身就支持部分的Html格式标签。这其中包括常用的字体大小颜色设置,文本链接等。使用起来也比较方便,只需要使用Html类转换一下即可。比如:...
    99+
    2022-06-06
    html标签 HTML 方法 Android
  • php curl下载失败的解决方法
    这篇文章将为大家详细讲解有关php curl下载失败的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php curl下载失败的解决办法:首先打开相应的PHP文件;然后添加“curl_setopt(...
    99+
    2023-06-14
  • php curl post错误问题的解决方法
    这篇文章主要介绍php curl post错误问题的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php curl post错误的解决办法:首先打开出错的PHP代码文件;然后将PHP代码中的“$data”由数...
    99+
    2023-06-14
  • curl获取结果乱码的解决方法
    做项目的时候,遇到curl获取的结果是乱码,添加header文字编码也没用。找了很多资料,终于解决了,以下是解决办法,记录一下。 发送请求时添加header $header = ['Accept-Encoding: gzip, deflat...
    99+
    2023-08-31
    html php
  • 解析如何在android中增加gsensor驱动(MMA7660)
    系统原来用的是BOSCH_BMA222的gsensor, 现在要求换成使用MMA7660,我们来看一下怎样增加驱动和调试过程。 1. 修改Makefie首先,修改放置驱动的目录...
    99+
    2022-06-06
    Android
  • Android动态添加View的问题解决方法
    后台代码 代码如下:    private void ChangeView()    {  &n...
    99+
    2022-06-06
    view 方法 Android
  • php curl获取数据不完整的解决方法
    这篇“php curl获取数据不完整的解决方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php curl获取数据不完整的解决方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇...
    99+
    2023-06-06
  • android中TabHost的图标(4848)和文字叠加解决方法
    开发过程中,有时候图标稍微大点,比如48×48的时候,文字就会和图标叠加起来,解决方法如下: 代码如下:TabWidget tw = tabHost.getTabWidget(...
    99+
    2022-06-06
    方法 tabhost Android
  • css中增加阴影的方法
    这篇文章给大家分享的是有关css中增加阴影的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css增加阴影的方法:1、使用“box-shadow”属性向框添加一个或多个阴影;2、通过“text-shadow”属...
    99+
    2023-06-15
  • Android中EditText光标在4.0中的bug及解决方法
    本文分析了Android中EditText光标在4.0中的bug及解决方法。分享给大家供大家参考,具体如下: 一、问题: 不知道为什么,我的EditText的在我自己的手机中出...
    99+
    2022-06-06
    edittext 方法 Android
  • android中AES加解密的使用方法
    今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行。不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上...
    99+
    2022-06-06
    方法 aes Android
  • 怎么在python中为类动态增加方法
    这篇文章将为大家详细讲解有关怎么在python中为类动态增加方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB...
    99+
    2023-06-14
  • php数组中增加值的方法
    这篇文章将为大家详细讲解有关php数组中增加值的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer...
    99+
    2023-06-15
  • jquery中增加css属性的方法
    这篇文章主要介绍jquery中增加css属性的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!jquery增加css属性的方法是css()方法,该方法能设置或返回被选元素的一个或多个样式属性,其设置增加css属性的...
    99+
    2023-06-15
  • android webview 中localStorage无效的解决方法
    我在 android里面 使用html5的 localStorage 为什么存不进去也读不出来呀? 网上搜了好多都没效果 代码如下: mainWebView = ...
    99+
    2022-06-06
    方法 localstorage webview Android
  • php中css不加载的解决方法
    这篇文章将为大家详细讲解有关php中css不加载的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据...
    99+
    2023-06-15
  • Android中ImageView无法居中的问题解决方法
    代码如下:[java] 代码如下:<LinearLayout         android:lay...
    99+
    2022-06-06
    方法 居中 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作