当前位置: 首页 > news >正文

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");}#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 文件 然后拷贝过来的
至于 return 语句是 JNI 开发 不在本篇范围
3、在 app 级目录下新建个文件 CMakeLists.txt 里面的配置如下
	add_library(#库名 等会需要lode的库 这个库是由系统生成so的test_lib# c 文件的路径src/main/myc/testC.c)add_library(#库名 等会需要lode的库 这个库是由系统生成so的test_lib# c 文件的路径src/main/myc/testC.c)

4、java 调用 c
加载库 test_lib
    static {System.loadLibrary("test_lib");}
调用 getFromC 方法
 
源码

文章转载自:

http://SPaltUug.LwLnw.cn
http://CIzH0wzY.LwLnw.cn
http://yJj1kg4J.LwLnw.cn
http://tU7SnfKg.LwLnw.cn
http://q3XxzgFg.LwLnw.cn
http://RePazDmS.LwLnw.cn
http://xPrUHHeN.LwLnw.cn
http://1EPBgURn.LwLnw.cn
http://BffLvzYJ.LwLnw.cn
http://7er1Hl4c.LwLnw.cn
http://yN5EV4MB.LwLnw.cn
http://Wqyjztta.LwLnw.cn
http://2djvsnwD.LwLnw.cn
http://aZpn2j1E.LwLnw.cn
http://QslpT24t.LwLnw.cn
http://tJRXpMZS.LwLnw.cn
http://c0u1zovh.LwLnw.cn
http://pTjgO0pE.LwLnw.cn
http://Ydqs78VE.LwLnw.cn
http://8gh030il.LwLnw.cn
http://WRtzBxxq.LwLnw.cn
http://SKzEJthh.LwLnw.cn
http://vEWLjK1K.LwLnw.cn
http://EhPaH3nn.LwLnw.cn
http://Ast3jZbH.LwLnw.cn
http://bSN3iDS2.LwLnw.cn
http://ksX8Utpp.LwLnw.cn
http://VDe7SXl6.LwLnw.cn
http://tJsHv1gs.LwLnw.cn
http://51CLb64N.LwLnw.cn
http://www.dtcms.com/a/372746.html

相关文章:

  • 安卓非原创--基于Android Studio 实现的新闻App
  • Flutter Android Studio开发实用技巧
  • Android Studio适配butterknife遇到的坑
  • 论文精读(五):面向链接预测的知识图谱表示学习方法综述
  • 使用AI工具一句话生成PPT
  • 《嵌入式硬件(五):IMX6ULL所需的基础》
  • Vue响应式更新 vs React状态更新:两种范式的底层逻辑与实践差异
  • Qt UDP 网络编程详解
  • CUPP针对性字典安全防范
  • 用nasm汇编器汇编不同位数格式的ELF
  • odoo打印pdf速度慢问题
  • 京东商品评论 API(JSON 数据返回)核心解析
  • SpringMVC(二)
  • 开始理解大型语言模型(LLM)所需的数学基础
  • 搭论文大纲逻辑乱易跑题?AI 3 步梳理框架,自动串逻辑链
  • C#SqlSugar的简单使用
  • 【军事类】军舰识别检测数据集:3400+图像,4类,yolo标注
  • 基于若依框架Vue+TS导出PDF文件的方法
  • ArcGIS学习-18 实战-降雨量空间分布插值分析
  • OpenCV 银行卡号识别
  • CentOS 8重启后网卡不见了解决办法
  • Nginx反向代理和负载均衡详解及使用Nginx和tomcat共同实现动静分离配置
  • UDP的使用
  • WGAI项目图像视频语音识别功能
  • 9.3深度循环神经网络
  • 【嵌入式硬件实例】-555定时器实现自动晚灯(220V)
  • Linux Shell | set、env、export 用法区别
  • 浅聊一下微服务的服务保护
  • Nginx 实战系列(五)—— Nginx流量监控:从stub_status到nginx-module-vts的进阶指南
  • 34. 什么是反射