首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从JNI在Android上调用非静态方法

从JNI在Android上调用非静态方法的步骤如下:

  1. 在Java代码中定义一个本地方法,该方法将调用C++代码。
代码语言:java
复制
public class MainActivity extends AppCompatActivity {
    // 声明本地方法
    public native String callCppMethod(String name);

    // 加载库文件
    static {
        System.loadLibrary("native-lib");
    }

    // ...
}
  1. 使用JNI C++头文件,并实现本地方法。
代码语言:cpp
复制
#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());
}
  1. 在C++代码中实现非静态方法。
代码语言:cpp
复制
#include<iostream>
#include<string>

std::string callCppMethod(const std::string &name) {
    std::string result = "Hello, ";
    result += name;
    return result;
}
  1. 编译C++代码,生成动态库文件。
代码语言:sh
复制
$ g++ -shared -fPIC -o libnative-lib.so MainActivity.cpp
  1. 将动态库文件放入Android项目的src/main/jniLibs目录下。
  2. 在Android项目中调用本地方法。
代码语言:java
复制
// 调用本地方法
String result = callCppMethod("JNI");

以上就是从JNI在Android上调用非静态方法的步骤。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券