从JNI在Android上调用非静态方法的步骤如下:
public class MainActivity extends AppCompatActivity {
// 声明本地方法
public native String callCppMethod(String name);
// 加载库文件
static {
System.loadLibrary("native-lib");
}
// ...
}
#include <jni.h>
#include "MainActivity.h"
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_callCppMethod(JNIEnv *env, jobject obj, jstring name) {
// 获取Java字符串
const char *name_str = env->GetStringUTFChars(name, NULL);
// 调用C++方法
std::string result = callCppMethod(name_str);
// 释放Java字符串
env->ReleaseStringUTFChars(name, name_str);
// 返回结果
return env->NewStringUTF(result.c_str());
}
#include<iostream>
#include<string>
std::string callCppMethod(const std::string &name) {
std::string result = "Hello, ";
result += name;
return result;
}
$ g++ -shared -fPIC -o libnative-lib.so MainActivity.cpp
src/main/jniLibs
目录下。// 调用本地方法
String result = callCppMethod("JNI");
以上就是从JNI在Android上调用非静态方法的步骤。
领取专属 10元无门槛券
手把手带您无忧上云