android — java.lang.UnsatisfiedLinkError: для второго метода

Я пытаюсь вызвать собственный метод обратного вызова из IntentService, написанного на Java. Фрагмент кода в IntentService выглядит следующим образом:

private static native void native_notificationCallback();
public void somemethod(){
//some other code...
native_notificationCallback();
}

Еще один в отдельном классе —

private static native void native_initCallback();
public void somemethod(){
//some other code...
native_initCallback();
}

Это inteface.cpp —

void JNICALL Notification_initCallback(JNIEnv* env, jobject obj)
{
//code
}

void JNICALL Notification_notificationCallback(JNIEnv* env, jobject obj)
{
//code
}

void init(){
static const JNINativeMethod methods[] =
{
{"native_initCallback","()V",(void*)&Notification_initCallback},
{"native_notificationCallback","()V",(void*)&Notification_notificationCallback}
};

// Register the native hooks
if (env->RegisterNatives(cls, methods,sizeof(methods)/sizeof(methods[0])))
goto fail;
}

Проблема в том, когда я звоню native_initCallback работает отлично, но когда я звоню native_notificationCallback приложение вылетает, давая java.lang.UnsatisfiedLinkError, Я не понимаю, почему это работает для первого метода, а почему нет для второго, поскольку оба они почти идентичны, кроме названия.

0

Решение

Вы говорите, что два нативных метода находятся в разных классах, но в вашем RegisterNatives Позвоните, вы назначите их обоих в один класс. Если вы хотите зарегистрировать каждый метод в другом классе, вам нужно сделать два RegisterNatives звонки. Метод основан на классе, имени и подписи.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]