当前位置: 首页 > 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(访问级别) 构造函数 构…...

ZTE光猫工厂模式解锁:5分钟开启隐藏功能的终极指南

ZTE光猫工厂模式解锁:5分钟开启隐藏功能的终极指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 核心关键词:ZTE光猫工厂模式解锁 长尾关键词: ZT…...

【2025】AWVS安装保姆级教程(最新25.1.2可用)

【2025】AWVS安装保姆级教程(最新25.1.2可用) 文章目录 工具下载Host 重定向AWVS安装AWVS查看安装失败原因 工具下载 点击下载即可 下载完的工具后缀格式为.apk,需要将其改为.zip,然后将其解压得到以下工具后续安装使用 Host 重…...

告别手动预约:i茅台自动预约系统5分钟部署指南

告别手动预约:i茅台自动预约系统5分钟部署指南 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地址: https://gitcode…...

AB包相关知识

Lua与AB包/Addressables以及YooAsset 摘自千问: Lua 是菜谱(逻辑):决定了菜怎么做,味道如何。因为你需要随时换菜谱(热更新),所以菜谱不能死板地印在墙上(编译进主包&a…...

终极解决方案:Windows Cleaner免费开源工具,3步彻底解决C盘爆红问题

终极解决方案:Windows Cleaner免费开源工具,3步彻底解决C盘爆红问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否也经历过这样的…...

告别RaiDrive广告!用开源rclone+Alist,免费把阿里云盘/百度网盘变成电脑本地硬盘

开源方案实战:用rcloneAlist打造无广告的云盘本地化体验 每次打开RaiDrive时弹出的广告窗口是否让您感到困扰?商业软件的收费模式是否让您犹豫不决?今天,我们将彻底解决这些问题。通过开源工具Alist和rclone的组合,您不…...

3步掌握B站缓存视频转换:m4s-converter完整指南

3步掌握B站缓存视频转换:m4s-converter完整指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否在B站缓存了大量珍贵的学习资料…...

解放学术资源:caj2pdf——打破CAJ格式壁垒的开源解决方案

解放学术资源:caj2pdf——打破CAJ格式壁垒的开源解决方案 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换,成功与否,皆是玄学。 项目地址: https://gitcode.com…...

PyAutoGUI图像识别踩坑实录:如何让游戏自动化脚本更稳定?(附避坑指南)

PyAutoGUI图像识别稳定性优化实战:从原理到避坑指南游戏自动化脚本开发中,图像识别是最容易翻车的环节。上周我的《原神》自动采集脚本在好友电脑上运行时,连续三次误点了传送锚点而非目标采集物——这让我意识到不同设备环境对locateOnScree…...

Resend + Cloudflare 域名邮箱搭建实战:避坑指南与 Foxmail 配置全解析

一、 前言:为什么选择这套方案?在互联网上混,专属域名邮箱(如 adminyourdomain.com)就是你的“赛博身份证”。相比于使用 xxxxqq.com,它能瞬间提升你的职业感与信任度。目前最稳、最快且零成本的配置方案是…...