Java не может разрешить соответствующую функцию JNI

Я прочитал много постов, но пока не могу решить.

Есть мои строки ошибок и структура проекта: ошибка и структура

Некоторые библиотеки и конфиги я беру из другого проекта … И не знаю, где я ошибся.

Я дам вам исходный код файлов, если это необходимо

инструменты

Спасибо за любую помощь.

0

Решение

Я также получаю эту ошибку после обновления с Android Studio 2 до 3. Код компилируется, но IDE не распознает нативные функции. (Это может быть связано с созданным мной макросом препроцессора, который упрощает имена функций JNI.)

Я подавил эту ошибку в Java, добавив @SuppressWarnings("JniMissingFunction") до моего объявления класса.

6

Другие решения

Итак, эта отсутствующая «функция JNI» не имеет большого значения. Я знаю, что он выделен красным, но функция связана, но не так, как это может определить IDE.

Во-первых, вот соответствующий исходный код: https://github.com/koreader/crengine/blob/master/android/jni/cr3engine.cpp#L770

CrEngine связывает функции во время выполнения. Причина, по которой ваша IDE не поднимает их, заключается в том, что функции CrEngine начинаются с Java_org_ вместо Java_com_, Если вы полагались на механизм автоматической связи, это было бы проблемой, но, как уже говорилось ранее, они явно связаны во время выполнения с jniRegisterNativeMethods,


Сделать clean и обновите ваши инструменты сборки до 25.0.3 (или лучше) в вашем файле gradle.build. Обновите свои SDK и NDK. Затем восстановите. Некоторые ошибки, которые я видел, могут быть вызваны более старыми инструментами сборки.

3