我正在構建一個使用 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
提交
取消