A.java
class A {
int aa;
byte [] bb;
static {loadlibrary(...);}
native void func();
}
native.cpp
JNIEXPORT void JNICALL func(JNIEnv *e, jobject self)
{
jclass cls = e->GetObjectClass(self);
jfieldID aaId = e->GetFieldID(cls, "aa", "I");
jfieldID bbId = e->GetFieldID(cls, "bb", "[B");
jint aa = e->GetObjectField(self, aaId);
jbytearray bb = e->GetObjectField(self, bbId);
....
}
만약 String 변수를 사용하는경우
jstring str = e->GetObjectField(self, fid); const char * pcName = _env->GetStringUTFChars(jstr, NULL); strcpy(user.caName, pcName); e->ReleaseStringUTFChars(jstr, pcName); // ReleaseStringUTFChars 반드시 해준다.
밑의 표는 GetFieldID 의 3번째 인자에 넣을 값이다.
Type Signature | Java Type |
---|---|
Z | boolean |
B | byte |
C | char |
S | short |
I | int |
J | long |
F | float |
D | double |
L fully-qualified-class ; | fully-qualified-class |
[ type | type[] |
( arg-types ) ret-type | method type |
'develop > android' 카테고리의 다른 글
특정 모듈만 build 하기 (0) | 2014.10.14 |
---|---|
JAR에 포함된 apache log4j를 android용으로 변경 (0) | 2014.03.27 |
onConfigurationChanged 호출되지 않을 때 (0) | 2014.01.15 |
Recents App List에서 실행됐는지 체크 (0) | 2013.12.10 |
Windows에서 git로 안드로이드 소스 받기 (0) | 2013.07.29 |