我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在android中增加curl的解决方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在android中增加curl的解决方法

curl是一个著名的开源文件传输协议实现软件,其中包括了HTTP、HTTPS、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和class="lazy" data-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文件。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在android中增加curl的解决方法

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

下载Word文档

猜你喜欢

在android中增加curl的解决方法

curl是一个著名的开源文件传输协议实现软件,其中包括了HTTP、HTTPS、FTP等多种常用不常用协议的实现。在curl最新版本的官方源代码中其实已经包括了android的编译文件(Android.mk),不过要想编译通过还需要做一些工作
2022-06-06

php7无法加载curl的解决方法

这篇文章主要介绍了php7无法加载curl的解决方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。为了快速救火先贴出解决办法:#在apache 的主配置文件httpd.conf中加入LoadFile "E:\myServ
2023-06-15

Android中增加新字库的方法

Android系统的字库文件放在:alps\frameworks\base\data\fonts 其中DroidSans.ttf是默认英文字库;DroidSans-Bold.ttf是默认英文粗体字库;DroidSansFallback.tt
2022-06-06

解析在Android中为TextView增加自定义HTML标签的实现方法

Android中的TextView,本身就支持部分的Html格式标签。这其中包括常用的字体大小颜色设置,文本链接等。使用起来也比较方便,只需要使用Html类转换一下即可。比如: textView.setText(Html.fromHtml(
2022-06-06

php curl下载失败的解决方法

这篇文章将为大家详细讲解有关php curl下载失败的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php curl下载失败的解决办法:首先打开相应的PHP文件;然后添加“curl_setopt(
2023-06-14

解析如何在android中增加gsensor驱动(MMA7660)

系统原来用的是BOSCH_BMA222的gsensor, 现在要求换成使用MMA7660,我们来看一下怎样增加驱动和调试过程。 1. 修改Makefie首先,修改放置驱动的目录里的Makefile(kernel/driver/misc),添
2022-06-06

php curl post错误问题的解决方法

这篇文章主要介绍php curl post错误问题的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php curl post错误的解决办法:首先打开出错的PHP代码文件;然后将PHP代码中的“$data”由数
2023-06-14

css中增加阴影的方法

这篇文章给大家分享的是有关css中增加阴影的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css增加阴影的方法:1、使用“box-shadow”属性向框添加一个或多个阴影;2、通过“text-shadow”属
2023-06-15

Android中EditText光标在4.0中的bug及解决方法

本文分析了Android中EditText光标在4.0中的bug及解决方法。分享给大家供大家参考,具体如下: 一、问题: 不知道为什么,我的EditText的在我自己的手机中出现的时候,他的光标就变得没有了,我开始还以为是光标不见了,后面我
2022-06-06

jquery中增加css属性的方法

这篇文章主要介绍jquery中增加css属性的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!jquery增加css属性的方法是css()方法,该方法能设置或返回被选元素的一个或多个样式属性,其设置增加css属性的
2023-06-15

php数组中增加值的方法

这篇文章将为大家详细讲解有关php数组中增加值的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer
2023-06-15

怎么在python中为类动态增加方法

这篇文章将为大家详细讲解有关怎么在python中为类动态增加方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB
2023-06-14

android中TabHost的图标(4848)和文字叠加解决方法

开发过程中,有时候图标稍微大点,比如48×48的时候,文字就会和图标叠加起来,解决方法如下: 代码如下:TabWidget tw = tabHost.getTabWidget(); for (int i = 0; i < tw.getChi
2022-06-06

android中AES加解密的使用方法

今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行。不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上绝大多数的例子都是行不通的。好了,接下来开始讲解 1、Aes工具
2022-06-06

Android动态添加View的问题解决方法

后台代码 代码如下: private void ChangeView() { ly.removeAllViews(); LayoutInflater inflater = (LayoutInflate
2022-06-06

php curl获取数据不完整的解决方法

这篇“php curl获取数据不完整的解决方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php curl获取数据不完整的解决方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇
2023-06-06

php中css不加载的解决方法

这篇文章将为大家详细讲解有关php中css不加载的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据
2023-06-15

hive中增加字段的方法是什么

在Hive中增加字段可以通过以下两种方式实现:使用ALTER TABLE语句:ALTER TABLE table_name ADD COLUMN column_name data_type;使用INSERT语句创建临时表,并将原表数据插入到
hive中增加字段的方法是什么
2024-03-15

android webview 中localStorage无效的解决方法

我在 android里面 使用html5的 localStorage 为什么存不进去也读不出来呀 网上搜了好多都没效果代码如下: mainWebView = (WebView)this.findViewById(R.id.mainWebV
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录