Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法加载libnative-activity.so当CMAKE_BUILD_TYPE设置为除debug之外的任何值时_Android_Cmake_Android Ndk - Fatal编程技术网

Android 无法加载libnative-activity.so当CMAKE_BUILD_TYPE设置为除debug之外的任何值时

Android 无法加载libnative-activity.so当CMAKE_BUILD_TYPE设置为除debug之外的任何值时,android,cmake,android-ndk,Android,Cmake,Android Ndk,将NDK更新到版本19后,我的应用程序在启动时抛出一个未满足的链接错误,并显示消息“无法加载本机库”/data/app/com.company.appname-SkXFrxADQ610MNjJr7Ak3A=/lib/arm64/libnative activity.so:“null”,然后终止 有人知道是什么导致了这个错误,以及如何解决它吗 注: 1) 当CMAKE\u BUILD\u TYPE设置为Debug时,无论优化(-O)级别或Debug\u模式设置如何,一切正常 2) 这在NDK 19

将NDK更新到版本19后,我的应用程序在启动时抛出一个
未满足的链接错误
,并显示消息“无法加载本机库
”/data/app/com.company.appname-SkXFrxADQ610MNjJr7Ak3A=/lib/arm64/libnative activity.so:“null”
,然后终止

有人知道是什么导致了这个错误,以及如何解决它吗

注:

1) 当
CMAKE\u BUILD\u TYPE
设置为
Debug
时,无论优化(
-O
)级别或
Debug\u模式设置如何,一切正常

2) 这在NDK 19之前没有发生过

3) 我确实调用了app_dummy(),即使该调用已被弃用且不是必需的

4) 该应用程序使用android_native_app_glue.h/.c,即完全没有Java

5) 异常libname为“本机活动”,而funcname为“ANativeActivity_onCreate”

更新:


从谷歌网站上看,
ndk依赖项已被删除。我们认为,对于旧Android版本上的本机库加载问题,ReLinker是一个更好的解决方案。
我认为这是相关的,猜测ndk依赖于本机活动,但作为本机glue应用程序,它不包含任何java代码,如何从代码中应用重新链接?

fread_unlocked
在Android p之前不可用。您不能在
minSdkVersion
低于28的应用程序中使用该功能


除非您给CMake一个不正确的
ANDROID\u平台
,否则不应该编译该符号,因为该符号不可用于链接。如果您正在使用gradle和
externalNativeBuild
构建应用程序,则gradle会根据您的
minSdkVersion
为您配置此应用程序。如果您没有,您可能应该切换到使用它,因为它提供了这些保护措施。

错误日志还有其他内容吗?这看起来不像是一条完整的错误消息。您好,记录器显示:NativeActivity LoadNativeLibrary(“/data/app/com.company.appname WlBL EABTKGAAZKUTCHRW==/lib/arm64/libnative activity.so”)失败:dlopen失败:找不到引用的符号“fread_unlocked”“/data/app/com.company.appname.LocalTesting WlBL EabtKgAAZKkuTchRw==/lib/arm64/libnative activity.so”很抱歉最后的评论,该警告也显示在调试中(应用程序工作的地方)(我没有使用fread_解锁)什么警告?UnsatisfiedLinkError不是警告,它是一个硬错误。谢谢,但在调查之后,该警告也会出现在调试版本中,即应用程序工作的地方(这并不意味着它没有被隐式使用。我使用的是gradle和externalNativeBuild,minSdkVersion设置为23。我没有摆弄ANDROID_平台。我想“fread_”已经解锁了“警告是不相关的,因为在我运行的调试版本中显示了相同的警告。我想它与ndk依赖和来自CMAKE_build_类型的某些标志有关。