当前位置: 首页 > 知识库问答 >
问题:

Android NDK:调用JNI GetMethodID时出现挂起的异常java.lang.ClassNotFoundException:未找到类

米丰
2023-03-14

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

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);

共有1个答案

方斌
2023-03-14

debug和release构建之间的典型区别是后者启用ProGuard混淆。这意味着许多类和方法的名称会自动更改。可能这就是example.motion.motionDetectionReturnValue类发生的情况。简单的修复方法是保留JNI中涉及的类和方法的名称,而不混淆。参见https://stackoverflow.com/A/24923279/192373。

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

 类似资料: