JNI не ищет функции test
. Имя, которое он ищет, имеет форму Java_packagename_classname_functionname
. Например, если ваш класс
package your.package;
public class Activity {
static {
System.loadLibrary("your_library");
}
public native void test();
}
Тогда ваша библиотека должна содержать функцию
extern "C" JNIEXPORT void JNICALL Java_your_package_Activity_test(JNIEnv *, jobject) { }
... при условии, что test
не перегружена. Если test
перегружен, используйте программу javah
для создания заголовка для вас, потому что вы не хотите делать это вручную.
javah your.package.Activity
создаст файл your_package_Activity.h
, содержащий функциональные подписи вам нужно. Обратите внимание, что для этого требуется класс Activity
, то есть должен быть файл your/package/Activity.class
в пути к классу.
Полное имя класса вашей деятельности должно быть частью этого экспорта. Охота на '' [java] [jni] [android] родной метод не найден "' будет предлагать * богатство информации. Возможный дубликат http://stackoverflow.com/questions/21100542/native-method-not-found. – WhozCraig