博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android通过NDK连接网络下载图片到本地
阅读量:4356 次
发布时间:2019-06-07

本文共 29480 字,大约阅读时间需要 98 分钟。

参考文章: 及提供的 

材料找了挺久的结果发现被墙了..对此表示无语....不发表意见...

以下方法是通过curl库进行访问网络的...这里提供下载地址:

一、在NDK目录下建立生成库的文件结构。

    在apps目录下创建目录   \apps\curljni\project\jni\curl

二、配置下载的

 将curl官方文档解压得到的lib、include、src文件夹整个复制到\apps\curljni\project\jni\curl目录下

 用以下内容来覆盖复制过来的文件夹lib下的curl_config.h    //配置curl用到的功能,从上面提供 下载地址里面有

 

View Code
/* lib/curl_config.h.  Generated from curl_config.h.in by configure.  *//* lib/curl_config.h.in.  Generated from configure.ac by autoheader.  *//* when building libcurl itself *//* #undef BUILDING_LIBCURL *//* Location of default ca bundle *//* #undef CURL_CA_BUNDLE *//* Location of default ca path *//* #undef CURL_CA_PATH *//* to disable cookies support *//* #undef CURL_DISABLE_COOKIES *//* to disable cryptographic authentication *//* #undef CURL_DISABLE_CRYPTO_AUTH *//* to disable DICT *//* #undef CURL_DISABLE_DICT *//* to disable FILE *//* #undef CURL_DISABLE_FILE *//* to disable FTP */#define CURL_DISABLE_FTP 1/* to disable HTTP *//* #undef CURL_DISABLE_HTTP *//* to disable IMAP */#define CURL_DISABLE_IMAP 1/* to disable LDAP */#define CURL_DISABLE_LDAP 1/* to disable LDAPS */#define CURL_DISABLE_LDAPS 1/* to disable POP3 */#define CURL_DISABLE_POP3 1/* to disable proxies *//* #undef CURL_DISABLE_PROXY *//* to disable RTSP */#define CURL_DISABLE_RTSP 1/* to disable SMTP */#define CURL_DISABLE_SMTP 1/* to disable TELNET */#define CURL_DISABLE_TELNET 1/* to disable TFTP */#define CURL_DISABLE_TFTP 1/* to disable verbose strings *//* #undef CURL_DISABLE_VERBOSE_STRINGS *//* to make a symbol visible *//* #undef CURL_EXTERN_SYMBOL *//* to enable hidden symbols *//* #undef CURL_HIDDEN_SYMBOLS *//* W$ LDAP with non-W$ compiler *//* #undef CURL_LDAP_HYBRID *//* Use W$ LDAP implementation *//* #undef CURL_LDAP_WIN *//* when not building a shared library *//* #undef CURL_STATICLIB *//* your Entropy Gathering Daemon socket pathname *//* #undef EGD_SOCKET *//* Define if you want to enable IPv6 support *//* #undef ENABLE_IPV6 *//* Define to the type qualifier of arg 1 for getnameinfo. */#define GETNAMEINFO_QUAL_ARG1 const/* Define to the type of arg 1 for getnameinfo. */#define GETNAMEINFO_TYPE_ARG1 struct sockaddr */* Define to the type of arg 2 for getnameinfo. */#define GETNAMEINFO_TYPE_ARG2 socklen_t/* Define to the type of args 4 and 6 for getnameinfo. */#define GETNAMEINFO_TYPE_ARG46 size_t/* Define to the type of arg 7 for getnameinfo. */#define GETNAMEINFO_TYPE_ARG7 int/* Specifies the number of arguments to getservbyport_r *//* #undef GETSERVBYPORT_R_ARGS *//* Specifies the size of the buffer to pass to getservbyport_r *//* #undef GETSERVBYPORT_R_BUFSIZE *//* Define to 1 if you have the alarm function. */#define HAVE_ALARM 1/* Define to 1 if you have the 
header file. */#define HAVE_ALLOCA_H 1/* Define to 1 if you have the
header file. */#define HAVE_ARPA_INET_H 1/* Define to 1 if you have the
header file. *//* #undef HAVE_ARPA_TFTP_H *//* Define to 1 if you have the
header file. */#define HAVE_ASSERT_H 1/* Define to 1 if you have the basename function. */#define HAVE_BASENAME 1/* Define to 1 if bool is an available type. */#define HAVE_BOOL_T 1/* Define to 1 if you have the clock_gettime function and monotonic timer. */#define HAVE_CLOCK_GETTIME_MONOTONIC 1/* Define to 1 if you have the closesocket function. *//* #undef HAVE_CLOSESOCKET *//* Define to 1 if you have the CloseSocket camel case function. *//* #undef HAVE_CLOSESOCKET_CAMEL *//* Define to 1 if you have the connect function. */#define HAVE_CONNECT 1/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. *//* #undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA *//* Define to 1 if you have the
header file. *//* #undef HAVE_CRYPTO_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_DES_H *//* Define to 1 if you have the
header file. */#define HAVE_DLFCN_H 1/* Define to 1 if you have the `ENGINE_cleanup' function. *//* #undef HAVE_ENGINE_CLEANUP *//* Define to 1 if you have the `ENGINE_load_builtin_engines' function. *//* #undef HAVE_ENGINE_LOAD_BUILTIN_ENGINES *//* Define to 1 if you have the
header file. */#define HAVE_ERRNO_H 1/* Define to 1 if you have the
header file. *//* #undef HAVE_ERR_H *//* Define to 1 if you have the fcntl function. */#define HAVE_FCNTL 1/* Define to 1 if you have the
header file. */#define HAVE_FCNTL_H 1/* Define to 1 if you have a working fcntl O_NONBLOCK function. */#define HAVE_FCNTL_O_NONBLOCK 1/* Define to 1 if you have the fdopen function. */#define HAVE_FDOPEN 1/* Define to 1 if you have the `fork' function. */#define HAVE_FORK 1/* Define to 1 if you have the freeaddrinfo function. */#define HAVE_FREEADDRINFO 1/* Define to 1 if you have the freeifaddrs function. *//* #undef HAVE_FREEIFADDRS *//* Define to 1 if you have the ftruncate function. */#define HAVE_FTRUNCATE 1/* Define to 1 if you have a working getaddrinfo function. */#define HAVE_GETADDRINFO 1/* Define to 1 if the getaddrinfo function is threadsafe. */#define HAVE_GETADDRINFO_THREADSAFE 1/* Define to 1 if you have the `geteuid' function. */#define HAVE_GETEUID 1/* Define to 1 if you have the gethostbyaddr function. */#define HAVE_GETHOSTBYADDR 1/* Define to 1 if you have the gethostbyaddr_r function. *//* #undef HAVE_GETHOSTBYADDR_R *//* gethostbyaddr_r() takes 5 args *//* #undef HAVE_GETHOSTBYADDR_R_5 *//* gethostbyaddr_r() takes 7 args *//* #undef HAVE_GETHOSTBYADDR_R_7 *//* gethostbyaddr_r() takes 8 args *//* #undef HAVE_GETHOSTBYADDR_R_8 *//* Define to 1 if you have the gethostbyname function. */#define HAVE_GETHOSTBYNAME 1/* Define to 1 if you have the gethostbyname_r function. */#define HAVE_GETHOSTBYNAME_R 1/* gethostbyname_r() takes 3 args *//* #undef HAVE_GETHOSTBYNAME_R_3 *//* gethostbyname_r() takes 5 args *//* #undef HAVE_GETHOSTBYNAME_R_5 *//* gethostbyname_r() takes 6 args */#define HAVE_GETHOSTBYNAME_R_6 1/* Define to 1 if you have the gethostname function. */#define HAVE_GETHOSTNAME 1/* Define to 1 if you have a working getifaddrs function. *//* #undef HAVE_GETIFADDRS *//* Define to 1 if you have the getnameinfo function. */#define HAVE_GETNAMEINFO 1/* Define to 1 if you have the `getpass_r' function. *//* #undef HAVE_GETPASS_R *//* Define to 1 if you have the `getppid' function. */#define HAVE_GETPPID 1/* Define to 1 if you have the `getprotobyname' function. */#define HAVE_GETPROTOBYNAME 1/* Define to 1 if you have the `getpwuid' function. */#define HAVE_GETPWUID 1/* Define to 1 if you have the `getrlimit' function. */#define HAVE_GETRLIMIT 1/* Define to 1 if you have the getservbyport_r function. *//* #undef HAVE_GETSERVBYPORT_R *//* Define to 1 if you have the `gettimeofday' function. */#define HAVE_GETTIMEOFDAY 1/* Define to 1 if you have a working glibc-style strerror_r function. *//* #undef HAVE_GLIBC_STRERROR_R *//* Define to 1 if you have a working gmtime_r function. */#define HAVE_GMTIME_R 1/* if you have the gssapi libraries *//* #undef HAVE_GSSAPI *//* Define to 1 if you have the
header file. *//* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_GSSAPI_GSSAPI_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_GSSAPI_GSSAPI_KRB5_H *//* if you have the GNU gssapi libraries *//* #undef HAVE_GSSGNU *//* if you have the Heimdal gssapi libraries *//* #undef HAVE_GSSHEIMDAL *//* if you have the MIT gssapi libraries *//* #undef HAVE_GSSMIT *//* Define to 1 if you have the `idna_strerror' function. *//* #undef HAVE_IDNA_STRERROR *//* Define to 1 if you have the `idn_free' function. *//* #undef HAVE_IDN_FREE *//* Define to 1 if you have the
header file. *//* #undef HAVE_IDN_FREE_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_IFADDRS_H *//* Define to 1 if you have the `inet_addr' function. */#define HAVE_INET_ADDR 1/* Define to 1 if you have the inet_ntoa_r function. *//* #undef HAVE_INET_NTOA_R *//* inet_ntoa_r() takes 2 args *//* #undef HAVE_INET_NTOA_R_2 *//* inet_ntoa_r() takes 3 args *//* #undef HAVE_INET_NTOA_R_3 *//* Define to 1 if you have a IPv6 capable working inet_ntop function. */#define HAVE_INET_NTOP 1/* Define to 1 if you have a IPv6 capable working inet_pton function. */#define HAVE_INET_PTON 1/* Define to 1 if you have the
header file. */#define HAVE_INTTYPES_H 1/* Define to 1 if you have the ioctl function. */#define HAVE_IOCTL 1/* Define to 1 if you have the ioctlsocket function. *//* #undef HAVE_IOCTLSOCKET *//* Define to 1 if you have the IoctlSocket camel case function. *//* #undef HAVE_IOCTLSOCKET_CAMEL *//* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. *//* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO *//* Define to 1 if you have a working ioctlsocket FIONBIO function. *//* #undef HAVE_IOCTLSOCKET_FIONBIO *//* Define to 1 if you have a working ioctl FIONBIO function. */#define HAVE_IOCTL_FIONBIO 1/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */#define HAVE_IOCTL_SIOCGIFADDR 1/* Define to 1 if you have the
header file. *//* #undef HAVE_IO_H *//* if you have the Kerberos4 libraries (including -ldes) *//* #undef HAVE_KRB4 *//* Define to 1 if you have the `krb_get_our_ip_for_realm' function. *//* #undef HAVE_KRB_GET_OUR_IP_FOR_REALM *//* Define to 1 if you have the
header file. *//* #undef HAVE_KRB_H *//* Define to 1 if you have the lber.h header file. *//* #undef HAVE_LBER_H *//* Define to 1 if you have the ldapssl.h header file. *//* #undef HAVE_LDAPSSL_H *//* Define to 1 if you have the ldap.h header file. *//* #undef HAVE_LDAP_H *//* Use LDAPS implementation *//* #undef HAVE_LDAP_SSL *//* Define to 1 if you have the ldap_ssl.h header file. *//* #undef HAVE_LDAP_SSL_H *//* Define to 1 if you have the `ldap_url_parse' function. *//* #undef HAVE_LDAP_URL_PARSE *//* Define to 1 if you have the
header file. */#define HAVE_LIBGEN_H 1/* Define to 1 if you have the `idn' library (-lidn). *//* #undef HAVE_LIBIDN *//* Define to 1 if you have the `resolv' library (-lresolv). *//* #undef HAVE_LIBRESOLV *//* Define to 1 if you have the `resolve' library (-lresolve). *//* #undef HAVE_LIBRESOLVE *//* Define to 1 if you have the `ssh2' library (-lssh2). *//* #undef HAVE_LIBSSH2 *//* Define to 1 if you have the
header file. *//* #undef HAVE_LIBSSH2_H *//* Define to 1 if you have the `libssh2_version' function. *//* #undef HAVE_LIBSSH2_VERSION *//* Define to 1 if you have the `ssl' library (-lssl). *//* #undef HAVE_LIBSSL *//* if zlib is available *//* #undef HAVE_LIBZ *//* Define to 1 if you have the
header file. */#define HAVE_LIMITS_H 1/* if your compiler supports LL */#define HAVE_LL 1/* Define to 1 if you have the
header file. */#define HAVE_LOCALE_H 1/* Define to 1 if you have a working localtime_r function. */#define HAVE_LOCALTIME_R 1/* Define to 1 if the compiler supports the 'long long' data type. */#define HAVE_LONGLONG 1/* Define to 1 if you have the malloc.h header file. */#define HAVE_MALLOC_H 1/* Define to 1 if you have the memory.h header file. */#define HAVE_MEMORY_H 1/* Define to 1 if you have the memrchr function or macro. */#define HAVE_MEMRCHR 1/* Define to 1 if you have the MSG_NOSIGNAL flag. */#define HAVE_MSG_NOSIGNAL 1/* Define to 1 if you have the
header file. */#define HAVE_NETDB_H 1/* Define to 1 if you have the
header file. */#define HAVE_NETINET_IN_H 1/* Define to 1 if you have the
header file. */#define HAVE_NETINET_TCP_H 1/* Define to 1 if you have the
header file. */#define HAVE_NET_IF_H 1/* Define to 1 if NI_WITHSCOPEID exists and works. *//* #undef HAVE_NI_WITHSCOPEID *//* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE *//* #undef HAVE_OLD_GSSMIT *//* Define to 1 if you have the
header file. *//* #undef HAVE_OPENSSL_CRYPTO_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_OPENSSL_ENGINE_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_OPENSSL_ERR_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_OPENSSL_PEM_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_OPENSSL_PKCS12_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_OPENSSL_RSA_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_OPENSSL_SSL_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_OPENSSL_X509_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_PEM_H *//* Define to 1 if you have the `perror' function. */#define HAVE_PERROR 1/* Define to 1 if you have the `pipe' function. */#define HAVE_PIPE 1/* if you have the function PK11_CreateGenericObject *//* #undef HAVE_PK11_CREATEGENERICOBJECT *//* Define to 1 if you have a working poll function. */#define HAVE_POLL 1/* If you have a fine poll */#define HAVE_POLL_FINE 1/* Define to 1 if you have the
header file. */#define HAVE_POLL_H 1/* Define to 1 if you have a working POSIX-style strerror_r function. */#define HAVE_POSIX_STRERROR_R 1/* Define to 1 if you have the
header file. */#define HAVE_PWD_H 1/* Define to 1 if you have the `RAND_egd' function. *//* #undef HAVE_RAND_EGD *//* Define to 1 if you have the `RAND_screen' function. *//* #undef HAVE_RAND_SCREEN *//* Define to 1 if you have the `RAND_status' function. *//* #undef HAVE_RAND_STATUS *//* Define to 1 if you have the recv function. */#define HAVE_RECV 1/* Define to 1 if you have the recvfrom function. */#define HAVE_RECVFROM 1/* Define to 1 if you have the
header file. *//* #undef HAVE_RSA_H *//* Define to 1 if you have the select function. */#define HAVE_SELECT 1/* Define to 1 if you have the send function. */#define HAVE_SEND 1/* Define to 1 if you have the
header file. */#define HAVE_SETJMP_H 1/* Define to 1 if you have the `setlocale' function. */#define HAVE_SETLOCALE 1/* Define to 1 if you have the `setmode' function. *//* #undef HAVE_SETMODE *//* Define to 1 if you have the `setrlimit' function. */#define HAVE_SETRLIMIT 1/* Define to 1 if you have the setsockopt function. */#define HAVE_SETSOCKOPT 1/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. *//* #undef HAVE_SETSOCKOPT_SO_NONBLOCK *//* Define to 1 if you have the
header file. */#define HAVE_SGTTY_H 1/* Define to 1 if you have the sigaction function. */#define HAVE_SIGACTION 1/* Define to 1 if you have the siginterrupt function. */#define HAVE_SIGINTERRUPT 1/* Define to 1 if you have the signal function. *//* #undef HAVE_SIGNAL *//* Define to 1 if you have the
header file. */#define HAVE_SIGNAL_H 1/* Define to 1 if you have the sigsetjmp function or macro. */#define HAVE_SIGSETJMP 1/* Define to 1 if sig_atomic_t is an available typedef. */#define HAVE_SIG_ATOMIC_T 1/* Define to 1 if sig_atomic_t is already defined as volatile. *//* #undef HAVE_SIG_ATOMIC_T_VOLATILE *//* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member *//* #undef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID *//* Define to 1 if you have the socket function. */#define HAVE_SOCKET 1/* Define to 1 if you have the
header file. *//* #undef HAVE_SOCKET_H *//* Define this if you have the SPNEGO library fbopenssl *//* #undef HAVE_SPNEGO *//* Define to 1 if you have the `SSL_get_shutdown' function. *//* #undef HAVE_SSL_GET_SHUTDOWN *//* Define to 1 if you have the
header file. *//* #undef HAVE_SSL_H *//* Define to 1 if you have the
header file. */#define HAVE_STDBOOL_H 1/* Define to 1 if you have the
header file. */#define HAVE_STDINT_H 1/* Define to 1 if you have the
header file. */#define HAVE_STDIO_H 1/* Define to 1 if you have the
header file. */#define HAVE_STDLIB_H 1/* Define to 1 if you have the strcasecmp function. */#define HAVE_STRCASECMP 1/* Define to 1 if you have the strcasestr function. */#define HAVE_STRCASESTR 1/* Define to 1 if you have the strcmpi function. *//* #undef HAVE_STRCMPI *//* Define to 1 if you have the strdup function. */#define HAVE_STRDUP 1/* Define to 1 if you have the strerror_r function. */#define HAVE_STRERROR_R 1/* Define to 1 if you have the stricmp function. *//* #undef HAVE_STRICMP *//* Define to 1 if you have the
header file. */#define HAVE_STRINGS_H 1/* Define to 1 if you have the
header file. */#define HAVE_STRING_H 1/* Define to 1 if you have the strlcat function. */#define HAVE_STRLCAT 1/* Define to 1 if you have the `strlcpy' function. *//* #undef HAVE_STRLCPY *//* Define to 1 if you have the strncasecmp function. */#define HAVE_STRNCASECMP 1/* Define to 1 if you have the strncmpi function. *//* #undef HAVE_STRNCMPI *//* Define to 1 if you have the strnicmp function. *//* #undef HAVE_STRNICMP *//* Define to 1 if you have the
header file. *//* #undef HAVE_STROPTS_H *//* Define to 1 if you have the strstr function. */#define HAVE_STRSTR 1/* Define to 1 if you have the strtok_r function. */#define HAVE_STRTOK_R 1/* Define to 1 if you have the strtoll function. */#define HAVE_STRTOLL 1/* if struct sockaddr_storage is defined */#define HAVE_STRUCT_SOCKADDR_STORAGE 1/* Define to 1 if you have the timeval struct. */#define HAVE_STRUCT_TIMEVAL 1/* Define to 1 if you have the
header file. *//* #undef HAVE_SYS_FILIO_H *//* Define to 1 if you have the
header file. */#define HAVE_SYS_IOCTL_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_PARAM_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_POLL_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_RESOURCE_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_SELECT_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_SOCKET_H 1/* Define to 1 if you have the
header file. *//* #undef HAVE_SYS_SOCKIO_H *//* Define to 1 if you have the
header file. */#define HAVE_SYS_STAT_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_TIME_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_TYPES_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_UIO_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_UN_H 1/* Define to 1 if you have the
header file. */#define HAVE_SYS_UTIME_H 1/* Define to 1 if you have the
header file. */#define HAVE_TERMIOS_H 1/* Define to 1 if you have the
header file. *//* #undef HAVE_TERMIO_H *//* Define to 1 if you have the
header file. */#define HAVE_TIME_H 1/* Define to 1 if you have the
header file. *//* #undef HAVE_TLD_H *//* Define to 1 if you have the `tld_strerror' function. *//* #undef HAVE_TLD_STRERROR *//* Define to 1 if you have the `uname' function. */#define HAVE_UNAME 1/* Define to 1 if you have the
header file. */#define HAVE_UNISTD_H 1/* Define to 1 if you have the `utime' function. */#define HAVE_UTIME 1/* Define to 1 if you have the
header file. */#define HAVE_UTIME_H 1/* Define to 1 if compiler supports C99 variadic macro style. */#define HAVE_VARIADIC_MACROS_C99 1/* Define to 1 if compiler supports old gcc variadic macro style. */#define HAVE_VARIADIC_MACROS_GCC 1/* Define to 1 if you have the winber.h header file. *//* #undef HAVE_WINBER_H *//* Define to 1 if you have the windows.h header file. *//* #undef HAVE_WINDOWS_H *//* Define to 1 if you have the winldap.h header file. *//* #undef HAVE_WINLDAP_H *//* Define to 1 if you have the winsock2.h header file. *//* #undef HAVE_WINSOCK2_H *//* Define to 1 if you have the winsock.h header file. *//* #undef HAVE_WINSOCK_H *//* Define this symbol if your OS supports changing the contents of argv *//* #undef HAVE_WRITABLE_ARGV *//* Define to 1 if you have the writev function. */#define HAVE_WRITEV 1/* Define to 1 if you have the ws2tcpip.h header file. *//* #undef HAVE_WS2TCPIP_H *//* Define to 1 if you have the
header file. *//* #undef HAVE_X509_H *//* if you have the zlib.h header file *//* #undef HAVE_ZLIB_H *//* Define to the sub-directory in which libtool stores uninstalled libraries. */#define LT_OBJDIR ".libs/"/* Define to 1 if you are building a native Windows target. *//* #undef NATIVE_WINDOWS *//* Define to 1 if you need the lber.h header file even with ldap.h *//* #undef NEED_LBER_H *//* Define to 1 if you need the malloc.h header file even with stdlib.h *//* #undef NEED_MALLOC_H *//* Define to 1 if you need the memory.h header file even with stdlib.h *//* #undef NEED_MEMORY_H *//* Define to 1 if _REENTRANT preprocessor symbol must be defined. *//* #undef NEED_REENTRANT *//* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. *//* #undef NEED_THREAD_SAFE *//* cpu-machine-OS */#define OS "arm-unknown-linux-gnu"/* Name of package */#define PACKAGE "curl"/* Define to the address where bug reports for this package should be sent. */#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"/* Define to the full name of this package. */#define PACKAGE_NAME "curl"/* Define to the full name and version of this package. */#define PACKAGE_STRING "curl -"/* Define to the one symbol short name of this package. */#define PACKAGE_TARNAME "curl"/* Define to the home page for this package. *//* #undef PACKAGE_URL *//* Define to the version of this package. */#define PACKAGE_VERSION "-"/* a suitable file to read random data from *//* #undef RANDOM_FILE *//* Define to the type of arg 1 for recvfrom. *//* #undef RECVFROM_TYPE_ARG1 *//* Define to the type pointed by arg 2 for recvfrom. *//* #undef RECVFROM_TYPE_ARG2 *//* Define to 1 if the type pointed by arg 2 for recvfrom is void. *//* #undef RECVFROM_TYPE_ARG2_IS_VOID *//* Define to the type of arg 3 for recvfrom. *//* #undef RECVFROM_TYPE_ARG3 *//* Define to the type of arg 4 for recvfrom. *//* #undef RECVFROM_TYPE_ARG4 *//* Define to the type pointed by arg 5 for recvfrom. *//* #undef RECVFROM_TYPE_ARG5 *//* Define to 1 if the type pointed by arg 5 for recvfrom is void. *//* #undef RECVFROM_TYPE_ARG5_IS_VOID *//* Define to the type pointed by arg 6 for recvfrom. *//* #undef RECVFROM_TYPE_ARG6 *//* Define to 1 if the type pointed by arg 6 for recvfrom is void. *//* #undef RECVFROM_TYPE_ARG6_IS_VOID *//* Define to the function return type for recvfrom. *//* #undef RECVFROM_TYPE_RETV *//* Define to the type of arg 1 for recv. */#define RECV_TYPE_ARG1 int/* Define to the type of arg 2 for recv. */#define RECV_TYPE_ARG2 void */* Define to the type of arg 3 for recv. */#define RECV_TYPE_ARG3 size_t/* Define to the type of arg 4 for recv. */#define RECV_TYPE_ARG4 unsigned int/* Define to the function return type for recv. */#define RECV_TYPE_RETV ssize_t/* Define as the return type of signal handlers (`int' or `void'). */#define RETSIGTYPE void/* Define to the type qualifier of arg 5 for select. */#define SELECT_QUAL_ARG5 /* Define to the type of arg 1 for select. */#define SELECT_TYPE_ARG1 int/* Define to the type of args 2, 3 and 4 for select. */#define SELECT_TYPE_ARG234 fd_set */* Define to the type of arg 5 for select. */#define SELECT_TYPE_ARG5 struct timeval */* Define to the function return type for select. */#define SELECT_TYPE_RETV int/* Define to the type qualifier of arg 2 for send. */#define SEND_QUAL_ARG2 const/* Define to the type of arg 1 for send. */#define SEND_TYPE_ARG1 int/* Define to the type of arg 2 for send. */#define SEND_TYPE_ARG2 void */* Define to the type of arg 3 for send. */#define SEND_TYPE_ARG3 size_t/* Define to the type of arg 4 for send. */#define SEND_TYPE_ARG4 unsigned int/* Define to the function return type for send. */#define SEND_TYPE_RETV ssize_t/* The size of `int', as computed by sizeof. */#define SIZEOF_INT 4/* The size of `long', as computed by sizeof. */#define SIZEOF_LONG 4/* The size of `off_t', as computed by sizeof. */#define SIZEOF_OFF_T 4/* The size of `short', as computed by sizeof. */#define SIZEOF_SHORT 2/* The size of `size_t', as computed by sizeof. */#define SIZEOF_SIZE_T 4/* The size of `time_t', as computed by sizeof. */#define SIZEOF_TIME_T 4/* The size of `void*', as computed by sizeof. */#define SIZEOF_VOIDP 4/* Define to 1 if you have the ANSI C header files. */#define STDC_HEADERS 1/* Define to the type of arg 3 for strerror_r. */#define STRERROR_R_TYPE_ARG3 size_t/* Define to 1 if you can safely include both
and
. */#define TIME_WITH_SYS_TIME 1/* Define to enable c-ares support *//* #undef USE_ARES *//* Define to disable non-blocking sockets. *//* #undef USE_BLOCKING_SOCKETS *//* if GnuTLS is enabled *//* #undef USE_GNUTLS *//* if libSSH2 is in use *//* #undef USE_LIBSSH2 *//* If you want to build curl with the built-in manual *//* #undef USE_MANUAL *//* if NSS is enabled *//* #undef USE_NSS *//* if OpenSSL is in use *//* #undef USE_OPENSSL *//* if SSL is enabled *//* #undef USE_SSLEAY *//* Define to 1 if you are building a Windows target without large file support. *//* #undef USE_WIN32_LARGE_FILES *//* to enable SSPI support *//* #undef USE_WINDOWS_SSPI *//* Define to 1 if using yaSSL in OpenSSL compatibility mode. *//* #undef USE_YASSLEMUL *//* Version number of package */#define VERSION "7.20.1"/* Define to avoid automatic inclusion of winsock.h *//* #undef WIN32_LEAN_AND_MEAN *//* Define to 1 if OS is AIX. */#ifndef _ALL_SOURCE/* # undef _ALL_SOURCE */#endif/* Number of bits in a file offset, on hosts where this is settable. *//* #undef _FILE_OFFSET_BITS *//* Define for large files, on AIX-style hosts. *//* #undef _LARGE_FILES *//* Define to empty if `const' does not conform to ANSI C. *//* #undef const *//* Type to use in place of in_addr_t when system does not provide it. *//* #undef in_addr_t *//* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */#ifndef __cplusplus/* #undef inline */#endif/* Define to `unsigned int' if
does not define. *//* #undef size_t *//* the signed version of size_t *//* #undef ssize_t */

 

三、编写NDK文件调用curl访问网络

\apps\curljni\project\jni\目录下建立文件curljni.c  

// 调试      LOGI("  %d", len);#include
#define LOG_TAG "debug"#define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, fmt, ##args)#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, fmt, ##args)#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, fmt, ##args)#include
#include
#include "curl/curl.h" //回调函数中自定义参数的类型struct FtpFile { const char *filename; FILE *stream;};//回调函数获取数据static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream){ LOGI("buffersize %d",size*nmemb); struct FtpFile *out=(struct FtpFile *)stream; if(out && !out->stream) { /* open file for writing */ out->stream=fopen(out->filename, "wb"); if(!out->stream) { LOGI("failure, can't open file to write\n"); return -1; /* failure, can't open file to write */ } } return fwrite(buffer, size, nmemb, out->stream);} JNIEXPORT jstring JNICALLJava_com_example_curltest_MainActivity_GetImage( JNIEnv* env, jobject thiz, jstring imageurl,jstring savepath) { CURL *curl; CURLcode res; const jbyte *weburl; weburl = (*env)->GetStringUTFChars(env, imageurl, NULL); if (weburl == NULL) { return NULL; } struct FtpFile ftpfile={ (*env)->GetStringUTFChars(env, savepath, NULL), /* name to store the file as if succesful */ NULL }; //初始化 curl_global_init可以不设置 curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, weburl); // 设置访问链接 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite); // 设置回调函数 curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile); //设置回调参数(在回调函数内可以调用) res = curl_easy_perform(curl); //执行获得curl返回参数用于判断成功与否 /* always cleanup */ curl_easy_cleanup(curl); (*env)->ReleaseStringUTFChars(env, imageurl, weburl); if(ftpfile.stream) fclose(ftpfile.stream); /* close the local file */ //清理 curl curl_global_cleanup(); if(CURLE_OK != res) { //失败 LOGI("curl told us %d\n", res); return (*env)->NewStringUTF(env, "failed"); } else { //成功 LOGI("succesful\n"); return (*env)->NewStringUTF(env, "succesful"); } } return (*env)->NewStringUTF(env, "failed");}

 

四、创建应用配置文件Application.mk,Android.mk。

 curljni目录下建立文件Application.mk。内容如下:

APP_PROJECT_PATH := $(call my-dir)/projectAPP_MODULES := curljni libcurl

 在curljni\project\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_Hinclude $(CLEAR_VARS)include $(LOCAL_PATH)/curl/lib/Makefile.incLOCAL_SRC_FILES := $(addprefix curl/lib/,$(CSOURCES))LOCAL_CFLAGS += $(CFLAGS)LOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include/ $(LOCAL_PATH)/curl/libLOCAL_COPY_HEADERS_TO := libcurlLOCAL_COPY_HEADERS := $(addprefix curl/include/curl/,$(HHEADERS))LOCAL_MODULE:= libcurlinclude $(BUILD_STATIC_LIBRARY)# Build shared library now# curltestinclude $(CLEAR_VARS)LOCAL_MODULE := curljniLOCAL_SRC_FILES := curljni.cLOCAL_STATIC_LIBRARIES := libcurlLOCAL_C_INCLUDES += $(LOCAL_PATH)/curl/include $(LOCAL_PATH)/curl/lib#  调试用LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog  include $(BUILD_SHARED_LIBRARY)

五、编译生成so库并测试

  cd到NDK安装目录下执行一下命令生成so文件 

make APP=curljni -B

    在android项目中添加 

 public native String GetImage(String url,String savepath);   static {     System.loadLibrary("curljni");   }

    然后在需要的地方调用GetImage(url,path)进行执行;

  这样在path中就可以看到从url保存下来的图片了

 

转载于:https://www.cnblogs.com/stratrail/archive/2013/04/12/3016663.html

你可能感兴趣的文章
Page.RegisterStartupScript和Response.Write的区别。
查看>>
hdu4348区间更新的主席树+标记永久化
查看>>
ZOJ 2532 Internship
查看>>
HDU 3452 Bonsai
查看>>
[Erlang12] Mnesia分布式应用
查看>>
图的遍历 | 1013 连通块块数
查看>>
Kinect 开发 —— 进阶指引(上)
查看>>
python学习笔记(六)time、datetime、hashlib模块
查看>>
uva489(需要考虑周全)
查看>>
C-关键字(二)
查看>>
排序笔记
查看>>
下载360doc.com里的文章
查看>>
【转】globk和glorg中使用的apr文件
查看>>
导航,头部,CSS基础
查看>>
PostMessage 解析
查看>>
Java语法基础(一)
查看>>
as3 sort
查看>>
hdu 2680 Choose the best route Dijkstra 虚拟点
查看>>
26. Remove Duplicates from Sorted Array java solutions
查看>>
[bzoj1185] [HNOI2007]最小矩形覆盖
查看>>