0

我在我的 bazel 构建文件中创建了一个 cc_library 并在 android_binary 规则中添加了 deps

巴泽尔建造:

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

如何从我的 java 文件中调用本机 foo()?

4

0 回答 0