【发布时间】:2017-08-15 22:06:34
【问题描述】:
public class MyOpaqueBasedJSONDict implements IMyJSONDict {
private final long _myNativeCPPObj;
...
public IMyJSONDict getMyJSONObj(String keyName) {
long retVal = nativeGetJSOBObject(_myNativeCPPObj,keyName);
return (new MyOpaqueBasedJSONDict(retVal));
}
native implementation
NIEXPORT jlong JNICALL
Java_com_hexample_myndkapplication_MyOpaqueBasedJSONDict_nativeGetJSOBObject(JNIEnv *env,
jobject instance,
jlong myNativeCPPObj,
jstring keyName_) {
const char *keyName = env->GetStringUTFChars(keyName_, 0);
Json::Value* nativeCppJson_ptr = reinterpret_cast<Json::Value*> (myNativeCPPObj);
Json::Value& map = *nativeCppJson_ptr;
Json::Value& jsonVal = map[keyName];
env->ReleaseStringUTFChars(keyName_, keyName);
return (jlong) &jsonVal;
}
我不明白我为什么会得到
在应用程序中检测到 JNI 错误:使用了无效的 jobject 0xb4019a80 08-16 03:25:56.785 20537-20537/com.hexample.myndkapplication A/艺术: art/runtime/java_vm_ext.cc:410] 从长 com.hexample.myndkapplication.MyOpaqueBasedJSONDict.nativeGetJSOBObject
任何线索如何调试 ndk 中的无效内存错误。我对 Android 和 ndk 开发还很陌生。
【问题讨论】:
标签: android-ndk