【问题标题】:App crash in emulator 7.0: JNI DETECTED ERROR IN APPLICATION: GetStringUTFChars received NULL jstring模拟器 7.0 中的应用程序崩溃:应用程序中的 JNI 检测到错误:GetStringUTFChars 收到 NULL jstring
【发布时间】:2017-02-13 18:22:55
【问题描述】:

我在 JniLibs 代码上收到错误 android ndk。我得到了错误:

在应用程序中检测到 JNI 错误:GetStringUTFChars 收到 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 很陌生。

感谢您的帮助。

【问题讨论】:

  • 你应该把出现这个错误的代码贴出来。
  • @Michael,谢谢。我发现了问题并立即解决。我已经回答了我自己的帖子。
  • 对我来说同样的错误,但到目前为止还没有好的答案。

标签: android android-ndk android-emulator java-native-interface


【解决方案1】:

最后,我知道了问题的原因。我在 GetStringUTFChars 的参数上遇到错误,我为空。这个GetStringUTFChars 的语法是:

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

我在参数string上得到了null,所以解决方案是在使用这个函数之前检查null。例如:

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

参考:https://stackoverflow.com/a/15268628/5241603

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2018-01-19
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多