美文网首页
NDK 高版本Gradle so导入 异常处理

NDK 高版本Gradle so导入 异常处理

作者: 小白cz | 来源:发表于2021-01-21 14:58 被阅读0次

    环境

    • Android Studio 4.1.2
    • Gradle 6.5
    • NDK 21.1

    异常信息

    More than one file was found with OS independent path 'lib/armeabi/xx.so'
    

    问题来源

    • 旧的导入方式,该方式会导致找到多个SO异常
    • 原因在于高版本Gradle工具会自动导入默认so库路径下所有文件(PS:默认so路径 jniLibs)
    • 以下导入方法会导致so重复
    add_library(xxx SHARED IMPORTED)
    set_target_properties(xxx PROPERTIES IMPORTED_LOCATION ${so的路径})
    target_link_libraries(native-lib xxx)
    

    解决方案

    # 对应下面项目结构图
    
    # 添加头文件路径
    include_directories("../include")
    
    # 添加编译参数 -L ,新增编译时SO搜索路径
    set(CMAKE_CXX_FLAGS "-L${CMAKE_SOURCE_DIR}/../jniLibs/arm64-v8a")
    
    # 由于SO会被默认导入,故不需要再手动导入SO,可以直接进行链接
    target_link_libraries(native-lib log my_util c++_shared)
    
    • 项目结构图


      pkg.png

    运行效果

    • jni接口


      jni.png
    • 运行结果


      log.png

    相关文章

      网友评论

          本文标题:NDK 高版本Gradle so导入 异常处理

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