
Jni
文章平均质量分 93
峥嵘life
目前职业:android开发工程师
2016年江西农业大学计算机信息工程学院毕业
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android 源码中jni项目 加载so目录小结
如何实现把so放到Android设备目录system/lib64下面,系统应用apk就能自动获取里面的so?如果实现了这个功能,后续修改了jni具体功能实现,就不用修改这个apk的代码,只要替换这个so就可以完成不同的实现了。其实这个功能不难,只要是系统源码编译的应用就可以;具体如何编译可以看本文最后的介绍。本文主要介绍一下,系统源码应用编译后,load so的顺序:顺序就是优先apk目录下的 lib/arm64/,然后 system/lib64/,有的还会加载 vendor/lib64/原创 2024-09-06 20:19:29 · 1470 阅读 · 0 评论 -
Android 系统源码项目加载预编好的so库
Android 系统开发中会源代码有加载so库的情况,本文进行简单介绍。Android Studio 项目加载so库,已经有介绍过:Android Studio加载so和使用so还是比较方便的,环境OK的情况,几分钟就可以完成验证测试了。但是如果要在系统源代码Java里面加载和使用so就比较麻烦了,主要通过Android.mk或者Android.bp编译加载so,反正网上的代码写的mk/bp基本都是不行的。本来以为只是介绍一下编译使用的Android.mk或者Android.bp就可以了,原创 2024-09-06 20:14:18 · 2069 阅读 · 2 评论 -
Android Studio项目加载预编好的so库
Android 项目中需要调用别人的so的实现,那么我们的应用需要如何操作呢?本文主要介绍Android Studio中如何调用现有的so库代码。Android JNI生成的so库有很多不同架构类型,比如:armeabi、armeabi-v7a、arm64-v8a、x86;原创 2024-03-27 16:00:00 · 4420 阅读 · 1 评论 -
Android JNI SO库和对应的CPU架构详解
Android JNI生成的so库有很多不同架构类型,比如:armeabi、armeabi-v7a、arm64-v8a、x86;Android 系统不同的cpu架构就要使用不同类型的so库,如果不考虑内存大小,放全套也是没有问题的;但是实际使用中,很多时候只会放一套或者两套就可以了。本文介绍Android cpu不同架构的so库区别,以及如何查看当前系统是什么cpu架构,以便在实际场景中做出最优选择。原创 2024-03-27 08:42:59 · 2397 阅读 · 0 评论 -
Android JNI常用API函数介绍
(1)JNIEnv 结构体相关函数(2)JavaVM 结构体相关函数(3)jclass 相关函数(4)jobject 相关函数(5)字段相关函数(6)数组相关函数(7)字符串函数其实主要的JNI API 函数就上面这些相关的内容;大部分会用,那么JNI 的API 就没啥难度了。其他的API函数可以看jni.h文件,但是这个文件是没有注释的,根据字面意义理解就差不多了。除了JNIEnv和JavaVM使用的获取使用比较少,其他API使用的还是比较多的;原创 2024-03-14 17:01:51 · 1799 阅读 · 1 评论 -
Android JNI静态注册和动态注册方法详解
这里的JNI静态方式注册方法和JNI的static方法是没有关系的。本文主要介绍jni.cpp代码中动态注册方法的讲解。很多人对这块知识还是比较陌生的,什么是静态注册?什么是动态注册?有些人可能都不清楚。JNI静态注册和动态注册是哪里的代码?什么时候使用静态注册?什么时候使用动态注册?为什么呢?其实一般情况用不到动态注册,但是复杂JNI项目或者系统源码中可能会用到动态注册。特别是系统源码中基本都是用的动态注册的形式,注册JNI方法,所以是有必要进行学习的。原创 2024-03-14 10:13:20 · 2426 阅读 · 0 评论 -
Android JNI 普通方法和静态方法详解
Android Jni中Java的静态方法和普通方法有什么区别?很多人可能都不清楚,如果想知道的可以了解一下。这个问题很少人会关注,一个是因为很少会静态方法调用JNI或者回调静态的Java方法;另外一个是因为知道了或者调试过就不难了,所以很多人觉得没必要讲解和记录。但是对于JNI 的初学者来说静态方法还是比较陌生的,很容易会懵逼的,不知道有啥区别。本文主要讲解一下上面两种静态方法在JNI中的区别,有兴趣的可以看看。原创 2024-03-06 16:59:22 · 1605 阅读 · 0 评论 -
Android JNI 复杂数据demo ,字符串、数组对象等数据操作讲解
Android JNI复杂数据的传输,比如数组,字符串等数据传给底层处理,对于JNI使用不多的开发者,可能开发会比较吃力。本文主要介绍JNI复制数据的传递和打印,不是很复杂的JNI Demo代码,但是对于复杂数据的处理的使用是很有帮助的。原创 2024-03-06 16:53:36 · 1423 阅读 · 0 评论 -
Android JNI复杂用法,回调,C++中调用Java方法
/创建对象的本地变量//获取类对象I)V");上面(1)和(2)是没什么研究价值的,NewGlobalRef和FindClass都是固定的写法。(3)和(4)的不用方法的调用区别就比较大了,使用不同的api函数还可以修改Java的变量属性。静态方法和动态方法调用的api函数也不一样,有返回值的方法和没有返回值的方法调用的api函数也是不一样的。并且Java方法或者变量即使是private修饰的也不影响cpp调用过去,因为反射是不受修饰符影响的。原创 2024-03-02 17:39:58 · 2743 阅读 · 0 评论 -
Android Jni添加打印(C++打印)
Android Jni中添加日志打印其实就是C/C++日志打印Android环境的C/C++代码打印,可以添加相关头文件后,调用打印方法跟Android打印类似,也是有打印级别,I,D,W,E#include //添加头文件#define LOG_TAG "TstCPlus" //定义TAG其他级别打印也是同理使用。上面的方法把定义都写在打印的定义都写在一个类里面了,如果多个类使用打印就不方便了,原创 2024-03-02 17:34:07 · 2598 阅读 · 0 评论 -
Android Jni的介绍和简单Demo实现
JNI 全程:JNI(Java Native Interface),通俗翻译:Java本地方法官方说法:提供一种Java字节码调用C/C++的解决方案,JNI描述的是一种技术。所以这里的Nativie的本地的意思就是C/C++,所以JNI通俗理解就是Java调用C/C++的方案技术。//定义变量和方法private:int number;public://定义方法。原创 2024-02-26 09:19:47 · 2485 阅读 · 0 评论