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

JNI 基础

一、JNI 涉及的名词概念

1.1、 JNI:Java Native Interface
  • 它是Java平台的一个特性(并不是Android系统特有的)。实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码.
1.2、 二进制库分类 : 静态库,动态库.
  • 静态库
系统静态库文件
Windows.lib
Linux.a
MacOS/IOS.a

.a 静态库就是好多个 .o 合并到一块的集合,经常在编译C 库的时候会看到很多.o,这个.o 就是目标文件 由 .c + .h 编译出来的。.c 相当于 .java, .hC 库对外开放的接口声明。对外开放的接口 .h.c 需要一一对应,如果没有一一对应,外部模块调用了接口,编译的时候会提示找不到方法。

.a 存在的意义可以看成 Android aar 存在的意义,方便代码不用重复编译, 最终为了生成 .so (apk)

 

  • 动态库
系统动态库文件
Windows.dll
Linux.so
MacOS/IOS.dylib

动态库 ,在 Android 环境下就是 .so ,可以直接被java 代码调用的库.

1.3、 CPU 架构(ABI):armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64 

各个平台架构的区别就是指令集不一样,浮点运算能力不一样,按照上面排列的顺序,浮点运算能力运行从低到高。

  • armeabi:这是相当老旧的一个版本,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈 (微信)
  • armeabi-v7aARM v7 目前主流版本,兼容 armeabi (facebook app)
  • arm64-v8a64 位支持 兼容 armeabi-v7a armeabi
  • mips/mips64: 极少用于手机可以忽略
  • x86/x86_64x86 架构一般用于 TV 电视机 ,兼容 armeabi
  • 建议 android apk 为了减少包体大小只接入 armeabi-v7a 即可

 1.4、 Android 特有的文件 :Android.mk Application.mk

 Android.mk:在 Android 上编译需要的配置文件,相当于 build.gradle,详细细节后面会讲到。
Application.mk:上代码

APP_PLATFORM := android-14 //指定 android 系统
APP_ABI := armeabi-v7a // 指定生成哪个架构的 so
1.5、 NDK :Android 平台上用来编译 C/C++库的工具

二、JNI 在 Android Studio 搭建

(1)调用了System.loadLibrary("helloworld");这句代码代表着,使用这个类之前都会去加载libhelloworld.so 这个动态库。

(2)public native String nativeGetString()//或者external fun stringFromJNI(): String这个方法的实现在 c 层。所以接下来我们要构建 c 层的代码。

(3) 自动生成一个 helloworld_android.c文件

相关文章:

JNI 基础

一、JNI 涉及的名词概念 1.1、 JNI:Java Native Interface 它是Java平台的一个特性(并不是Android系统特有的)。实现Java代码调用C/C的代码,C/C的代码也可以调用Java的代码. 1.2、 二进制库分类 : 静态库,动态库. 静态库 系统…...

用户参数(zabbix-agent)

-s 指向被监控端地址 -p 指向被监控端端口 -k 指向key的名字 监控内存使用率 agent vi a.conf server web界面 对数据库的avg进行监控 systemctl 创建监控项 另一台 重启 agent 监控请求数 运行时间 对自定义key的理解 写下想要监控的任何参数命令,利用zabbix…...

期权策略篇: 实现买方狂欢,让卖方稳赚不赔的策略

欢迎来到期权策略篇: 实现买方狂欢,让卖方稳赚不赔的策略,今天给大家带来的期权策略比较简单,是我们比较常见的四种单腿期权策略,这四种策略分别是买入看涨期权、买入看跌期权、卖出看涨期权、卖出看跌期权策略。本文来自&#xf…...

关于包,类名,方法名的命名规范

保持与数据库同名的一个命名规范的规则 方法名采用驼峰命名法,保持与数据库同名的一个命名规范的规则 类名采用首字母大写,驼峰命名法,保持与数据库同名的一个命名规范的规则 包名全部使用小写,保持与数据库同名的一个命名规范的规…...

1.1 安装配置CentOS

文章目录 零、学习目标一、导入新课二、新课讲解(一)安装VMWare Workstation1、获取安装程序2、进入安装向导3、按提示完成安装 (二)虚拟网络编辑器1、启动虚拟网络编辑器2、选择VMnet8虚拟网3、更改网络配置4、查看DHCP设置5、查…...

go初识iris框架(七) - 实战资源导入和项目框架搭建

实战项目框架搭建 如下是项目框架搭建后的说明: config::项目配置文件及读取配置文件的相关功能controller:控制器目目录,项目各个模块的控制器及业务逻辑处理的所在目录datasource:实现mysql连接和操作、封装操作mysql数据库的目录。model:数据实体目…...

甲胎蛋白AFP抗体——博迈伦

甲胎蛋白(Alpha-fetoprotein,AFP)是一种由胚胎组织产生的蛋白质,通常以胎儿肝脏和胎盘为主要来源。AFP是一种重要的生物标志物,可用于诊断和预测某些疾病的发展情况。 AFP抗体是指能够与AFP结合的抗体,通常…...

junit.Test误踩坑,识别不到@Test注解,无法运行测试方法

问题的出现源自于下面的一段代码: 在这一段代码中,只看到可以运行的main方法,无法看到test方法可以运行的标志。 只能运行main()方法。 开始排查,对junit包的导入进行检查,发现是没有问题的。 怀疑是否是IntelliJ IDE…...

一加Ace2V/Ace竞速版刷入氧OS13系统-谷歌服务套件-全球语言-国际版体验

截止目前2023年9月5日,一加除了刚上市的Ace2Pro机型未确定国际版以外,其他机型均可以支持氧OS系统刷入。今天我们刷入的就是一加Ace2V和一加Ace竞速版本,两款机型均为MTK天玑处理器,并且系统已经升级了COlorOS13系统,所…...

Java 华为真题-猴子爬山

需求: 一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯:每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式? 输入描述 输入只有一个整数N&#xff…...

Axios笔记

1、Axios介绍 Axios基于promise网络请求库,作用于node.js和浏览器中(即同一套代码可以运行在node.js和浏览器中),在服务器中他使用原生node.js http,在浏览器端则使用XMLHttpRequest。 特性: (1)、支持 Pro…...

如何使用try-except语句处理Python中的异常

在python爬虫行业里面,异常处理能力已经成为了一项非常重要的技能。随着软件规模的不断扩大和复杂性的增加,异常处理能力已经成为了评判一个示波器水平的重要指标。 ,学会使用try-except语句来捕获和处理Python异常,对于我们做爬虫…...

学Python的漫画漫步进阶 -- 第十一步.常用的内置模块

学Python的漫画漫步进阶 -- 第十一步.常用的内置模块 十一、常用的内置模块11.1 数学计算模块——math11.2 日期时间模块——datetime11.2.1 datetime类11.2.2 date类11.2.3 time类11.2.4 计算时间跨度类——timedelta11.2.5 将日期时间与字符串相互转换 11.3 正则表达式模块—…...

发现无尽的创意可能性——Photo Image Editor Pixelstyle for Mac

无论您是一名专业摄影师还是一个爱好者,您都需要一款强大而多功能的图像编辑软件来实现您的创意。Photo Image Editor Pixelstyle for Mac将成为您的创作利器,帮助您探索图像编辑的无限可能性。 Photo Image Editor Pixelstyle for Mac是一款专业级的图…...

Smart Community(1)之设计规范

通过前面大数据开发相关知识的学习,准备做一个项目进行练习---我给他起了一个响亮的名字:基于HadoopHA的智慧社区服务平台 设计规范: 做一个项目之前肯定要先规定一些开发过程中的设计规范 (一)数据埋点规范&#xf…...

爬虫工作者必备:使用爬虫IP轻松获得最强辅助

目录 一、爬虫IP的作用与优势 二、选择合适的爬虫IP服务商 三、使用爬虫IP的注意事项和技巧 代码示例 四、合法合规使用爬虫IP 总结 随着互联网的发展,数据已经成为企业竞争的核心资源。而获取这些数据的有效方式,就是通过爬虫技术。但是&#xff…...

工作比读研简单多了

工作比读研简单多了,因为至少有人能解答 工作遇到的问题相比读研时遇到的问题幸福太多,简单太多。因为读研时遇到的更多是未知的问题,是科学问题,是论文中也没有答案的问题,问不着答案,搜不着结果&#xf…...

【音视频】H264视频压缩格式

H264简介 H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准里称为H.264, 在MPEG的标准里是MPEG-4的一个组成部分-MPEG-4 Part 10,又叫Advanced Video Codec,因此常常称为MPEG-4AVC或直接叫AVC。 压缩算…...

Windows【工具 04】WinSW官网使用说明及实例分享(将exe和jar注册成服务)实现服务器重启后的服务自动重启

官方Github;官方下载地址。没有Git加速的话很难下载,分享一下发布日期为2023.01.29的当前最新稳定版v2.12.0网盘连接。 包含文件: WinSW-x64.exesample-minimal.xmlsample-allOptions.xml 链接:https://pan.baidu.com/s/1sN3hL5H…...

【C++面向对象侯捷】3.构造函数

文章目录 class 的声明inline(内联)函数access level(访问级别)构造函数构造函数可以有多个- 重载! class 的声明 inline(内联)函数 access level(访问级别) 构造函数 构…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...