一、问题描述
二、问题排查
三、解决方案
一、问题描述
----
NDK 开发 , 在调用 JNI 对应 Java 类时 , 静态代码块中 System.loadLibrary 语句调用时 , 报如下错误..., 就是 打包的 so 动态库没有找到 , 有很多问题都会导致该错误 , 如 build.gradle 中没有配置对应的 CPU 架构 , NDK 中调用的外部动态或静态依赖库的 CPU 架构不匹配...;
这里我遇到的问题是 主应用 与 依赖库的 CPU 架构不匹配导致 ;
创建项目时选择如下选项 , 自动生成的 build.gradle 中默认生成 arm64-v8a, armeabi-v7a, x86..., 在 static 静态代码块中的 System.loadLibrary 调用时就会报错 ;
该应用生成了 arm64-v8a 架构的动态库 , 但是生成的不全 , 导致上述问题 , 解决方案是干脆不生成...arm64-v8a 的动态库 ;
下图是依赖库生成的 so 动态库 :
目前的主流手机都是 arm64-v8a 或 armeabi-v7a 手机 , x86 和 x86_64 手机很少 , 一般不进行匹配