Исключение при вызове CSipSimple JNI ОБНАРУЖЕНО ОШИБКА В ПРИЛОЖЕНИИ, ввод недействителен Изменен UTF-8: недопустимый начальный байт 0x8e
Исключение CSipSimple на андроид леденец.
JNI ОБНАРУЖЕНА ОШИБКА В ПРИЛОЖЕНИИ, ввод недействителен Изменен UTF-8: недопустимый начальный байт 0x8e
делая Vo IP-вызов, здесь я отправляю сообщение в ISipService с интервалом, просто чтобы проверить, происходит ли вызов или отключен. и я получаю это исключение на pjStr.getPtr(), который находится в классе pjSipService.java. здесь я вставляю свой журнал ошибок.
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0x8e
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] string: 'OKp.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p'
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] in call to NewStringUTF
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] from java.lang.String org.pjsip.pjsua.pjsuaJNI.pj_str_t_ptr_get(long, org.pjsip.pjsua.pj_str_t)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] "Thread-1487" prio=5 tid=34 Runnable
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x13084400 self=0xafe5fc00
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] | sysTid=11490 nice=0 cgrp=apps sched=0/0 handle=0xafed3a80
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] | state=R schedstat=( 517221254 1512118979 3817 ) utm=23 stm=28 core=0 HZ=100
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] | stack=0x9dc06000-0x9dc08000 stackSize=1012KB
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #00 pc 00004c58 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #01 pc 000034c1 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #02 pc 002526ad /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+84)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #03 pc 0023618b /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+162)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #04 pc 000b1215 /system/lib/libart.so (art::JniAbort(char const*, char const*)+620)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #05 pc 000b1945 /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+68)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #06 pc 000b3ee3 /system/lib/libart.so (art::ScopedCheck::Check(bool, char const*, ...) (.constprop.128)+922)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #07 pc 000bd9e5 /system/lib/libart.so (art::CheckJNI::NewStringUTF(_JNIEnv*, char const*)+44)
12-03 17:26:38.625: A/art(11312): art/runtime/check_jni.cc:65] native: #08 pc 000f5885 /data/app/com.xpointers.careteam-2/lib/arm/libpjsipjni.so (_JNIEnv::NewStringUTF(char const*)+8)
любая идея? или любая альтернатива, чтобы получить уведомление, если вызов был отключен другой стороной? или Wi-Fi отключиться на другом устройстве, и для этого я получу уведомление, что вызов отключен.
2 ответа
Эта ошибка будет отображаться для леденцов и выше, потому что они используют ART, и некоторые символы не могут обнаружить его.
Может быть, в этом посте есть что-то, что поможет.
Не используйте вызов JNI для NewStringUTF, если вы не контролируете ввод 100%
Короче, смотрите ссылку выше. Старайтесь избегать использования NewStringUTF и отправьте байтовый массив ваших входных данных в java, чтобы он сделал jstring.
Я не буду притворяться, что понимаю реализацию CSipSimple, но я не удивлюсь, если это действительно источник вашей проблемы. Надеюсь, это поможет. Эта проблема мучает нас с момента выхода Android 5 и постепенно становится большой проблемой при использовании JNI со строками, созданными пользователем, с помощью их программных клавиатур.