![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
安卓
文章平均质量分 89
芥末的无奈
这个作者很懒,什么都没留下…
展开
-
Android MediaCodec 简明教程(一):使用 MediaCodecList 查询 Codec 信息,并创建 MediaCodec 编解码器
最近在学习 Android MediaCodec 相关的知识,准备开个新坑把学习过程记录下来,总结成 MediaCodec 教程。在介绍 MediaCodec 编解码之前,让我们学习一些其他与之配套的组件,今天要讲的是。提示:以下是本篇文章正文内容,下面案例可供参考本文介绍了 MediaCodecList 的基本使用方法,并展示了如何使用 MediaCodecList 来创建 MediaCodec 编解码器。原创 2024-01-08 10:10:48 · 2417 阅读 · 0 评论 -
在 Android 上使用 MediaExtractor 和 MediaMuxer 提取视频\提取音频\转封装\添加音频等操作
之前我们介绍了 FFmpeg 并利用它解封装、编解码的能力完成了一款简易的视频播放器。额外的 so 文件。你需要将多个 so 文件集成至你的 app 中,使得 app 整体体积增加。额外的复杂性。这里的复杂性包括多个方面:集成的复杂性。为了引入 ffmpeg,你在编译脚本需要额外对这些库进行维护;此外,通常你不需要 FFmpeg 的全部能力,因此在编译 FFmpeg 库时你需要对其进行裁剪,这部分也需要额外的付出。编程的复杂性。原创 2024-01-02 17:34:48 · 2216 阅读 · 1 评论 -
使用 gcov/lcov/gcovr 在 Android APK 下获取代码覆盖率
本文介绍了 gcov 生成代码覆盖率的基本流程和原理,重点说明了 gcno、gcda 和源码文件之间的关系;通过 `strings` 命令可以查询 gcno 中指定的源码位置,以及 gcda 的生成位置;通过对 `GCOV_PREFIX` 和 `GCOV_PREFIX_STRIP`的设置,可以指定 gcda 生成的位置。最后,通过 [AndroidNativeCodeCoverageExample](https://github.com/jiemojiemo/AndroidNativeCodeCovera原创 2022-07-27 21:59:15 · 2199 阅读 · 1 评论 -
Simpleperf: 一款能在Android 做 Native Profiling 的工具
简介在调试 C/C++ 算法时,我通常喜欢在 Mac 或者 PC 上做 Profiling(性能剖析),因为很多成熟的 IED 自带 Profiler,例如 CLion Profiler。但 C/C++ 算法集成至 app 后,为了拿到更为精确的 Profiling 数据,就需要对 app 进行 native 层的 profiling。Simpleperf 刚好满足了这样的需求。本文将会通过一个例子来说明如何使用Simpleperf,主要目的是想推荐这款好用的工具给大家,例子也尽量简单,更多深入的使用方原创 2021-03-18 20:15:58 · 1758 阅读 · 4 评论 -
Android Studio 导入 so 简明教程:通过一个示例让你理解整个过程
Introduction如果你是一名 C/C++ 开发人员,正在尝试将 C/C++ 的代码往安卓上迁移,那么这篇文章对你有很大的帮助如果你是一名 Android 开发人员,正在尝试将外部 so 嵌入到你的 app 中,那么这篇文章对你有很大的帮助本人属于前一种情况,由于工作的需求,需要把 C/C++ 的 so 库集成至 Android 中进行开发。本人对 Android 开发了解不多,更多是...原创 2020-04-26 15:06:29 · 2823 阅读 · 0 评论 -
安卓小课堂之:读写文件(内部存储)
啥是内部存储内部存储位于系统中很特殊的一个位置,如果将文件存储在内部存储中,那么文件只能默认被你的应用访问到,并且同一个应用创建的所有文件都在相同的目录下。创建于内部存储的文件与应用相关联,应用卸载后文件也被删除。内部存储所有内容都在安卓文件系统下的 data,其中 data 又有三个子目录:data |- app |- data |- localapp 存放所有安装的ap...原创 2019-07-10 10:30:01 · 2332 阅读 · 0 评论 -
JNI 简明教程之手把手教你入门
1. 序言有些时候,我们不可避免地要在 Java 中使用 native 代码(例如 C/C++),或是为了运行效率,或是为了不重复造轮子直接使用已有的 C/C++ 类库,或是为了防止被反编译。JNI是一个比较复杂的技术,因为它涉及到了两种语言。在这个教程开始之前,我假设你熟悉以下几个技术:JavaC/C++ 和 gcc 编译2. 开始JNI之旅2.1 JNI与CStep 1: ...原创 2019-07-31 09:20:12 · 1184 阅读 · 0 评论