Flutter插件链接到本机共享库失败(RPATH不起作用)

时间:2018-07-13 15:34:50

标签: android cmake java-native-interface flutter native

我正在为本机libopenocf.so(在C中)构建Flutter插件。我写了一个JNI包装器libopenocflutter.so,它链接到libopenocf.so。构建工作并将所有共享库放置在apk中的正确位置。但是,从libopenocflutter.so到libopenocf.so的链接是开发环境的绝对路径,因此,当我从Java加载libopenocflutter.so时,我得到了dlopen错误lib。

例如,我尝试根据自己从谷歌搜索中发现的内容在CMakeLists.txt中使用各种RPATH指令

add_library(openocflib已共享导入) set_target_properties(openocflib属性IMPORTED_LOCATION
      “ $ {distribution_DIR} / openocf / lib / $ {ANDROID_ABI} /libopenocf.so”) SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH“ $ ORIGIN :::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::“)SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) add_library(openocflutter已共享... c文件...) target_link_libraries(openocflutter openocflib android日志)

我尝试了许多变体,但没有任何效果。链接总是这样结束(来自readelf -d):

0x0000000000000001(需要)共享库:[/ Users / gar / openocflutter / android / src / main / cpp /../../../ libs / openocf / lib / arm64-v8a / libopenocf.so] < / p>

...

0x000000000000000e(SONAME)库soname:[libopenocflutter.so]

有人知道这个秘密吗?

谢谢

格雷格

0 个答案:

没有答案