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

android-JNI

1.2【静态库】的特点: (.a)
①静态库对函数库的链接是在编译期完成的。执行期间代码装载速度快。
②使可执行文件变大,浪费空间和资源(占空间)。
③对程序的更新、部署与发布不方便,需要全量更新。如果 某一个静态库更新了,所有使用它的应用④程序都需要重新编译、发布给用户。

1.1 简介(.so)
在程序编译时并不会链接到目标代码中,而是在运行时才被载入。不同的应用程序如果调用相同的库,那么在内存中只需要有一份该共享库的实例,避免了空间浪费问题。同时也解决了静态库对程序的更新的依赖,用户只需更新动态库即可。

1.2 动态库分类(根据动态库的载入时间 load time )
1.动态链接库: 在启动 app 时立刻将动态库进行加载 (随程序启动而启动)
2.动态加载库: 当需要的时候再使用 dlopen 等通过代码或者命令的方式来加载 (在程序启动之后)
以上行为是由动态链接器 (Dynamic linker, 简称 dyld) 来完成

1.3【动态库】的特点:
①动态库把对一些库函数的链接载入推迟到程序运行时期(占时间)。
②可以实现进程之间的资源共享。(因此动态库也称为共享库)
③将一些程序升级变得简单,不需要重新编译,属于增量更新。

动态库和静态库都的实现文件中都没有main函数,一般是。h和。c,编译程。a

或者。so,然后调用方去在main中使用他们的 具体函数。:参考:

https://blog.csdn.net/weixin_46129506/article/details/120587440?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7-120587440-blog-132255029.235%5Ev43%5Epc_blog_bottom_relevance_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7-120587440-blog-132255029.235%5Ev43%5Epc_blog_bottom_relevance_base2&utm_relevant_index=14

jni:Android Studio最新CMake使用教程(一):创建和了解Native工程_android studio native c++教程-CSDN博客S

shared是动态库。static是静态库

可以看到MainActivity里首先加载了我们在CMakeLists里定义的动态库 ,然后声明了一个native的方法stringFromJNI(),这个方法在onCreate里被调用。正是这个方法实现了Java代码调用C++/C代码。

打开native-lib.cpp,在这个源文件里,定义了一个与MainActivity里native方法对应的Jni方法:

调用外部so:Android Studio最新CMake使用教程(二): 生成共享库.so文件并在其他项目中引用_makejar生成的.so在哪里-CSDN博客

 Jni里返回值类型与对应的java端接收的类型要一致,一般是基础数据类型前面加上j

http://www.lryc.cn/news/366390.html

相关文章:

  • Go_unsafe包
  • 【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十三)
  • 企业建站响应式网站建设平台版源码系统 海量模版可选择 带完整的安装代码以及搭建教程
  • 在 VSCode 中搭建 Flutter 开发环境并运行项目
  • 如何执行VMware P2V迁移|VMware Converter和替代方案
  • 03-3.2.3 队列的链式存储的实现
  • Spring AI 第二讲 之 Chat Model API 第八节Anthropic 3 Chat
  • 【ARM 常见汇编指令学习 6.2 -- ARMv8 汇编指令 SDIV 详细介绍】
  • 【ArcGIS微课1000例】0113:大地测量要素概述与构建
  • 【记录】LangChain+本地模型的文档问答(webUI)
  • Winddow系统下关于Golang使用Cgo的配置
  • python面向过程与初始面向对象编程
  • vue3 实现自定义指令封装 --- 通俗易懂
  • 5.31.15 使用图像到图像转换和 YOLO 技术对先前的乳房 X 光检查结果中的异常进行早期检测和分类
  • 题解web
  • 在keil5中打开keil4工程的方法
  • 【代码随想录算法训练营第37期 第二十四天 | LeetCode77. 组合】
  • 探索Linux中的`tree`命令:目录结构的可视化利器
  • ES 面试手册
  • Mybatis缓存的生命周期、使用的特殊情况
  • day 37 738.单调递增的数字
  • 【加密与解密】【01】网络安全体系
  • nvm,node不是内部命令,npm版本不支持问题(曾经安装过nodejs)
  • 从入门到精通:基础IO
  • 网络空间安全数学基础·多项式环与有限域
  • 路由器重启真的好吗?多久重启一次更好?
  • 删除目录
  • HCIP-Datacom-ARST自选题库__BGP/MPLS IP VPN判断【10道题】
  • 【Go语言精进之路】构建高效Go程序:掌握变量、常量声明法则与iota在枚举中的奥秘
  • python记录之bool