ndk开发
文章平均质量分 96
徐福记456
生命不息,奋斗不止,热爱音视频,努力维护开源社区,记录自己成长之路。
展开
-
Android的JNI开发全面介绍与最佳实践
JNI全称是Java Native Interface,为Java本地接口,是连接Java层与Native层的桥梁。在Android进行JNI开发时,可能会遇到couldn't find "xxx.so"问题,或者内存泄漏问题,或者令人头疼的JNI底层崩溃问题。Java层如何调用Native方法?Java方法的参数如何传递给Native层?而Native层又如何反射调用Java方法?这些问题在本文将得到答案,带着问题去阅读会事半功倍,接下来我们开始全方位介绍与最佳代码实践。原创 2022-04-14 20:51:51 · 28429 阅读 · 7 评论 -
NDK编译脚本:Android.mk or CMakeLists.txt
Android NDK以前默认使用Android.mk与Application.mk进行构建,但是在Android Studio2.2之后推荐使用CMake进行编译。Cmake是跨平台编译工具,全称为cross platform make,内建c、c++、java自动相依性分析功能,关于Cmake更多详情请参考官网:https://cmake.org/documentation/。下面我们对比下Android.mk与CmakeLists.txt的语法。一、Android.mk语法以动态库编译hell原创 2020-05-31 23:10:00 · 33059 阅读 · 0 评论 -
ndk开发的异常定位与回调给java层
在做android端的ndk开发时,有时候抛出莫名其妙的异常,因为只有地址,不知道错误到底在哪个方法的哪一行,这样很头疼。另外,native层发生异常,java调用层无法感知,用户也就无法知道到底发生了什么事情。本篇文章主要讨论地址类型异常的定位以及异常回调给java层。native层抛出的地址类型异常如下:native: #10 pc 000c1bf7 /system/lib/liba原创 2018-02-05 02:35:59 · 35822 阅读 · 5 评论 -
ndk开发之多线程同步与通信
在进行android的ndk开发时,耗时任务会用到native子线程。在pthread头文件中定义有创建子线程、互斥锁、条件变量等相关方法。线程同步是利用互斥锁(mutex)与条件(condition)变量的结合,经常出现于生产者与消费者模式场景中。先定义相关变量:#include <pthread.h>//生产者线程pthread_t thread_product;//消费者线...原创 2018-02-13 00:40:33 · 36593 阅读 · 0 评论 -
JNI开发规范——从细节开始
JNI是Java本地接口。它定义了Android从托管代码(以Java或kotlin编程语言编写)到本地代码(C/C++编写)交互编译成字节码的一种方式。JNI是厂商中立的,支持从动态共享库加载,虽然有时繁琐,但是合理高效。如果你还不够熟悉它,可以阅读Java Native Interface Specification来更好理解JNI是如何工作的,以及它有哪些可用接口。刚开始阅读时,可能部...原创 2018-08-18 21:01:08 · 39178 阅读 · 0 评论