在Android NDK中使用libcurl 我正在研究一个Android NDK项目,我想使用LIcCURL库从C++下载资源。我正在使用NDK的内置NDK构建工具。在生成过程中,我遇到以下错误: Build command failed. Error while executing process /Users/afarm/Library/Android/sdk/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/afarm/AndroidStudioProjects/NativeOpenGL/engine/Android.mk APP_ABI=armeabi NDK_ALL_ABIS=armeabi NDK_DEBUG=1 APP_PLATFORM=android-15 NDK_OUT=/Users/afarm/AndroidStudioProjects/NativeOpenGL/engine/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=/Users/afarm/AndroidStudioProjects/NativeOpenGL/engine/build/intermediates/ndkBuild/debug/lib APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -n} Android NDK: /Users/afarm/AndroidStudioProjects/NativeOpenGL/engine/Android.mk: Cannot find module with tag 'libcurl' in import path Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ? Android NDK: The following directories were searched: Android NDK:

在Android NDK中使用libcurl 我正在研究一个Android NDK项目,我想使用LIcCURL库从C++下载资源。我正在使用NDK的内置NDK构建工具。在生成过程中,我遇到以下错误: Build command failed. Error while executing process /Users/afarm/Library/Android/sdk/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/afarm/AndroidStudioProjects/NativeOpenGL/engine/Android.mk APP_ABI=armeabi NDK_ALL_ABIS=armeabi NDK_DEBUG=1 APP_PLATFORM=android-15 NDK_OUT=/Users/afarm/AndroidStudioProjects/NativeOpenGL/engine/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=/Users/afarm/AndroidStudioProjects/NativeOpenGL/engine/build/intermediates/ndkBuild/debug/lib APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -n} Android NDK: /Users/afarm/AndroidStudioProjects/NativeOpenGL/engine/Android.mk: Cannot find module with tag 'libcurl' in import path Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ? Android NDK: The following directories were searched: Android NDK:,curl,android-ndk,libcurl,ndk-build,android.mk,Curl,Android Ndk,Libcurl,Ndk Build,Android.mk,这是我的Android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := engine-core LOCAL_CFLAGS := -Wall -Wextra APP_CPPFLAGS := -std=c++11 APP_STL := gnustl_static NDK_TOOLCHAIN_VERSION := clang LOCAL_SRC_FILES := src/main/cpp

这是我的Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := engine-core
LOCAL_CFLAGS    := -Wall -Wextra
APP_CPPFLAGS    := -std=c++11
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := clang
LOCAL_SRC_FILES := src/main/cpp/rendererwrapper.cpp \
                   src/main/cpp/renderer.cpp \
                   src/main/cpp/ShaderProgram.cpp \
                   src/main/cpp/SimpleShaderProgram.cpp \
                   src/main/cpp/NativeOpenGLShaderPrograms.c
LOCAL_STATIC_LIBRARIES := libcurl
LOCAL_LDLIBS := -llog -lGLESv2 -landroid

include $(BUILD_SHARED_LIBRARY)

$(call import-add-path,src/main/cpp)
$(call import-module,libcurl)
LOCAL_PATH := $(call my-dir)

################################
# Prepare libcurl

include $(CLEAR_VARS)

LOCAL_MODULE := libcurl
LOCAL_SRC_FILES := libs/libcurl/$(TARGET_ARCH_ABI)/libcurl.a
LOCAL_EXPORT_C_INCLUDES := libs/libcurl/include

include $(PREBUILT_STATIC_LIBRARY)

################################

################################
# Build engine

include $(CLEAR_VARS)

LOCAL_MODULE    := engine-core
LOCAL_CFLAGS    := -Wall -Wextra
LOCAL_CPPFLAGS  := -std=c++11
LOCAL_SRC_FILES := src/main/cpp/rendererwrapper.cpp \
                   src/main/cpp/renderer.cpp \
                   src/main/cpp/ShaderProgram.cpp \
                   src/main/cpp/SimpleShaderProgram.cpp \
                   src/main/cpp/NativeOpenGLShaderPrograms.c
LOCAL_STATIC_LIBRARIES := libcurl
LOCAL_LDLIBS := -llog -lGLESv2 -landroid

include $(BUILD_SHARED_LIBRARY)

################################

我已经下载了curl/libcurl版本,并将其放在src/main/cpp/目录中。我正在寻找一种将libcurl包括在项目中的方法。要明确的是,我想使用正式的libcurl版本(不是移植版本)。

我没有成功地从源代码处编译libcurl,但我确实找到了其中包括为Android预先构建的静态libcurl二进制文件(也包括iOS二进制文件)

为了子孙后代,这里是我的新Android.mk的一部分:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := engine-core
LOCAL_CFLAGS    := -Wall -Wextra
APP_CPPFLAGS    := -std=c++11
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := clang
LOCAL_SRC_FILES := src/main/cpp/rendererwrapper.cpp \
                   src/main/cpp/renderer.cpp \
                   src/main/cpp/ShaderProgram.cpp \
                   src/main/cpp/SimpleShaderProgram.cpp \
                   src/main/cpp/NativeOpenGLShaderPrograms.c
LOCAL_STATIC_LIBRARIES := libcurl
LOCAL_LDLIBS := -llog -lGLESv2 -landroid

include $(BUILD_SHARED_LIBRARY)

$(call import-add-path,src/main/cpp)
$(call import-module,libcurl)
LOCAL_PATH := $(call my-dir)

################################
# Prepare libcurl

include $(CLEAR_VARS)

LOCAL_MODULE := libcurl
LOCAL_SRC_FILES := libs/libcurl/$(TARGET_ARCH_ABI)/libcurl.a
LOCAL_EXPORT_C_INCLUDES := libs/libcurl/include

include $(PREBUILT_STATIC_LIBRARY)

################################

################################
# Build engine

include $(CLEAR_VARS)

LOCAL_MODULE    := engine-core
LOCAL_CFLAGS    := -Wall -Wextra
LOCAL_CPPFLAGS  := -std=c++11
LOCAL_SRC_FILES := src/main/cpp/rendererwrapper.cpp \
                   src/main/cpp/renderer.cpp \
                   src/main/cpp/ShaderProgram.cpp \
                   src/main/cpp/SimpleShaderProgram.cpp \
                   src/main/cpp/NativeOpenGLShaderPrograms.c
LOCAL_STATIC_LIBRARIES := libcurl
LOCAL_LDLIBS := -llog -lGLESv2 -landroid

include $(BUILD_SHARED_LIBRARY)

################################

我并没有成功地从源代码处编译libcurl,但我找到了其中包括为Android预先构建的静态libcurl二进制文件(也包括iOS二进制文件)

为了子孙后代,这里是我的新Android.mk的一部分:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := engine-core
LOCAL_CFLAGS    := -Wall -Wextra
APP_CPPFLAGS    := -std=c++11
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := clang
LOCAL_SRC_FILES := src/main/cpp/rendererwrapper.cpp \
                   src/main/cpp/renderer.cpp \
                   src/main/cpp/ShaderProgram.cpp \
                   src/main/cpp/SimpleShaderProgram.cpp \
                   src/main/cpp/NativeOpenGLShaderPrograms.c
LOCAL_STATIC_LIBRARIES := libcurl
LOCAL_LDLIBS := -llog -lGLESv2 -landroid

include $(BUILD_SHARED_LIBRARY)

$(call import-add-path,src/main/cpp)
$(call import-module,libcurl)
LOCAL_PATH := $(call my-dir)

################################
# Prepare libcurl

include $(CLEAR_VARS)

LOCAL_MODULE := libcurl
LOCAL_SRC_FILES := libs/libcurl/$(TARGET_ARCH_ABI)/libcurl.a
LOCAL_EXPORT_C_INCLUDES := libs/libcurl/include

include $(PREBUILT_STATIC_LIBRARY)

################################

################################
# Build engine

include $(CLEAR_VARS)

LOCAL_MODULE    := engine-core
LOCAL_CFLAGS    := -Wall -Wextra
LOCAL_CPPFLAGS  := -std=c++11
LOCAL_SRC_FILES := src/main/cpp/rendererwrapper.cpp \
                   src/main/cpp/renderer.cpp \
                   src/main/cpp/ShaderProgram.cpp \
                   src/main/cpp/SimpleShaderProgram.cpp \
                   src/main/cpp/NativeOpenGLShaderPrograms.c
LOCAL_STATIC_LIBRARIES := libcurl
LOCAL_LDLIBS := -llog -lGLESv2 -landroid

include $(BUILD_SHARED_LIBRARY)

################################