Я получаю java.lang.UnsatisfiedLinkError при попытке вызвать нативную функцию из моего проекта, настроенного с помощью bazel

Я создал cc_library в моем файле сборки bazel и добавил зависимости в правиле android_binary

Базель СТРОЙ:

cc_library(
    name = "native_libs",
    srcs = glob([
        "app/src/main/jni/**/*.cc",
        "app/src/main/jni/**/*.h",
    ]),

)
   android_binary(
   name = "buildlib",
   srcs = glob([
        "app/src/main/java/**/*.java",
    ]),
   manifest = "app/src/main/AndroidManifest.xml",
   deps = ":native_libs",
) 

И загрузил библиотеку в указанный пакет как

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

И объявляет и вызывает собственную функцию как:

Декларация:

private static native String foo(String code);

Вызов функции

foo("Code");

ОБЪЯВЛЕНИЕ И ОПРЕДЕЛЕНИЕ ФУНКЦИЙ JNI-ФАЙЛА:

    JNIEXPORT jstring JNICALL
    Java_com_example_android_(foo)( JNIEnv* env, jobject thiz, jstring code );

JNIEXPORT jstring JNICALL
Java_com_example_android_(foo)( JNIEnv* env, jobject thiz, jstring code )
{
   //some code
    return code;
}

Библиотека загружается успешно, но при вызове функции выдается ошибка java.lang.UnsatisfiedLinkError

Как я могу вызвать собственный foo() из моего файла java?

0 ответов

Другие вопросы по тегам