美文网首页
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导入 异常处理

    环境 Android Studio 4.1.2 Gradle 6.5 NDK 21.1 异常信息 问题来源 旧的导...

  • android ndk 开发2

    前言 看android ndk 1 版本。 生成so库 先配置你需要生成的CPU架构,在build.gradle中...

  • 百度导航so不支持64位cpu

    使用so文件过程中,假如工程中已经导入不同版本的处理器so文件。百度地图基础地图也支持了 只需 把所有版本so 文...

  • Android NDK: mips64el-linux-andr

    异常 NDK版本r17 解决方法 降NDK版本为r16 更改本地NDK路径(推荐方法一)

  • jni遇到的几个问题

    jni异常处理 在android ndk开发过程中,调用java对象方法可能会抛异常,如果在ndk层中不做任何处理...

  • gradle问题汇总

    1.导入项目版本兼容性问题 1.项目的build.gradle 解决方法:1.下载导入项目中的gradle版本2....

  • Android studio导入so包异常

    Androidstudio导入so包异常: Java.lang.UnsatisfiedLinkError: Cou...

  • NDK历史版本下载地址

    背景 在更新NDK版本后,出现编译报错: 按照网上说的,要升级gradle,但是老项目升级gradle后,出现更多...

  • Android JNI & NDK

    Android JNI & NDK 参考资料 谷歌官方参考资料 gradle-experimental版本与配置 ...

  • JNI 环境

    NDK版本低问题及系统崩溃信息找不到*.so库解决方案 1.引入外部ndk 在src/main/创建jniLibs...

网友评论

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

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