#android #java-native-interface
#Android #java-native-интерфейс
Вопрос:
Внутри JNI-части моего приложения для Android я использую следующий код
output_buffer = jni_env->NewByteArray(sizeof(short) * samples.size());
jboolean *isCopy;
output_buffer_native = jni_env->GetByteArrayElements(output_buffer, isCopy);
На некоторых телефонах это работает нормально, но на некоторых других телефонах происходит сбой при вызове GetByteArrayElements
. После того, как я изменю эту строку на
jni_env->GetByteArrayElements(output_buffer, nullptr);
сбой исчезает. В чем здесь может быть проблема?
Комментарии:
1. Вам нужно
jboolean isCopy;
в объявлении иamp;isCopy
в списке аргументов.2. В настоящее время вы передаете неинициализированное
jboolean*
вGetByteArrayElements
, поэтому вы получаете неопределенное поведение. Смотрите комментарий @user207421 о том, что вы должны сделать, чтобы исправить это.