- 博客(565)
- 资源 (35)
- 收藏
- 关注
原创 Android Audio其他——音效文件加载(三)
上一篇文章介绍了按键音播放流程的整个链路,在最后的音效播放前有一个异步加载操作,这里我们就来看一下音效资源文件的加载流程。
2025-08-12 09:35:55
410
原创 Android Audio其他——按键音播放流程(二)
在我们日常使用Android设备的过程中,每一次按键操作——无论是点亮屏幕、调节音量,还是输入文字——往往都伴随着清脆或柔和的“滴答”声。这些看似微不足道的提示音,不仅提供了即时的操作反馈,增强了交互的确定性,也潜移默化地塑造着用户对系统响应速度和品质的感知。它们就是 Android 系统中无处不在的按键音(Key Tones)。
2025-08-12 09:35:38
292
原创 Android Audio音量——音量设置flags(十一)
在 Android 音频系统中,设置音量时可以使用各种 flags 来控制音量调整的行为。这些 flags 主要用在 AudioManager 类的 setStreamVolume()、adjustStreamVolume() 和 adjustVolume() 等方法中。
2025-08-11 09:45:40
562
原创 Android Audio实战——获取活跃音频类型(十五)
在 Android Audio 开发中,很多场景需要获取当前正在播放的音频类型,而在音频管理器 AudioManager 中并没有发现类似的接口,这一篇文章就来看一下实现获取活跃音频类型的方式。
2025-08-11 09:45:18
652
原创 Android Audio实战——死锁案例解析(十四)
前两篇文章解析了一个 audioserver 异常崩溃的问题,同时也了解到 TimeCheck 超时崩溃处理音频硬件或驱动无响应的情况外,还有死锁也可能导致 TimeCheck 超时。
2025-07-31 09:31:04
323
原创 Android Audio实战——TimeCheck机制解析(十三)
上一篇文章我们虽然通过 tombstoned Log 推断出 audioserver 崩溃的原因就是系统调用内核接口时发生阻塞,导致 TimeCheck 检测超时异常而崩溃,但并没有实质性的证据证明是 kernel 层出现问题导致的崩溃,因此这里我们继续看一下 TimeCheck 的检测原理。
2025-07-31 09:30:47
401
原创 Android Audio实战——音频输出设备异常(十二)
这是一个 CarService 崩溃的问题,外在表现就是黑屏卡死,对于车机系统 CarService 服务的崩溃,遇到什么样的外在表现都不足为奇,现在我们就来分析一下整个流程,这里跟随项目需求使用了Android 9.0 的源码分析。
2025-07-30 09:20:23
489
原创 Android Audio实战——音频Xrun问题处理(十一)
在 Android 音频处理系统中,音频过载(overrun)和不足(underrrun)是常见问题,两者统称为 Xrun。音频过载 Overrun 通常由于当音频数据生产速度超过消费速度时发生,导致数据丢失。音频不足 Underrun 是指当音频数据消费速度超过生产速度时发生,导致播放中断或静音。
2025-07-30 09:19:55
884
原创 Android Wifi——网络信息XML(二十一)
通过上一篇文章的代码我们知道文件路径是在 StoreFile 初始化的时候传入进来的,这里我们就来看一下 StoreFile 的创建流程和文件的存储位置。
2025-07-29 09:40:15
498
原创 Android Wifi——网络自动连接(二十)
我们在使用 WiFi 的时候,通常都是连接一次后会保存对应的信息,下一次会在搜索到该 WiFi 时会自动连接,这里我们就来看一下 WiFi 自动连接的相关流程。
2025-07-29 09:40:03
568
原创 Android Wifi实战——P2P状态变化回调(三)
上一篇文章其实已经找到了问题的原因,获取硬件 P2P 接口失败导致 P2P 功能不可用,但是在 Log 中还发现了一个奇怪的现象:
2025-07-28 08:54:59
685
原创 Android Wifi实战——P2P状态变化广播(二)
遇到这样一个问题,APP 监听 WiFi P2P 可用状态广播不断变化,导致功能不可用,这里就以该现象为例分析一个 WiFi P2P 可用状态广播的发送逻辑。
2025-07-28 08:54:42
639
原创 Android编译系统——Ninja编译介绍(十六)
Ninja 是一个轻量级、高性能的构建系统,专注于极速增量编译,广泛用于 Chromium、Android(Soong)、CMake(生成后端)等项目中。它的核心设计理念是简单和速度,通过最小化构建逻辑和并行化任务来实现高效编译。
2025-07-24 09:12:14
250
原创 Android编译系统——Android.bp语法介绍(十五)
Android.bp 是 Android 构建系统(Android Build System)中的配置文件,用于描述如何编译和打包项目中的模块。它是用 Blueprint 编写的,其语法类似于 JSON,但专为 Android 编译系统设计,提供了更高效、灵活的模块化管理。
2025-07-24 09:12:01
430
原创 Android编译系统——Context配置(十四)
上一篇文章 minibp 编译入口函数中调用了 blueprint.NewContext() 函数配置一个 Context 结构,并且后续的很多配置都是在该函数中实现的。
2025-07-23 09:21:46
466
原创 Android编译系统——Blueprint详细分析(十三)
上一篇文章我们介绍了 blueprint 的作用和执行过程,这里我们从代码的层面来分析 blueprint 的具体执行流程。
2025-07-23 09:21:24
677
原创 Android编译系统——Blueprint脚本系统(十二)
Blueprint 是一个 可视化脚本系统,主要用于 Unreal Engine(虚幻引擎) 中,允许开发者通过节点式编程(Node-based Programming)来创建游戏逻辑,而无需编写传统代码。它特别适合 非程序员(如设计师、美术师)或希望快速原型开发的程序员使用。
2025-07-22 06:33:26
625
原创 Android编译系统——Kati执行过程(十一)
我们知道 soong_ui 执行编译时,会调用 ckati 把 makefile 编译成 *.ninja 文件,在 soong_ui build 过程中会运行 runKatiBuild() 和 runKatiPackage() 函数,加载 core/main.mk 和 packaging/main.mk,搜集所有的 Android.mk 文件,分别生成 out/build-aosp_arm.ninja 和 out/build-aosp_arm-package.ninja,这就是 kati/ckati 的编译
2025-07-22 06:32:43
684
原创 Android编译系统——Kati生成过程(十)
上一篇文章我们对 Kati 有了一个基本的了解,并且文章最后展示了如何使用 g++ 编译多个 C++ 源文件(.cc)生成对应的目标文件(.o),最终可以链接成一个可执行文件。这里我们从 ckati 的入口在 main.cc继续分析。
2025-07-21 08:51:49
457
原创 Android编译系统——Kati工具介绍(九)
kati 是 Google 专门为了 Android 而开发的一个小项目,基于 Golang 和 C++。目的是为了把 Android 中的 Makefile,转换成 ninja 文件。
2025-07-21 08:51:38
543
原创 Android编译系统——编译system.img流程(八)
上一篇文章介绍了简单介绍了 Image 打包流程,最终会使用 build_image 可执行程序生成系统镜像(如 system.img、vendor.img 等),这里我们继续分析 system.img 的生成流程。
2025-07-17 09:21:08
494
原创 Android编译系统——Image打包流程(七)
前面我们介绍了编译的初始化和 make 的完整流程,从 make 中我们看到了,最终编译会生成 system.img、super.img、ramdisk.img 等镜像文件,我们把这些镜像文件烧录到手机中,即可完成版本的替换升级。这一节我们来一起看看这些 image 是如何打包生成的。
2025-07-17 09:20:51
344
原创 Android编译系统——.mk文件分析(六)
执行 runKatiBuild 时,有个重要的步骤,就是加载 build/make/core/main.mk,main.mk 文件是 Android Build 系统的主控文件。这里我们就来从 main.mk 文件开始进行分析。
2025-07-16 09:31:49
406
原创 Android编译系统——make编译过程(五)
前面的几篇文章我们分析编译环境初始化的过程,环境变量已经加载,并配置了编译目标,接下来执行一个 make 命令我们就能够进行编译。
2025-07-16 09:31:30
902
原创 Android编译系统——config.mk构建变量(四)
上一篇文章介绍了编译目标选择,我们了解到在 lunch 的过程中会对核心变量进行初始化,主要是同 main.mk 显式引入 build/make/core/config.mk 来完成。这里我们就来分析一下 config.mk 的加载流程。
2025-07-15 08:45:54
792
原创 Android编译系统——编译目标选择(三)
环境变量初始化完成后,需要选择一个编译目标。即 source build/envsetup.sh 的下一步 lunch xx。这里我们就来分析编译目标选择的详细流程。
2025-07-15 08:45:39
734
原创 Android编译系统——编译环境初始化(二)
本篇文章将聚焦于 Android 编译流程中的环境初始化阶段,这是整个编译过程的第一步,也是至关重要的一步。在这个阶段中,系统会设置好所需的构建环境、加载必要的配置信息、定义关键变量,并为后续的编译动作做好准备。
2025-07-14 09:48:16
465
原创 Android编译系统——基础介绍(一)
Android编译系统是构建Android操作系统及其应用程序的核心基础设施,负责将源代码、资源文件等编译打包成可在设备上运行的软件包。随着Android版本的演进,编译系统经历了多次重大变革。
2025-07-14 09:48:02
1002
原创 Android Wifi实战——获取热点密码(一)
对于WiFi 热点开发来说,获取热点密码属于最基础的功能,在实际开发中遇到了首次获取 WiFi 热点密码错误的问题,再次获取恢复正常。这里借着这次机会来看一下热点密码的获取流程。
2025-07-10 09:13:25
425
原创 Android性能优化——开机启动优化总结(十六)
通过前面的文章内容,我们已经了解了系统优化方案的排查方法和一些问题的解决思路,这里继续针对开机启动优化方向做一次总结。
2025-07-10 09:12:37
376
原创 Android性能实战——播放音乐导致界面卡顿处理(十五)
上一篇文章分析播放音乐界面卡顿的最终结论是仪表屏的合成方式发生了变化导致,因此怀疑音乐播放时仪表屏的音乐小窗口变化导致的。虽然有怀疑,但是我们还是先来看一下合成方式变化的相关代码。
2025-07-09 09:12:58
554
原创 Android性能实战——播放音乐导致界面卡顿分析(十四)
对于性能分析来说,界面卡顿是最常见的问题。首先多打开一些设备中的应用程序,然后分别在播放音乐和暂停音乐的情况下滑动最近任务列表,会发现播放音乐的时候会有明显的掉帧情况,而暂停音乐则不会有这种情况。
2025-07-09 09:12:39
764
原创 Android性能分析——Systrace中CPU分析(十三)
Systrace 中的 CPU 信息区域位于视图的顶部,前面的文章中很少通过 CPU 的相关数据去分析系统性能,其实 CPU 频率、调度、锁频和锁核等相关信息可以更好的了解当前系统的性能。
2025-07-08 09:08:02
608
原创 Android性能实战——Systrace分析实例(十二)
上一篇文章我们得到了一个 html 文件,这里我们来通过拿到的 trace.html 文件来分析一些耗时场景。
2025-07-08 09:07:30
561
原创 Android性能分析——Systrace系统卡顿分析(十一)
系统卡顿是性能优化中比较常见的问题场景,而导致界面卡顿的原因也非常多,有 APP 本身的问题,有系统原因导致卡顿的,也有硬件层的、整机卡的。
2025-07-07 08:59:49
608
原创 Android性能分析——Systrace使用介绍(十)
上一篇文章我们介绍了 Systrace 的基础信息以及 trace 数据的抓取流程,这一篇主要介绍如何查看 Systrace 中的线程状态,如何对线程的唤醒信息进行分析,如何解读信息区的数据,以及介绍了常用的快捷键。
2025-07-07 08:59:31
579
原创 Android性能分析——Systrace基础介绍(九)
用户对卡顿的感知,主要来源于界面的刷新,而界面的性能主要是依赖于设备的UI渲染性能,如果我们的UI设计过于复杂,或是实现不够好,设备又不给力,界面就会像卡住了一样,给用户卡顿的感觉。
2025-07-04 09:16:36
383
原创 Android性能优化——无障碍服务启动(八)
对于提高 com.test.xiaoxu 服务的启动时间,上一篇文章已经就有结论了,由于 App 的 Application 中使用 SharedPreferences 读取数据,在屏幕解锁前启动会出现异常。
2025-07-04 09:16:17
441
原创 Android性能优化——进程启动优化(七)
开始实际开发中系统进程的速度也是设备性能优化的关键点,我们也经常遇到要求提高某一服务的启动速度,这里我们假如要提高一个进程为 com.test.xiaoxu 的系统预装三方应用服务的启动速度。
2025-07-03 00:24:42
896
原创 Android性能优化——Dex预优化介绍(六)
在 Android 应用开发领域,性能优化始终是开发者关注的核心议题之一。随着应用功能日益复杂,代码量不断增长,如何确保应用启动迅速、运行流畅成为了一项重要挑战。Dex 预优化技术正是在这样的背景下应运而生,它通过提前对 Dex 字节码进行优化处理,显著提升了 Android 应用的运行时性能。
2025-07-03 00:24:06
829
ContentProvider测试Demo
2015-01-14
断点续传下载
2015-05-19
Android控件的简单使用
2015-02-16
Fragment使用
2015-01-20
Android多语言strings.xml生成工具
2025-04-09
HCI Log分析工具-CPAS-11
2024-04-17
Android Audio相关流程时序图
2023-11-30
Android Radio相关流程时序图
2023-09-01
本地实现U盘扫描SDK部分代码
2022-10-28
开发调试所使用的各种格式音视频
2022-07-20
Android端Socket实现聊天功能
2021-10-11
SocketDemo.zip
2021-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人