我正在構(gòu)建一個(gè)使用 NDK 和 Java 的 Android 應(yīng)用程序。該應(yīng)用程序在調(diào)試模式下運(yùn)行良好。但是當(dāng)我嘗試構(gòu)建發(fā)布 apk 時(shí)。它開(kāi)始崩潰。調(diào)試release APK后我發(fā)現(xiàn)JNI 在應(yīng)用程序中檢測(cè)到錯(cuò)誤:調(diào)用 JNI GetMethodID 時(shí)出現(xiàn)未決異常 java.lang.ClassNotFoundException:未找到類(lèi)“example.motion.MotionDetectionReturnValue”這是我的 .cpp 類(lèi)中的問(wèn)題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);我應(yīng)該將它附加到 java 線程或類(lèi)似的東西。我嘗試過(guò),但沒(méi)得到我缺少什么?..謝謝
1 回答

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
調(diào)試版本和發(fā)布版本之間的典型區(qū)別是后者打開(kāi) ProGuard 混淆。這意味著許多類(lèi)和方法的名稱(chēng)會(huì)自動(dòng)更改。大概,這就是班級(jí)里發(fā)生的事情吧example.motion.MotionDetectionReturnValue
。簡(jiǎn)單的解決方法是保留 JNI 中涉及的類(lèi)和方法的名稱(chēng),而不進(jìn)行混淆。
更先進(jìn)的技術(shù)也可以保護(hù)這些類(lèi)
添加回答
舉報(bào)
0/150
提交
取消