Intereting Posts
Выражение привязки данных не компилируется Android-studio Выбранный каталог недействителен для Android SDK Как изменить цвет окружения ProgressDialog по умолчанию в android Ошибка takePicture с ошибкой, связанной с кучей Что такое "Android SDK Tools", "Android SDK Platform Tools" и "Android SDK Build Tools"? Android накладывает вид на все? Как получить информацию о версии на рынке приложений в магазине google play? Как получить новый экземпляр класса Application для каждого модульного теста? Как обслуживать файл на SD-карте с помощью NanoHTTPD (внутри Android) Просмотр списка андроидов Есть ли метод, который работает как исходный фрагмент для результата? Неопределенный прогрессBar не отображается во время операции AsyncTask Отладка приложения WebView (Ionic) на Android через logcat Android – как избежать множественного развертывания одного и того же .jar Глубокая ссылка в приложение, когда приложение уже работает в фоновом режиме

Никакой реализации не найдено для native

Я скомпилировал свои c-источники с помощью android-ndk, затем я поместил файл .so в папку libs моего проекта Android, но когда я вызываю собственную функцию, у меня есть ошибка «Не реализована для родной». Если я попытаюсь вызвать эту функцию из оболочки adb, все будет хорошо, поэтому я не понимаю, почему эта ошибка. Пожалуйста, помогите, Андреа

Solutions Collecting From Web of "Никакой реализации не найдено для native"

Существует точная схема именования, связанная с JNI, которая не очень очевидна. Возможно, ваша реализация функции не соответствует ей?

Например, если вы хотите иметь возможность называть собственную функцию, называемую startServer, из вашего кода JAVA, считая, что ваш пакет называется com.example.something, а ваш класс называется MyClass, у вас должна быть функция-член в вашем классе JAVA :

private native void startServer(); 

И тогда ваша реализация JNI должна выглядеть так:

 JNIEXPORT void Java_com_example_something_MyClass_startServer(JNIEnv *env, jobject obj) { // Do something here... } 

В противном случае возникает ошибка связи.

Еще одна причина, по которой вы можете получить это, – это то, что вы не вызываете свою библиотеку во время вызова функции JNI:

 static { System.loadLibrary("myJNIFILE"); } 

Следует называть где-то до фактической ссылки на функцию JNI.