gpt4 book ai didi

java - JNI GetMethodID 调用时出现未决异常 java.lang.ClassNotFoundException

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:21 24 4
gpt4 key购买 nike

我正在开发一个 android 库 (.aar),它主要包含 native 代码和一些 java 代码,主要用于为应用程序代码提供 java 接口(interface)。

我有一个使用该库的演示应用程序,一切正常。

现在我给这个图书馆一个应该是 OEM 的人。他们正在开发一个利用这个库的(系统)应用程序。在他们的例子中, native 库在以下代码中抛出异常。

shapeClass = env->FindClass("xx/yy/zz/Shape");
addMethod = env->GetMethodID(shapeClass, "addPoint", "(FF)V");

这是他们得到的错误

JNI DETECTED ERROR IN APPLICATION: JNI GetMethodID called with pending exception java.lang.ClassNotFoundException: Didn't find class "xx.yy.zz.Shape" on path: DexPathList[[zip file "/system/app/AA/AA.apk"],nativeLibraryDirectories=[/system/app/AA/lib/arm, /system/app/AA/AA.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /system/lib, /vendor/lib]]

我用谷歌搜索并没有发现系统应用程序有什么不同。系统应用程序环境与常规应用程序环境有何不同?

请注意,以上两行代码是通过 JNI 接口(interface)从 java 包装器代码中调用的。所以 (Shape) 类不可能没有加载,因为 Shape 类和调用类在同一个库中(同一个 .aar 文件)。

最佳答案

系统应用程序必须将其 native 库保存在/system/lib 或/vendor/lib 目录中。在某些情况下,原生库可能嵌入到 APK 文件中,但应用 list 必须声明

android:extractNativeLibs=”false” 

关于java - JNI GetMethodID 调用时出现未决异常 java.lang.ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com