android jni教程
时间: 2023-06-30 20:19:44 浏览: 152
android jni
JNI(Java Native Interface)是 Java 虚拟机提供的一种机制,它允许 Java 程序调用 Native 方法,即使用 C/C++ 编写的函数。Android 中也提供了 JNI 接口,允许开发者使用 C/C++ 编写 Native 代码,与 Java 代码进行交互。
下面是一个简单的 Android JNI 教程:
1. 创建一个 Java 类,声明一个 native 方法
```
package com.example.myapplication;
public class JNIExample {
static {
System.loadLibrary("native-lib");
}
public native String getStringFromNative();
}
```
2. 在 C/C++ 文件中实现该方法
```
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_JNIExample_getStringFromNative(JNIEnv* env, jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
```
3. 在 Android.mk 中添加编译规则
```
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native-lib
LOCAL_SRC_FILES := native-lib.cpp
include $(BUILD_SHARED_LIBRARY)
```
4. 编译生成 .so 库
```
ndk-build
```
5. 在 Activity 中调用该 native 方法
```
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
JNIExample jniExample = new JNIExample();
String stringFromNative = jniExample.getStringFromNative();
Log.d("MainActivity", "stringFromNative: " + stringFromNative);
}
}
```
以上就是一个简单的 Android JNI 教程。需要注意的是,在使用 JNI 接口时,需要注意内存管理和类型转换等问题。另外,建议使用 Android Studio 中的 CMake 工具链来编译 Native 代码,而不是使用过时的 ndk-build 工具链。
阅读全文