ОШИБКА ОБНАРУЖЕНА JNI В ПРИЛОЖЕНИИ: ввод недействителен Изменен UTF-8: недопустимый начальный байт 0xf0 - PullRequest
0 голосов
/ 17 марта 2020

мое приложение упало, и logcat показывает это "" JNI ОБНАРУЖЕНА ОШИБКА В ПРИЛОЖЕНИИ: неверный ввод: UTF-8: недопустимый начальный байт 0xf0 ""

logcat показывает это

03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] JNI ОБНАРУЖЕНА ОШИБКА В ПРИЛОЖЕНИИ: ввод недействителен Измененный UTF-8: недопустимый начальный байт 0xf0 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] строка:


'ZA_SPEENA_JALLABI__YAMA_LALAI_ME_GHANAM__RANG_DE_?? (_BY_ARYANA_SAEED _) (128k) .mp3' 03-19 10: 39: 29,491 25489-25517 / org.aitech.ai.debug А / арт:. сарт / среда / check_jni cc: 65 ] в вызове NewStringUTF 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] из org.aitech.medialibrary.interfaces.media .MediaWrapper [] org.aitech.medialibrary.MedialibraryImpl.nativeGetSortedPagedAudio (int, boolean, int, int) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.de ошибка A / art: sart / runtime / check_jni. cc: 65] "arch_disk_io_1" prio = 5 tid = 20 Runnable 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] | group = "main" sCount = 0 dsCount = 0 obj = 0x13054160 self = 0xdd476000 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] | sysTid = 25517 nice = 0 cgrp = sched по умолчанию = 0/0 handle = 0xf4923080 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] | state = R schedstat = (0 0 0) utm = 10 stm = 8 core = 3 HZ = 100 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni . cc: 65] | stack = 0xdccb7000-0xdccb9000 stackSize = 1036KB 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] | hold mutexes = "блокировка мутатора" (общий доступ) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 00 p c 00004e64 /system/lib/libbacktrace_libc++.so (UnwindCurrent :: Unwind (unsigned int, ucontext ) + 23) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 01 p c 00003665 /system/lib/libbacktrace_libc++.so (Backtrace :: Unwind (без знака int, ucontext *) + 8) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 02 p c 0026bc55 /system/lib/libart.so ( art :: DumpNativeStack (std :: __ 1 :: basic_ostream> &, int, char const *, art :: mirror :: ArtMethod *) + 84) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai .debug A / art: sart / runtime / check_jni. cc: 65] native: # 03 p c 0024e367 /system/lib/libart.so (art :: Thread :: Dump (std :: __ 1 ::) basic_ostream> &) const + 158) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 04 p c 000b6d7b /system/lib/libart.so (art :: JniAbort (char const *, char const *) + 610) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 05 p c 000b74a1 /system/lib/libart.so (art :: JniAbortF (char const *, char const *, ... ) +68) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 06 p c 000b9a5b / system /lib/libart.so (art :: ScopedCheck :: Check (bool, char const *, ...) (.constprop.129) +922) 03-19 10: 39: 29.491 25489-25517 / org.aitech. ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 07 p c 000c3545 /system/lib/libart.so (art :: CheckJNI :: NewStringUTF (_JNIEnv *, char const *) + 44) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 08 p c 000bc843 / data / app / org.aitech.ai.debug-1 / lib / arm / libmla.so (mediaToMediaWrapper (_JNIEnv *, поля *, std :: __ ndk1 :: shared_ptr const &) + 514) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 09 p c 000b27af /data/app/org.aitech.ai.debug-1/lib/arm/libmla.so (???) 03- 19 10: 39: 29,491 25489-25517 / орг. aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 10 p c 000b28f7 /data/app/org.aitech.ai.debug-1/lib/arm/libmla .so (getPagedAudio (_JNIEnv *, _jobject *, int, unsigned char, int, int) +46) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] родной: # 11 p c 00a7a383 / data / dalvik-cache / arm / data@app@org.aitech.ai.debug-1@base.apk@classes.dex (Java_org_videolan_medialibrary_MedialibraryImpl_nativeGetSortedPagedAudio__IZII + 110) 03-19 10: 39: 29.417 259 или 289 или 265, 948, или 279, 258, 948, или 279, 259, 948, или 279, 258, 948, или 279, 259, 279, 279, 279, 279, 279, 289, 279, 279, 279, 259, 279, 259, 259, 259, 259, 254 или 25: 259 или 259, 259 или 279, 259 или 259, 259 или 259. ai.debug A / art: sart / runtime / check_jni. cc: 65] в org.aitech.medialibrary.MedialibraryImpl.nativeGetSortedPagedAudio (собственный метод) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai .debug A / art: sart / runtime / check_jni. cc: 65] в org.aitech.medialibrary.MedialibraryImpl.getPagedAudio (MedialibraryImpl. java: 194) 03-19 10: 39: 29.491 25489-25517 / org .aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в org.aitech.ai.providers.medialibrary.TracksProvider.getPage (TracksProvider.kt: 63) 03-19 10:39: 29,491 25489 -25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] на org.aitech.ai.providers.medialibrary.TracksProvider.getPage (TracksProvider.kt: 33) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] at org.aitech.ai.providers.medialibrary.MedialibraryProvider $ MLDataSource.loadInitial (MedialibraryProvider .kt: 127) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] at androidx.paging.PositionalDataSource.dispatchLoadInitial (PositionalDataSource . java: 362) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.paging.TiledPagedList. ( TiledPagedList. java: 112) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.paging.PagedList. create (PagedList. java: 452) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] на androidx.paging. PagedList $ Builder.build (PagedList. java : 611) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] at androidx.paging.LivePagedListBuilder $ 1.compute (LivePagedListBuilder. java: 202) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] на androidx.paging.LivePagedListBuilder $ 1.compute (LivePagedListBuilder. java: 167) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.lifecycle.ComputableLiveData $ 2.run (ComputableLiveData. java: 101) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1112) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc : 65] в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 587) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart /runtime/check_jni.cc:65] на java .lang.Thread.ru n (Тема. java: 818) 03-19 10: 39: 29,491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] JNI ОБНАРУЖЕНА ОШИБКА В ПРИЛОЖЕНИИ: ввод недопустим. -19 10: 39: 29.491 25489-25517 / org.aitech.ai. -19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] при вызове NewStringUTF 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] из org.aitech.medialibrary.interfaces.media.MediaWrapper [] org.aitech.medialibrary.MedialibraryImpl.nativeGetSortedPagedAudio (int, boolele) , int, int) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] "arch_disk_io_1" prio = 5 tid = 20 Runnable 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65 ] | group = "main" sCount = 0 dsCount = 0 obj = 0x13054160 self = 0xdd476000 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] | sysTid = 25517 nice = 0 cgrp = sched по умолчанию = 0/0 handle = 0xf4923080 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] | state = R schedstat = (0 0 0) utm = 10 stm = 8 core = 3 HZ = 100 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni . cc: 65] | stack = 0xdccb7000-0xdccb9000 stackSize = 1036KB 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] | hold mutexes = "блокировка мутатора" (общий доступ) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 00 p c 00004e64 /system/lib/libbacktrace_libc++.so (UnwindCurrent :: Unwind (unsigned int, ucontext *) + 23) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art : sart / runtime / check_jni. cc: 65] native: # 01 p c 00003665 /system/lib/libbacktrace_libc++.so (обратная трасса :: Unwind (без знака int, ucontext *) + 8) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 02 p c 0026bc55 /system/lib/libart.so (art: : DumpNativeStack (std :: __ 1 :: basic_ostream> &, int, char const *, art :: mirror :: ArtMethod *) + 84) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 03 p c 0024e367 /system/lib/libart.so (art :: Thread :: Dump (std :: __ 1 :: basic_ostream>> &) const + 158) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 04 p c 000b6d7b /system/lib/libart.so (art :: JniAbort (char const *, char const *) + 610) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art : sart / runtime / check_jni. cc: 65] native: # 05 p c 000b74a1 /system/lib/libart.so (art :: JniAbortF (char const *, char const *, ...) + 68 ) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 06 p c 000b9a5b / system / lib / libart.so (art :: ScopedCheck :: Check (bool, char const *, ...) (.constprop.129) +922) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 07 p c 000c3545 /system/lib/libart.so (art :: CheckJNI :: NewStringUTF (_JNIEnv *, char const *) + 44) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 08 p c 000bc843 / data / app /org.aitech.ai.debug-1/lib/arm/libmla.so (mediaToMediaWrapper (_JNIEnv *, поля *, std :: __ ndk1 :: shared_ptr const &) + 514) 03-19 10: 39: 29.491 25489-25517 /org.aitech.ai.debug A / art: sart /runtime/check_jni.cc:65] native: # 09 p c 000b27af /data/app/org.aitech.ai.debug-1/lib/arm/libmla.so (???) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 10 p c 000b28f7 /data/app/org.aitech. ai.debug-1 / lib / arm / libmla.so (getPagedAudio (_JNIEnv *, _jobject *, int, unsigned char, int, int) +46) 03-19 10: 39: 29.491 25489-25517 / org.aitech. ai.debug A / art: sart / runtime / check_jni. cc: 65] native: # 11 p c 00a7a383 / data / dalvik-cache / arm / data@app@org.aitech.ai.debug-1@base.apk@classes.dex (Java_org_videolan_medialibrary_MedialibraryImpl_nativeGetSortedPagedAudio__II 10: 10: 10: 10) 19 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в org.aitech.medialibrary.MedialibraryImpl.nativeGetSortedPagedAudio (собственный метод) 03-19 10:39 : 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в org.aitech.medialibrary.MedialibraryImpl.getPagedAudio (MedialibraryImpl. java: 194) 03- 19 10: 39: 29,491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в org.aitech.ai.providers.medialibrary.TracksProvider.getPage (TracksProvider.kt: 63) 03-19 10: 39: 29.491 25489-25517 / org .aitech.ai. отладка A / art: sart / runtime / check_jni. cc: 65] на org.aitech.ai.providers.medialibrary.TracksProvider.getPage (TracksProvider.kt: 33) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] at org.aitech.ai.providers.medialibrary.MedialibraryProvider $ MLDataSource.loadInitial (MedialibraryProvider.kt: 127) 03-19 10 : 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.paging.PositionalDataSource.dispatchLoadInitial (PositionalDataSource. java: 362) 03- 19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.paging.TiledPagedList. (TiledPagedList. java: 112) 03 -19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.paging.PagedList.create (PagedList. java: 452 ) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.paging.PagedList $ Builder.build (PagedList. java: 611) 03-19 10:39:29. 491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] на androidx.paging.LivePagedListBuilder $ 1.compute (LivePagedListBuilder. java: 202) 03-19 10 : 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.paging.LivePagedListBuilder $ 1.compute (LivePagedListBuilder. java: 167) 03 -19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в androidx.lifecycle.ComputableLiveData $ 2.run (ComputableLiveData. java: 101) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в java .util.concurrent.ThreadPoolExecutor.runWorker ( ThreadPoolExecutor. java: 1112) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] в java .util. concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 587) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65 ] в java .lang.Thread.run (Тема. java: 818) 03-19 10: 39: 29.491 25489-25517 / org.aitech.ai.debug A / art: sart / runtime / check_jni. cc: 65] "" "" "" "" "" "" "" '*

1 Ответ

0 голосов
/ 23 марта 2020

Символ is - это U + 1F609 WINKING FACE.

Его обычная кодировка UTF-8 - f09f9889, что соответствует вашей ошибке. Java ожидает Изменено UTF-8 , однако:

Символы с кодовыми точками выше U + FFFF (так называемые дополнительные символы) представлены как раздельное кодирование двух суррогатных кодовых единиц их представления UTF-16. Каждая из единиц суррогатного кода представлена ​​тремя байтами. Это означает, что дополнительные символы представлены шестью байтами, u, v, w, x, y и z.

Вы не можете использовать NewStringUTF для этого, вам придется вручную декодировать из UTF -8.

Извлечение из мой ответ здесь , мы сделаем эквивалент
Charset.forName("UTF-8").decode(bb).toString():

const char * filename = /* what you have now */;
jobject bb = env->NewDirectByteBuffer(filename, strlen(filename));

jclass cls_Charset = env->FindClass("java/nio/charset/Charset");
jmethodID mid_Charset_forName = env->GetStaticMethodID(cls_Charset, "forName", "(Ljava/lang/String;)Ljava/nio/charset/Charset;");
jobject charset = env->CallStaticObjectMethod(cls_Charset, mid_Charset_forName, env->NewStringUTF("UTF-8"));

jmethodID mid_Charset_decode = env->GetMethodID(cls_Charset, "decode", "(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;");
jobject cb = env->CallObjectMethod(charset, mid_Charset_decode, bb);
env->DeleteLocalRef(bb);

jclass cls_CharBuffer = env->FindClass("java/nio/CharBuffer");
jmethodID mid_CharBuffer_toString = env->GetMethodID(cls_CharBuffer, "toString", "()Ljava/lang/String;");
jstring str = env->CallObjectMethod(cb, mid_CharBuffer_toString);
// Do something with str
...