首先定义了一个类
class device
{
String strDeviceName;
int i;
}
然后定义一个本地函数 public native int ListDev(device[]  devList)然后在本地用c实现:
JNIEXPORT jint JNICALL Java_com_NDKTSPtest_JniTspTest_Listdev
(JNIEnv *e, jobject j, jobjectArray devList)
{jint dwRet;
jobject dev1 = (*e)->GetObjectArrayElement(e, devList, 0);;
     jclass dev = (*e)->FindClass(e, “com/studio/android/device”);        
jfieldID strDeviceName = (*e)->GetFieldID(e, dev, "strDeviceName", "Ljava/lang/String;");
jfieldID iType = (*e)->GetFieldID(e, dev, "iType", "I");
  jstring jstr = (*e)->NewStringUTF(e,DeviceName);
  (*e)->SetObjectField(e, dev1, strDeviceName, jstr);
  (*e)->SetIntField(e, dev1, iType, UK_SDKEYID);
  dwRet =RT_OK;
  (*e)->ReleaseStringUTFChars(e, jstr, DeviceName);
return dwRet;
}
总是有问题 这个取得类数组里面的引用类型对吗?总感觉有点问题 但又不知道问题处在哪儿?logcat里面提示
:06-14 08:58:15.805: DEBUG/dalvikvm(719): Added shared lib /data/data/com.NDKTSPtest/lib/libmyjni.so 0x43597d18
06-14 08:58:15.828: DEBUG/dalvikvm(719): No JNI_OnLoad found in /data/data/com.NDKTSPtest/lib/libmyjni.so 0x43597d18
06-14 08:58:15.854: DEBUG/dalvikvm(719): +++ not scanning '/system/lib/libwebcore.so' for 'InitParams' (wrong CL)
06-14 08:58:15.864: DEBUG/dalvikvm(719): +++ not scanning '/system/lib/libmedia_jni.so' for 'InitParams' (wrong CL)
06-14 08:58:15.874: DEBUG/dalvikvm(719): +++ not scanning '/system/lib/libwebcore.so' for 'ListUK' (wrong CL)
06-14 08:58:15.885: DEBUG/dalvikvm(719): +++ not scanning '/system/lib/libmedia_jni.so' for 'ListUK' (wrong CL)
06-14 08:58:15.885: WARN/dalvikvm(719): JNI WARNING: illegal start byte 0xf0
06-14 08:58:15.885: WARN/dalvikvm(719):              string: 'ð5ZC'
06-14 08:58:15.893: WARN/dalvikvm(719):              in Lcom/NDKTSPtest/JniTspTest;.ListUK ([Lcom/hengbao/tspdatastructure/DEVICE;)I (FindClass)
06-14 08:58:15.893: INFO/dalvikvm(719): "main" prio=5 tid=3 NATIVE
06-14 08:58:15.893: INFO/dalvikvm(719):   | group="main" sCount=0 dsCount=0 s=0 obj=0x40018e70
06-14 08:58:15.893: INFO/dalvikvm(719):   | sysTid=719 nice=0 sched=0/0 handle=-1097671524
06-14 08:58:15.893: INFO/dalvikvm(719):   at com.NDKTSPtest.JniTspTest.ListUK(Native Method)
应该主要是这段的问题:
06-14 08:58:15.885: WARN/dalvikvm(719): JNI WARNING: illegal start byte 0xf0
06-14 08:58:15.885: WARN/dalvikvm(719):              string: 'ð5ZC'
06-14 08:58:15.893: WARN/dalvikvm(719):              in Lcom/NDKTSPtest/JniTspTest;.ListUK ([Lcom/hengbao/tspdatastructure/DEVICE;)I (FindClass)
06-14 08:58:15.893: INFO/dalvikvm(719): "main" prio=5 tid=3 NATIVE
但是不知道怎么改啊? 那位帮帮忙啊!