android studio 使用 java 调用 c/c++代码
1、创建cpp文件
右键src
目录,new
-Directory
创建一个目录,方便管理c/c++代码。
右键刚创建的目录,new
-C/C++ Source File
,创建一个cpp文件。
2、创建java类
找到src
-main
-java
-包名称(com.ghostcir.xxx)
,右键,新建一个Java Class
3、编辑java类
public class Jni {
public native void foo();
//Java_com_ghostcir_myapplication_Jni_foo
//c函数命名规则:Java_packageName_className_methodName
}
4、编辑c函数
#include <jni.h>
// env表示Java虚拟机
// obj表示Java对象
// extern C要求编译器不要对该函数进行变名,否则java虚拟机找不到该函数
extern "C" void Java_com_ghostcir_myapplication_Jni_foo(JNIEnv* env, jobject obj)
{
}
5、编辑Android.mk
右键c/c++代码目录,创建File
,命名Android.mk
,输入以下内容。
# 设置路径是当前路径
LOCAL_PATH:=$(call my-dir)
# 清除变量
include $(CLEAR_VARS)
# 需要参与编译的源代码文件
LOCAL_SRC_FILES:= helloworld.cpp
# 输出目标文件
LOCAL_MODULE:= mylib # libmylib.so
# 目标文件的类型
include $(BUILD_SHARED_LIBRARY)
6、link C++ Gradle
选中app
目录,右键Link C++ Project with Gradle
,Build System
选择ndk-build
,Project Path
找到上一步创建Android.mk
,点ok。
7、正式开始调用
找到java类MainActivity,在方法中加入
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Jni jni = new Jni();//生成第二步所创建的java类
jni.foo();//调用c函数
}