Android JNI????????
???????????? ???????[ 2013/6/5 10:01:05 ] ????????
?????й?JNI??????????????????Χ??Android?????У?JNI???????C??C++????????????д????JNI??????C?????????????.C??C++?????Щ?????????? Android?????JNI??????C????C++??д???
????Android?????м??????????????????C++??????????????.cpp??????Android Framework??OpenCore??Webkit??SQLite???????C++??????????ú?????Android?????STL?????????C??????????????????飬??C++???????????string??????????????
????1. ???????дC??C++???????
????????Android123???Java??unicode???????jni?е?utf8?????????????jstring?????????????????jni??java???????????????????
????C?????:
????JNIEXPORT jstring JNICALL Java_Android123_CwjC (JNIEnv *env?? jobject obj?? jstring string)
????{
????const char *strUTF = (*env)->GetStringUTFChars(env?? string?? 0);
????char szBuffer[255];
????strcpy(szBuffer?? strUTF);
????(*env)->ReleaseStringUTFChars(env?? string?? strUTF);
????return (*env)->NewStringUTF(env?? szBuffer);
????}
????C++?????:
????JNIEXPORT jstring JNICALL Java_Android123_CwjCpp (JNIEnv *env?? jobject obj?? jstring string)
????{
????const char *strUTF = env->GetStringUTFChars(string?? 0);
????char szBuffer[255];
????strcpy(szBuffer?? strUTF);
????env->ReleaseStringUTFChars(string?? strUTF);
????return env->NewStringUTF(szBuffer);
????}
????????????????????????????????C++????????????
????2. JNI???????????
????JNI?д??????????????jobjectArray ????????????????????jintArray?????????jbooleanArray??????г???jstringArray????????????й????????????????????′ε? Android JNI????????? ?????? ??????????????????????????????????0???????????????????з?????????????JNI??????????????GetArrayLength???????????Java????????????????飬??JNI?н???????????????????????θ???Java?????????
????JNIEXPORT jint JNICALL Java_Android123_CwjTest (JNIEnv *env?? jobject obj?? jintArray array)
????{
????int sum = 0;
????jsize length = (*env)->GetArrayLength(env?? array); //??????鳤??
????if(length==0) //???????????????????????????
????return 0;
????jint *pointer = (*env)->GetIntArrayElements(env?? array?? 0); //??????????
????for (int i=0; i
????{
????sum += pointer[i]; //?????????????
????}
????(*env)->ReleaseIntArrayElements(env?? array?? pointer?? 0); //?????棬???????????
????return sum;
????}
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11