2012-03-21 2 views
1

私は現在、GingerbreadコードをICSに移植しています。 CとJavaの間の通信はGingerbreadで適切に行われます。しかし、ICSでも同じことが起こります。把握することはできません。JNI getmethodIDは、ICSのみで、ジンジャーブレッドではNULLを返します。

ICS jniの主な変更点は何ですか?

私の現在の問題は、クラスインスタンスし1.Get

とグローバル参照に変換し、それを保存します。

jclass myWrapperClass = (*env)->FindClass(env,"com/test/mypackage/Wrapper"); 

    if (voipWrapperClass == NULL) { 

    // error - handling and returns 

    } 

    WrapperClass = (jclass)(*env)->NewGlobalRef(env,myWrapperClass); 

2.JNI呼び出しから、フローはスタックの下に行き、jniにコールバックを返します。 JNIからJavaへの関数呼び出し

void response(void* ptr, int result){ 

    JNIEnv *envPtr= NULL; 

    JavaVM* vmPtr= p_pdb->vm; 

    if ((*vmPtr)->GetEnv(vmPtr,(void**) &envPtr, JNI_VERSION_1_4) == JNI_EDETACHED) { 

     (*vmPtr)->AttachCurrentThread(vmPtr,(void**)&envPtr,NULL); 

    } 

    if (ptr->WrapperClass == NULL) { 

     // error- handling and return 
    } 

    RespMethodId = (*envPtr)->GetMethodID(envPtr,ptr->WrapperClass, "resp","(Z)V"); 

    // this method is always 0 ... prev for gingerbread it returned a valid id.. 

    } 

さらに進めていく方法を教えてください。

+0

「WrapperClass =(jclass)(* env) - > NewGlobalRef(env、WrapperClass);が間違っています。 '。それはNewGlobalRef(myWrapperClass)でなければならないでしょう – jogabonito

+0

[ICS-JNI getmethodIDがNULLを返す]の可能な複製(http://stackoverflow.com/questions/9772645/ics-jni-getmethodid-returns-null) – EJP

+0

@jogabonito ya sorry ..私もtを変えました..でもそれでも0を返します... – Indhu

答えて

0

私は最後に解決策を見つけました。私はアンドロイドコードベース(2.3.3)で自分のコードをコンパイルしていましたが、別の共有ライブラリを構築して別のライブラリを構築する必要がある場合はICSからコンパイルしました。そうでなければframeworksフォルダにコードを置きます。これは問題を解決します。 :)

+0

問題を解決するには? – EJP

関連する問題