JNI getmethodID возвращает NULL только в ICS, но не в Gingerbread

1

В настоящее время я переношу код Gingerbread на ICS. Связь между C и Java происходит правильно в Gingerbread. Но то же самое происходит в ICS. Не в состоянии понять.

Каковы основные изменения в ICS jni.?

Моя текущая проблема,

1. Установите экземпляр класса и преобразуйте его в глобальную ссылку и сохраните.

  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) вместо
  • 0
    возможный дубликат ICS - getmethodID JNI возвращает NULL
Показать ещё 1 комментарий
Теги:
jni
android-4.0

1 ответ

0

Я нашел решение наконец. Я использовал для компиляции моего кода в базе данных Android (2.3.3), но из ICS, если вам нужно создать отдельную разделяемую библиотеку, используйте NDK и создайте отдельную библиотеку. Остальное поместите код в фреймворк. Это решает проблему. :)

  • 0
    Решает проблему как?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню