调用JNI GetMethodID时出现挂起异常java.lang.ClassNotFoundException

调用JNI GetMethodID时出现挂起异常java.lang.ClassNotFoundException,java,android,c++,java-native-interface,Java,Android,C++,Java Native Interface,我正在开发一个android库(.aar),它主要包含本机代码和一些java代码,主要用于为应用程序代码提供java接口 我有一个使用库的演示应用程序,一切都很好 现在我给这个图书馆一个应该是OEM的人。他们正在开发一个利用这个库的(系统)应用程序。在这种情况下,本机库在以下代码中引发异常 shapeClass = env->FindClass("xx/yy/zz/Shape"); addMethod = env->GetMethodID(shapeClass, "addPoint"

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

我有一个使用库的演示应用程序,一切都很好

现在我给这个图书馆一个应该是OEM的人。他们正在开发一个利用这个库的(系统)应用程序。在这种情况下,本机库在以下代码中引发异常

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接口从java包装器代码调用的。因此,(Shape)类不可能未加载,因为Shape类和调用类位于同一个库(相同的.aar文件)中

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

android:extractNativeLibs=”false” 

检查apk文件是否确实位于
/system/app/AA/AA.apk
而不是其他位置。是的,apk位于该位置