美文网首页
解决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