当前位置:   article > 正文

NDK开发,加载so库,运行崩溃JNI DETECTED ERROR IN APPLICATION: JNI RegisterNatives called with pending exception_jni registernatives called with pending exception

jni registernatives called with pending exception java.lang.classnotfoundexc

JNI DETECTED ERROR IN APPLICATION: JNI RegisterNatives called with pending exception java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx" on path: DexPathList[[zip file "/data/app/com.xxx.ndkdemo-sKdbYfzMstKNudU5YHhsJQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.ndkdemo-sKdbYfzMstKNudU5YHhsJQ==/lib/arm64, /data/app/com.xxx.ndkdemo-sKdbYfzMstKNudU5YHhsJQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]

一头雾水的搞了一天,国内资料不多,翻墙出去大部分开发者报的错不是JNI的classnotfound。下面这篇博客我看了五六遍才灵光一现,这位博主的解释是对的:JNI找不到你对应的java class。

https://blog.csdn.net/sy373466062/article/details/51887799

但是他没有详细写解决方案。。。所以我看完头发掉了一肩不知所云。。。

解决方案是这样的:

仔细看你报错的  Didn't find class "com.xxx.xxx" on path 红色字体,如果你用的是第三方框架的so库,那么在你的project视图下的main -> java 下面,新建一个报错的文件夹:

再把JNI映射java文件放进去,就是你引入so库的static{}的入口文件。

这里因为so是我自己打的,所以都用了同样的公司包名了。

 

如果你有C源码,那么打包的时候注意一下,入口的时候好好规范一下你的映射名,别写的太随意了。。。

 

 

掉了那么多头发,转载请注明,侵究哦~

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/158523
推荐阅读
相关标签
  

闽ICP备14008679号