2011年8月8日 星期一

Android NDK 寫法和注意事項

1. 如果沒有做自定的 JNI export table, 預設的 export table 和 package name 以及 activity name 息息相關
package name : com.android.animal
activity name : DogActivity
native functions :
void funcA(void);
int funcB(int bin);
int[] funcC(int[] cin);

JNI export functions:
JNIEXPORT void JNICALL
Java_com_android_animal_DogActivity_funcA
(JNIEnv * env, jobject obj);
JNIEXPORT jint JNICALL
Java_com_android_animal_DogActivity_funcB
(JNIEnv * env, jobject obj, jint bin);
JNIEXPORT jintArray JNICALL
Java_com_android_animal_DogActivity_funcA
(JNIEnv * env, jobject obj, jintArray jarra);

2. array 可以轉換成 C pointer, 同時提供 array size
int *arra_ptr = (*env)->GetIntArrayElements(env, jarra, 0);
jsize sz = (*env)->GetArrayLength(env, jarra);

3. 重 build jni 之後, 必須要把 Android project clean & rebuild

沒有留言: