对一些小的知识点做一点记录;
里面用了一些伪代码;
java:
void test_java(){
String strKey[] = new String[infoMap.size()];
String strVal[] = new String[infoMap.size()];
//给字符串填写数据;
native_test(strKey, strVal);
}
"native_test", "([Ljava/lang/String;[Ljava/lang/String;)V",
(void*)settest
static void
settest(JNIEnv* env, jobject thiz, jobjectArray jarrkey,
jobjectArray jarrval) {
jsize keynum = env->GetArrayLength(jarrkey);
jsize jstrsize = 0;
jsize jtotalsize = 0;
char** pkey = (char**) malloc(keynum * sizeof(char*));
char** pval = (char**) malloc(keynum * sizeof(char*));
if (jarrkey != NULL) {
LOGV("setAppInfo key nums %d \n", keynum);
for (int j = 0; j < keynum; j++) {
jstring jkeystr = NULL;
jkeystr = (jstring)env->GetObjectArrayElement(jarrkey, j);
if (jkeystr != NULL) {
jstrsize = env->GetStringUTFLength(jkeystr);
jtotalsize += jstrsize;
pkey[j] = (jkeystr == 0) ? 0 : (char*)env->GetStringUTFChars(jkeystr, 0);
}
jstring jvalstr = NULL;
jvalstr = (jstring)env->GetObjectArrayElement(jarrval, j);
if (jvalstr != NULL) {
jstrsize = env->GetStringUTFLength(jvalstr);
jtotalsize += jstrsize;
pval[j] = (jvalstr == 0) ? 0 : (char*)env->GetStringUTFChars(jvalstr, 0);
//LOGV("setAppInfo index %d key %s size%d \n", j, pval[j], jstrsize);
}
}
}
}
红色部分是重点 关注的,