![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NDK
文章平均质量分 92
字节流动
技术人,8 年大厂经验,熟悉 OpenGL、FFmpeg、Vulkan、Camera 开发,日常技术干货、个人总结、职场经验分享。
展开
-
NDK (C++) 开发中如何使用 ASan 检测内存越界、溢出等内存错误
该文章首发于微信公众号:字节流动什么是 ASanASan 是 Address Sanitizer 简称,它是是一种基于编译器用于快速检测原生代码中内存错误的工具。简而言之,ASan 就是一个用于快速检测内存错误的工具。这里很多朋友有误解,ASan 其实并不能用于内存泄漏检测,Android 平台内存泄漏检测推荐 MallocDebug 。另外需要注意的是 Android O(API >= 27)及以上版本才支持 ASan ,NDK 需要选用 r20 及以上版本。ASan 可以检测到内存..原创 2021-06-07 21:56:23 · 3031 阅读 · 4 评论 -
NDK OpenGLES3.0 开发(九):光照基础
该原创文章首发于微信公众号:字节流动OpenGLES 基础光照模型OpenGLES 目前还无法模拟现实世界的复杂光照效果,为了在效果要求和实现难度之间做一个平衡,往往采用一些简化的模型来模拟光照效果。冯氏光照模型(Phong Lighting Model)便是其中常用的一个光照模型,它由三种元素光组成,分别是环境光(Ambient Lighting)、散射光(Diffuse Lightin...原创 2019-09-23 19:32:02 · 7323 阅读 · 3 评论 -
使用 CMake 解决编译出来的 so 文件过大的问题
在 CMakeLists.txt 文件中加入以下两行,可以减少 90% 以上的体积:set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")...原创 2019-08-15 10:40:11 · 5719 阅读 · 7 评论 -
NDK 开发中的几个重要知识点
该文章首发于微信公众号“字节流动”本博客 NDK 开发系列文章:NDK 编译的三种方式NDK 开发中引入第三方静态库和动态库NDK 开发中 Native 与 Java 交互NDK POSIX 多线程编程NDK Android OpenSL ES 音频采集与播放NDK FFmpeg 编译NDK FFmpeg 音视频解码NDK 直播流媒体服务器搭建NDK 直播推流与引流N...原创 2019-03-08 18:27:41 · 1870 阅读 · 0 评论 -
NDK 开发中 Native 方法的静态注册与动态注册
该文章首发于微信公众号“字节流动”本博客 NDK 开发系列文章:NDK 编译的三种方式NDK 开发中引入第三方静态库和动态库NDK 开发中 Native 与 Java 交互NDK POSIX 多线程编程NDK Android OpenSL ES 音频采集与播放NDK FFmpeg 编译NDK FFmpeg 音视频解码NDK 直播流媒体服务器搭建NDK 直播推流与引流N...原创 2019-03-08 18:22:22 · 2437 阅读 · 0 评论 -
NDK 直播推流与引流
该文章首发于微信公众号“字节流动”。本博客 NDK 开发系列文章:NDK 编译的三种方式在 NDK 开发中引入第三方静态库和动态库NDK 开发中 Native 与 Java 交互NDK POSIX 多线程编程NDK Android OpenSL ES 音频采集与播放NDK FFmpeg 编译NDK FFmpeg 音视频解码NDK 直播流媒体服务器搭建流媒体服务器测试...原创 2019-01-27 17:21:39 · 5204 阅读 · 3 评论 -
NDK 直播流媒体服务器搭建
该文章首发于微信公众号“字节流动”。本博客 NDK 开发系列文章:NDK 编译的三种方式在 NDK 开发中引入第三方静态库和动态库NDK 开发中 Native 与 Java 交互NDK POSIX 多线程编程NDK Android OpenSL ES 音频采集与播放NDK FFmpeg 编译NDK FFmpeg 音视频解码NginxNginx 是由俄罗斯人 Igor ...原创 2019-01-27 16:58:00 · 4574 阅读 · 0 评论 -
NDK FFmpeg 音视频解码
本篇介绍一下 FFmpeg 音视频解码。本博客 NDK 开发系列文章:NDK 编译的三种方式在 NDK 开发中引入第三方静态库和动态库NDK 开发中 Native 与 Java 交互NDK POSIX 多线程编程NDK Android OpenSL ES 音频采集与播放NDK FFmpeg 编译封装格式我们经常所说的视频格式,如 mp4 、 mkv 、 rmvb 、fl...原创 2019-01-27 16:43:06 · 5289 阅读 · 0 评论 -
NDK FFmpeg 编译
该文章首发于微信公众号“字节流动”。本博客 NDK 开发系列文章:NDK 编译的三种方式NDK 开发中引入第三方静态库和动态库NDK 开发中 Native 与 Java 交互NDK POSIX 多线程编程NDK Android OpenSL ES 音频采集与播放FFmpeg 是什么?FFmpeg 全称(First Forward MPEG),是一款领先的开源多媒体框架,采...原创 2019-01-27 16:10:39 · 4868 阅读 · 0 评论 -
NDK Android OpenSL ES 音频采集与播放
该文章首发于微信公众号“字节流动”。本博客 NDK 开发系列文章:NDK 编译的三种方式NDK 开发中引入第三方静态库和动态库NDK 开发中 Native 与 Java 交互NDK POSIX 多线程编程OpenSL ES 是什么?OpenSL ES 是一个针对嵌入式系统的开放硬件音频加速库,也可以将其视为一套针对嵌入式平台的音频标准,全称为: Open Sound Lib...原创 2019-01-27 16:01:04 · 5429 阅读 · 1 评论 -
NDK POSIX 多线程编程
该文章首发于微信公众号“字节流动”本博客 NDK 开发系列文章:NDK 编译的三种方式NDK 开发中引入第三方静态库和动态库NDK 开发中 Native 与 Java 交互POSIXPOSIX 全称是 Portable Operating System Interface of UNIX ,表示可移植操作系统接口,本质上是一种编程标准。它定义了操作系统应该为应用程序提供的接口...原创 2019-01-27 15:45:31 · 4681 阅读 · 0 评论 -
NDK 开发中 Native 与 Java 交互
该文章首发于微信公众号“字节流动”前面文章分别介绍的 NDK 编译方式和第三方库的引入方式:NDK 编译的三种方式在 NDK 开发中引入第三方静态库和动态库Java 与 JNI 数据类型对应关系Java 数据类型JNI 数据类型booleanjbooleanbytejbytecharjcharshortjshortintji...原创 2019-01-27 15:34:51 · 5199 阅读 · 0 评论 -
NDK 编译的三种方式
该文章首发于微信公众号“字节流动”通过 Android Studio 默认的方式创建带有 native 方法的类,build 项目。生成与类名相关的 .h 文件。进入 app -> build -> intermediates -> classes -> debug 目录下执行: javah com.haohao.hellojni.MyJNI (先配...原创 2019-01-27 15:08:14 · 7731 阅读 · 0 评论 -
在 NDK 开发中引入第三方静态库和动态库
该文章首发于微信公众号“字节流动”静态库和动态库静态库静态库文件后缀一般为 .a ,利用静态库编译成的可执行文件通常比较大,编译后的执行程序不需要外部函数库的支持。但是,如果一个程序依赖的静态库发生改变,那么这个程序就需要重新编译。动态库动态库也称为共享库,动态库文件后缀一般为 .so (Linux) 或 .dll (Windows) ,相对于静态库,动态库在编译时, 并没有被编译...原创 2019-01-27 14:29:43 · 6876 阅读 · 1 评论 -
NDK 开发中快速定位 Crash 问题
该文章首发于微信公众号“字节流动”在 NDK 开发中最熟悉的关键字非 “backtrace” 莫属,lnux 系统中进程 crash 后通过 backtrace 输出堆栈信息,开发者就是基于这些堆栈信息来定位代码问题。当然定位 Native 层代码问题最优的方式还是通过 IDE(AS、VS)或者 GDB 进行 debug 断点调试,本文针对的是使用第三方 C/C++ SDK 出现 cras...原创 2019-01-13 15:02:30 · 6310 阅读 · 0 评论