我正在构建一个使用 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 线程或类似的东西。我尝试过,但没得到我缺少什么?..谢谢
1 回答
湖上湖
TA贡献2003条经验 获得超2个赞
调试版本和发布版本之间的典型区别是后者打开 ProGuard 混淆。这意味着许多类和方法的名称会自动更改。大概,这就是班级里发生的事情吧example.motion.MotionDetectionReturnValue
。简单的解决方法是保留 JNI 中涉及的类和方法的名称,而不进行混淆。
更先进的技术也可以保护这些类
添加回答
举报
0/150
提交
取消