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

**

源码

**

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值