将NDK更新到版本19后,我的应用程序抛出UnsatisfiedLinkError
,并显示以下消息:“无法在开始时加载本机库"/data/app/com.company.appname-SkXFrxADQ610MNjJr7Ak3A==/lib/arm64/libnative-activity.so": null"
,然后终止。
任何人都知道导致此错误的原因以及如何解决该错误?
注释:
1)将CMAKE_BUILD_TYPE
设置为Debug
时,无论优化级别(-O
)或DEBUG_MODE
设置如何,一切正常。
2)这不是在NDK 19之前发生的
3)即使调用已被弃用且不必要,我也会调用app_dummy()
4)该应用程序使用android_native_app_glue.h / .c,即完全没有Java。
5)异常libname是“ native-activity”,而funcname是“ ANativeActivity_onCreate”
更新:
在NDK r19 revision history谷歌说ndk-depends has been removed. We believe that ReLinker is a better solution to native library loading issues on old Android versions.
中,我认为这是相关的,猜测ndk-depends保留了本机活动,但是由于本机胶水应用程序不包含任何Java代码,我该如何应用< em> ReLinker 来自代码?
答案 0 :(得分:1)
fread_unlocked
直到Android P才可用。您不能在minSdkVersion
低于28的应用程序中使用该功能。
除非您给CMake输入了不正确的ANDROID_PLATFORM
,否则不应编译该符号,因为该符号将不可链接。如果要使用gradle和externalNativeBuild
构建应用程序,则gradle将根据minSdkVersion
为您配置此应用。如果不是这样,您可能应该切换到使用它,因为它提供了这些保护措施。