android studio JNI 环境配置实现 java 调用 c/c++[附源码]

来源:互联网 发布:乔纳森.伊夫 知乎 编辑:程序博客网 时间:2024/05/29 02:32

1. 在 app 级的 build.gradle 文件配置两个地方

android{    defaultConfig{// 在 defaultConfig 里配置下面代码       externalNativeBuild {             cmake {                 cppFlags "-frtti -fexceptions"//添加对 c++ 的异常处理支持            }        }     }     buildTypes{       //在 buildTypes 里添加 CMakeLists.txt (c文件的配置文件)       externalNativeBuild {            cmake {                path "CMakeLists.txt"            }        }     }}

2. 配置好后 在 mainactivity 写 native 方法 这个方法是在 c 里面实现的。

public native String getFromC();

3. 在项目的 main 目录下面新建个文件夹 myc,再新建个 testC.c 文件代码如下

#include <jni.h>    JNIEXPORT jstring JNICALL Java_com_test_custom_test_MainActivity_getFromC     (JNIEnv * env, jobject jobj){     return (*env)->NewStringUTF(env,"I'am From C");    }

上面的这块代码怎么生成的?

用 javah 生成 .h 文件 然后打开 .h 文件 拷贝里面的代码
这里写图片描述

4. 在 app 级目录下新建个文件 CMakeLists.txt 里面的配置如下

add_library(      #库名 等会需要lode的库 这个库是由系统生成so的      test_lib    # 设置库 为可被加载 不然会出现加载不了库的错             SHARED         # c 文件的路径      src/main/myc/testC.c    )

最后 java 调用 c

加载库 test_lib

   static {        System.loadLibrary("test_lib");    }

在 activity 调用方法 getFromC
这里写图片描述

**

源码

**

原创粉丝点击