有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android NDK:JNI GetMethodID被调用,带有挂起的异常java。lang.ClassNotFoundException:未找到类

我正在构建一个使用NDK和Java的安卓应用程序。 该应用程序在调试模式下工作正常。但当我尝试构建发布apk时。它开始崩溃。 在调试发布版APK之后,我发现

JNI DETECTED ERROR IN APPLICATION: JNI GetMethodID called with pending exception java.lang.ClassNotFoundException: Didn't find class "example.motion.MotionDetectionReturnValue"

这是我父亲的问题。cpp类

jobject object;
    jmethodID constructor;
    jclass cls;

    cls = env->FindClass("example/motion/MotionDetectionReturnValue");
    constructor = env->GetMethodID(cls, "<init>", "(DDDDDDD)V");
    object = env->NewObject(cls, constructor, avg.x, avg.y, totalFraction, bottomRightFraction, bottomLeftFraction, topRightFraction, topLeftFraction);

我应该把它附加到java线程或类似的东西上吗。我试过了,但没有成功

我错过了什么。。谢谢


共 (1) 个答案

  1. # 1 楼答案

    调试版本和发布版本之间的典型区别在于后者启用ProGuard模糊处理。这意味着许多类和方法的名称会自动更改。很可能,类example.motion.MotionDetectionReturnValue就是这样发生的。简单的修复方法是保留JNI中涉及的类和方法的名称,而不进行混淆。见https://stackoverflow.com/a/24923279/192373

    更先进的技术也允许保护这些类