美文网首页
解决Android Studio 报错 “library "li

解决Android Studio 报错 “library "li

作者: justinjing | 来源:发表于2023-11-09 13:47 被阅读0次

NCNN 是腾讯提供的移动端框架 非常适合在手机玩,下面是一个安卓的demo 以便更好的熟悉和使用NCNN。
下载地址:https://github.com/chentyjpm/MobileNetSSD_Demo_AndroidNCNN

问题1:最近在运行MNN的一个工程,ndk从17升级到21后, 出现"android dlopen failed library libomp.so not found"错误,这通常是因为动态库文件libomp.so没有被正确加载导致的。

解决方案也很粗暴,直接将NDK里libomp.so拷贝到自己工程目录'src/main/jniLibs' 下,即可解决问题。

比如我使用的是NDK版本是:android-ndk-r21e,可直接从ndk r21中拷贝一份libomp.so到手机目录上
libomp.so可以在ndk里面找一下,所在目录大概是

android-ndk-r21d/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/9.0.8/lib/linux/aarch64/libomp.so

至于拷贝哪个处理器版本,需要根据你的平台选择,一般在abiFilters会指定 "armeabi-v7a", "arm64-v8a"平台,拷贝对应的版本即可;如果不存在,可以复制其他平台的libomp.so代替试试。

拷贝的目的地址,由jniLibs.srcDirs指定so库的位置:
增加路径

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar','*.so'])
}
新增文件夹
jniLibs.srcDirs = ['src/main/jniLibs', 'libs']

问题2:Android Studio命令行编译提示Unable to make field private final java.lang.String java.io.File.path accessib

解决方案:修改gradle.properties文件

工程文件

新增下面代码:

  -Dfile.encoding=UTF-8 --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMEDz

再次编译(gradlew.bat build --info),结果如下:

BUILD SUCCESSFUL in 365ms

问题3:Error:CMake '3.10.2' was not found in PATH or by cmake.dir property. CMake '3.10.2' found in SDK did

解决方案:
下载CMake


CMAKE

然后配置:

 externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }

最终demo效果


NCNN

相关文章

网友评论

      本文标题:解决Android Studio 报错 “library "li

      本文链接:https://www.haomeiwen.com/subject/djmcwdtx.html