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

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
这里写图片描述

**

源码

**

猜你喜欢

转载自blog.csdn.net/u013171212/article/details/78316513