Android ndk 未定义对'的引用;SSL#u new';Android NDK的构建

Android ndk 未定义对'的引用;SSL#u new';Android NDK的构建,android-ndk,openssl,ndk-build,Android Ndk,Openssl,Ndk Build,当我尝试用libssl.so和libcrypto.so上的本机代码构建android应用程序时,我得到了“未定义的SSL\u new引用”链接错误。 我在android.mk和application.mk中做错了什么 两个mk文件都位于\home\project\u root\app\src\main\jni。 这里是android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := myWebCr

当我尝试用libssl.so和libcrypto.so上的本机代码构建android应用程序时,我得到了“未定义的SSL\u new引用”链接错误。 我在android.mk和application.mk中做错了什么

两个mk文件都位于\home\project\u root\app\src\main\jni。 这里是android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := myWebCrawler
LOCAL_SHARED_LIBRARIES := ../libs/$(TARGET_ARCH_ABI)/libssl.so ../libs/$(TARGET_ARCH_ABI)/libcrypto.so

LOCAL_SRC_FILES := utils/error_codes.c utils/list.c  yetAdditionalSources.c    

LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
My application.mk包含一行:

APP_ABI := armeabi armeabi-v7a
在我的项目文件夹中,我有以下子文件夹: \home\project\u root\app\src\main\libs\armeabi, \home\project\u root\app\src\main\libs\armeabi-v7a, \home\project\u root\app\src\main\libs\arm64-v8a, \home\project\u root\app\src\main\libs\mips64

它们每个都有libssl.so和libcrypto.so的副本。 在路径
$(NDK\u ROOT\platforms\android-21\$(TARGET\u ARCH\u ABI)\usr\lib)
为了所有的拱门。(x86、mips、arm…)

我做错了什么?为什么ndk build找不到.so文件

另外,当我从终端调用ndk构建时,我得到一个关于arm架构的错误 目标“/home/WebCrawler/app/src/main/obj/local/armeabi/libWebCrawler.so”的配方失败

当在android studio中单击build按钮时,它指的是mips
make:**[/home/WebCrawler/app/build/intermediates/ndkBuild/debug/obj/local/mips64/libWebCrawler.so]错误1
即使Application.mk在说明中没有提到mips
app\u ABI:=armeabi-v7a


如果您需要更多信息来帮助我制作mk,请务必询问。

另请参阅。我鄙视Android的构建系统。它改变了太多的东西,而且它的文档记录得很差。你可能会在这个问题上浪费几个小时。已经花了一个多星期的时间试图理解android.mk中的不同变量,并从源代码中为android构建ssl…所以,诀窍是提出一个新模块,重命名ssl?
。/libs/$(TARGET\u ARCH\u ABI)/libssl。所以
-是的,这会给你带来麻烦
zygote
,它是Android的
init
,将加载OpenSSL的底层版本。您的OpenSSL版本将永远不会加载,因为已加载Android版本。您应该做包装器共享对象的事情。另请参见OpenSSL wiki上的。另请参见。我鄙视Android的构建系统。它改变了太多的东西,而且它的文档记录得很差。你可能会在这个问题上浪费几个小时。已经花了一个多星期的时间试图理解android.mk中的不同变量,并从源代码中为android构建ssl…所以,诀窍是提出一个新模块,重命名ssl?
。/libs/$(TARGET\u ARCH\u ABI)/libssl。所以
-是的,这会给你带来麻烦
zygote
,它是Android的
init
,将加载OpenSSL的底层版本。您的OpenSSL版本将永远不会加载,因为已加载Android版本。您应该做包装器共享对象的事情。另请参见OpenSSL wiki上的。