猿问

Android NDK:调用 JNI GetMethodID 时出现未决异

我正在构建一个使用 NDK 和 Java 的 Android 应用程序。该应用程序在调试模式下运行良好。但是当我尝试构建发布 apk 时。它开始崩溃。调试release APK后我发现


JNI 在应用程序中检测到错误:调用 JNI GetMethodID 时出现未决异常 java.lang.ClassNotFoundException:未找到类“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 线程或类似的东西。我尝试过,但没得到


我缺少什么?..谢谢


哈士奇WWW
浏览 89回答 1
1回答

湖上湖

调试版本和发布版本之间的典型区别是后者打开 ProGuard 混淆。这意味着许多类和方法的名称会自动更改。大概,这就是班级里发生的事情吧example.motion.MotionDetectionReturnValue。简单的解决方法是保留 JNI 中涉及的类和方法的名称,而不进行混淆。更先进的技术也可以保护这些类
随时随地看视频慕课网APP

相关分类

Java
我要回答