Меня интересует, есть ли способ создать файлы .h в папке jni проще, чем команда, как эта
javah -jni -classpath bin/classes/ -d jni/ com.example.test_ndk.FibLib
Я имею в виду, я хочу автоматизировать этот шаг, поэтому я должен писать только
public native static long fibNR(long n);
а затем затмение будет генерировать файлы .h в папке jni для меня
Как я могу это сделать ?
Опция 1:
Если это имеет значение, вам не нужно включать -jni
вариант. Это вариант по умолчанию для javah
,
javah -classpath bin/classes/ -d jni/ com.example.test_ndk.FibLib
Вариант 2:
Другой альтернативой может быть создание файла заголовка самостоятельно, но это не более простой вариант. Ваш заголовок будет выглядеть так (перед 1 ndk
в test_1ndk
потому что вы использовали _
символ в названии пакета. Если мы не введем его, вызывающий будет искать папку с именем ndk
внутри папки с именем test
поэтому я бы не рекомендовал использовать test_ndk в качестве имени вашего пакета. Вместо этого используйте testNdk или что-то с подчеркиванием):
#include <jni.h>
JNIEXPORT jlong JNICALL Java_com_example_test_1ndk_FibLib(JNIEnv*, jclass, jlong);
// use jobject instead of jclass if your method is non-static
И общий формат:
JNIEXPORT [returnType] JNICALL Java_[package name with folders separated by _]_[class name]_[method name] (JNIEnv*, jclass, jtype arguments);
Других решений пока нет …