![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android ndk
文章平均质量分 83
小鱼0416
这个作者很懒,什么都没留下…
展开
-
Android NDK开发(十三):JNI函数接口详解—线程相关
前面的文章中对于java层 、本地层、JNI层的定义似乎说的有些模糊,这里我按我的理解再定义一下,以便于更好的理解JNI和文章内容。java层就是用java语言写的逻辑,具体体现就是工程中的java文件。本地层就是用C/C++语言所写的逻辑,具体体现是工程中的C/C++文件。JNI层就比较抽象了,我把它定义成使用到JNI标准(JNI定义的接口或类型)的相关逻辑,包括使用到JNI标准的C/C++函数 和 与java native映射的 C/C++函数。原创 2022-11-14 18:22:57 · 1805 阅读 · 1 评论 -
Android NDK开发(十二):JNI函数接口详解—异常处理
我们已经知道,JNI层可以有java异常 和 C/C++异常,那如何处理JNI层的两种异常呢?JNI层抛的C/C++异常在JNI层,通过C/C++的try...catch捕获并处理JNI层抛的java异常在JNI层,通过JNI定义的与异常相关的接口处理 或在java层,通过try...catch捕获并处理JNI层的C/C++异常,通过在JNI层 使用C/C++的try...catch捕获并处理,JNI并没有定义处理C/C++异常的接口,JNI不能处理C/C++异常;原创 2022-09-26 19:08:19 · 1775 阅读 · 0 评论 -
Android NDK开发(十):JNI函数接口详解—数组处理
本篇文章介绍一下如何用JNI接口处理java数组。原创 2022-09-19 09:30:32 · 1735 阅读 · 0 评论 -
Android NDK开发(十一):JNI函数接口详解—引用
JNI中的引用与java中的类似,是用来在JNI中访问java对象的,那么JNI中谁来持有引用呢,那当然是引用变量,那么引用变量如何定义呢,那当然是通过JNI定义的引用类型。JNI中也定义了与java引用类型对应的引用类型(如:jobject、jstring、jclass、jarray、jintArray等),与java类似,JNI的这些引用类型定义的变量称为引用变量,用于持有相同类型的引用,进而访问Java对象。原创 2022-09-19 09:20:14 · 1318 阅读 · 0 评论 -
Android NDK开发(九):JNI函数接口详解—本地层使用java类及实例
通过JNI层,本地层可间接操作java 类和实例的属性和方法,包括实例化类、set/get属性值、调用方法等。由于涉及的接口比较多,我们按功能进行分类说明。原创 2022-08-19 16:45:40 · 2039 阅读 · 0 评论 -
Android NDK开发(八):JNI函数接口详解—字符串处理
java中的字符串默认是UTF-16编码,C/C++中的字符串默认是UTF-8编码,这就需要JNI提供一套具有字符串转换等功能的接口。(注意:其中UTF是Unicode TransformationFormat的缩写,UTF-8和UTF-16都属于unicode。)(1)涉及到的JNI接口 一共涉及到12个接口,根据操作操作字符串的编码格式不同可分为两部分: UTF-8编码 UTF-16编码 本地字符数组转为java字符串 NewStri...原创 2022-05-26 15:12:19 · 1608 阅读 · 0 评论 -
Android NDK开发(六):Java调用本地函数
1 java是如何通过JNI调用本地代码的?主要分两步,首先通过java的System.loadLibrary()方法在java代码中加载动态库,原创 2022-04-28 17:17:18 · 2650 阅读 · 1 评论 -
Android NDK开发(五):JNI基础
1 JNI简介 概念:JNI(Java Native Interface)java本地化接口,本质上是java为我们定义好的一揽子变量、函数、类等,通过这些方法可使 java语言 和 本地语言(C、C++、汇编语言) 进行交互(调用彼此的方法、修改彼此的变量) 作用:让 java 和 C、C++、汇编语言 进行交互(相互调用)。 注意:JNI属于java,NDK属于Android。2 JavaVM及JNIEnv对于JNI来说,JavaVM及JNIEn...原创 2022-04-11 11:18:01 · 3218 阅读 · 0 评论 -
在Windows上查看SO库的依赖情况的方法
本文主要介绍三种方法,用于在Windows系统上查看当前so库对其他so库的依赖情况。方法1:使用NDK自带的 ndk-depends.exe 打开cmd,执行 /你的路径/ndk-depends.exe xxx.so 即可。(注意:可执行程序ndk-depends.exe一般在NDK的安装目录,/prebuilt/windows-x86_64/bin 路径下,如果没有可单独下载)。方法2:使用arm-linux-gnueabihf-readelf.exe ...原创 2022-03-29 14:17:29 · 2877 阅读 · 0 评论 -
Android NDK开发(三):NDK + makefile文件 + make工具生成本地库
这种生成方法需要NDK,两个makefile文件Android.mk、Application.mk,make工具已经集成在NDK中,不需要额外安装。这种方法有两种实现方式:单独使用NDK和使用IDE,两种方式本质相同。由于Android基于Linux内核的,Android源码也需要在Linux环境下编译,单独使用NDK时,我们主要介绍在Linux环境下交叉编译Android的本地库(Linux和Android都是操作系统是并列概念);而借助AS IDE编译时,我们主要介绍在windows环境...原创 2021-11-24 08:57:09 · 5021 阅读 · 0 评论 -
Android NDK开发(二):生成Android本地库的方法
生成Android本地库(Android平台可用的C/C++库),需要使用NDK进行交叉编译,生成工具主要有CMake和Makefile两种。1 NDK简介(1)概念:NDK(Native Development Kit)是Google Android发布的本地开发工具集,包括C/C++编译器、交叉编译工具、一些标准库,如:C标准库、标准数学库、压缩库、Log库等。(2)用途:帮助开发者生成Android本地库(包括动态库和静态库),并能自动将so和java应用一起打包成apk。...原创 2021-11-23 14:20:43 · 3052 阅读 · 0 评论 -
Android NDK开发(一):C/C++库基础知识
1 C/C++库的本质 是编译好的C/C++的二进制代码,可以直接被CPU执行,加上头文件就可以供开发者使用。2 C/C++库分类 根据是否打入到依赖它的目标程序中,分为静态库和动态库。在不同操作系统上,C/C++库的后缀名如下: windows linux Android ios 静态库 .lib .a .a .a 动态库 .dll .so .so .dylib/.tbd 3...原创 2021-06-30 17:36:35 · 2026 阅读 · 0 评论