AS使用cmake方式运行找不到.so问题

AS使用cmake方式运行找不到.so问题

这真的是很无语的一个SB问题,不知道这个cmake和gradle是如何协同工作的,居然必须在build.gradle文件中指定的目录下且是一级目录下放.so文件,不然的话就 居!然!找!不!到!

  1. 必须在build.gradle中写上,这是我在尝试换其他目录行不行,别直接复制,需要改成自己的目录

    sourceSets.main {
        jniLibs.srcDirs('src/main/jni', 'src/main/jni/armeabi-v7a/lib')
    }
    
  2. 把要用的.so放在指定目录的一级目录下,就是上述的src/main/jni/${ANDROID_ABI}/下,举个例子就是

    • src/main/jni/armeabi-v7a/libnn.so路径下就OK了
    • 放在这里是不行:src/main/jni/armeabi-v7a/lib/libnn.so,即使我在build.gradle中好像指定了这个路径,但是这样真不work!
  3. CMakeLists.txt文件就按照我们指定的路径找到.so文件即可,头文件的查找可以和.so分离开,这个没关系,也就是说头文件的路径和.so文件的路径没关系,在 CMakeLists.txt中指定好就可以了.

    add_library(mtnn SHARED IMPORTED)
    set_target_properties(mtnn PROPERTIES IMPORTED_LOCATION
                          ${CMAKE_SOURCE_DIR}/src/main/jni/${ANDROID_ABI}/libmtnn.so)
    include_directories(${CMAKE_SOURCE_DIR}/src/main/jni/${ANDROID_ABI}/include/)
    

    可以看到上述中的include_directoriesset_target_properties指定的路径不一样,这个没问题.

下图是目录结构:

只有放在armeabi-v7a的根目录下才可以
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容