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

相关推荐

  1. jni,android

    2024-06-07 23:38:02       14 阅读
  2. Android JNI---入门了解

    2024-06-07 23:38:02       15 阅读
  3. Android基础-JNI

    2024-06-07 23:38:02       6 阅读
  4. android JNI float *转MutableList

    2024-06-07 23:38:02       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 23:38:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 23:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 23:38:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 23:38:02       20 阅读

热门阅读

  1. 监控易监测对象及指标之:全面监控LDAP服务器

    2024-06-07 23:38:02       9 阅读
  2. 面试题:CSS 怎样实现动画?

    2024-06-07 23:38:02       6 阅读
  3. webpack学习

    2024-06-07 23:38:02       8 阅读
  4. vite热更新导致的问题及解决

    2024-06-07 23:38:02       7 阅读
  5. mysql自带分页

    2024-06-07 23:38:02       7 阅读
  6. 洛谷 P1253 扶苏的问题 题解 线段树

    2024-06-07 23:38:02       9 阅读
  7. Python类详解

    2024-06-07 23:38:02       9 阅读