Pytanie Błąd: JNI ERROR (błąd aplikacji): uzyskano dostęp do nieaktualnego globalnego odwołania


Otrzymuję ten błąd JNI ERROR (bug aplikacji): dostęp do nieaktualnego globalnego odwołania Kiedy uruchamiam moją aplikację w systemie Android OS v4, ale kiedy uruchamiam tę samą aplikację w Androidzie v2.3, nie otrzymuję tego błędu.

Ten błąd występuje w punkcie, w którym nazywam klasę AsyncTask, gdzie przekazuję ciąg znaków jako argument 

Czy ktokolwiek może mi pomóc?


15
2017-08-22 10:58


pochodzenie


Pamiętam, że czytałem Instrukcja wydania Google dla programistów że ICS będzie miał dokładniejszą weryfikację możliwych błędów wielowątkowych, może po prostu wpadłeś na to? - skolima


Odpowiedzi:


Ten błąd występuje, gdy wywoływana jest metoda z niepoprawnym typem parametru.

Upewnij się, że podpis metody pasuje dokładnie do tego, co przekazujesz. Dla tablicy łańcuchowej:

jmethodID mid = env->GetMethodID(cls, methodName, "([Ljava/lang/String;)V");

Jeśli tworzysz go samodzielnie, wyglądałoby to tak:

jclass stringCls = env->FindClass("java/lang/String");
jobjectArray mStringArray = env->NewObjectArray( mSize, stringCls, NULL);

W twoim konkretnym przypadku najprawdopodobniej nie widzisz awarii w systemie Android 2.3, ponieważ wywołujesz funkcję AsyncTask.execute (), która nie była dostępna, dopóki API 11 (Android 3.0) i twój jmethodID nie będzie mieć wartości null. (Dobrym pomysłem jest zawsze sprawdzanie jclass i jmethodID dla null po ich uzyskaniu)


14
2018-01-10 04:35



Tylko dla przyszłego odniesienia, pomyliłem się jlong z long, co spowodowało ten sam błąd - ZdaR


Ten błąd występuje, gdy wywoływana jest metoda z niepoprawnym typem parametru.

Ponadto w tym przypadku możesz zarejestrować metodę natywną na kodzie Java różną od natywnego kodu. Różnica polega na tym, że możesz zadeklarować więcej lub mniej parametrów między kodem Java i natywnym kodem.


3
2018-04-19 05:11





Lokalne zmiany referencyjne JNI w ICS


1
2017-07-19 10:14



@Crossle ... mate i m nowy Android i stoi ten sam problem stackoverflow.com/questions/21423036/... Proszę powiedzieć, jak mogę zaimplementować twój kod. Naprawiam go z ostatnich 3 tygodni :( - Manish