2016-10-05 1 views
0

JniLibs 코드에서 안드로이드 ndk 오류가 발생했습니다. 오류가 발생했습니다.에뮬레이터에서 응용 프로그램이 다운 됨 7.0 : JNI가 응용 프로그램에서 오류를 감지했습니다. GetStringUTFChars가 NULL jstring을 받았습니다.

JNI DETECTED ERROR IN APPLICATION: GetStringUTFChars received NULL jstring

다음은 오류입니다. 너무 길기 때문에 모두 게시 할 수 없습니다.

10-05 17:12:01.100 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470] JNI DETECTED ERROR IN APPLICATION: GetStringUTFChars received NULL jstring 
10-05 17:12:01.100 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470]  in call to GetStringUTFChars 
10-05 17:12:01.101 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470]  from java.lang.String com.example.myapp.othercode.PassCodeUtil.genPassCode(android.content.Context) 
10-05 17:12:01.101 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470] "main" prio=5 tid=1 Runnable 
10-05 17:12:01.101 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470] | group="main" sCount=0 dsCount=0 obj=0x75518a50 self=0x7ffef3695a00 
10-05 17:12:01.101 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470] | sysTid=3773 nice=0 cgrp=default sched=0/0 handle=0x7ffef7ff9b40 
10-05 17:12:01.101 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470] | state=R schedstat=(0 0 0) utm=3 stm=2 core=0 HZ=100 
10-05 17:12:01.101 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470] | stack=0x7fffa7798000-0x7fffa779a000 stackSize=8MB 
10-05 17:12:01.101 3773-3773/com.example.myapp A/art: art/runtime/java_vm_ext.cc:470] | held mutexes= "mutator lock"(shared held) 
. 
. 
. 

JniLibs는이 아래 에뮬레이터에서 잘 작동하며 에뮬레이터 버전 7.0에서 오류를 표시합니다. 최근 앱에서 앱을 제거하고 앱을 다시 열면 오류가 발생합니다. 그것은 에뮬레이터 때문이거나 내가 잘못한 것입니다. 나는 android ndk에서 매우 새로운 것입니다.

도움 주셔서 감사합니다.

+1

이 오류가 발생 어디에 당신은 코드를 게시해야한다. – Michael

+0

@ 마이클, 감사합니다. 문제를 발견하고 지금 해결했습니다. 나는 이미 내 자신의 게시물에 대답했다. –

답변

1

마지막으로, 문제의 원인을 알고 있습니다. GetStringUTFChars의 매개 변수에 오류가있어서 null입니다. 이 GetStringUTFChars의 구문은 다음과 같습니다

const char * GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy);

그리고 있었던 파라미터 문자열에 널 가지고, 그래서 솔루션은 사용하기 전에이 기능을 널 (null) 확인하는 것입니다.

if (mystring == NULL){ 
    return NULL; 
} 
// function GetStringUTFChars 

참고 : 예를 들어 https://stackoverflow.com/a/15268628/5241603

관련 문제