
android app
MyLinChi
这个作者很懒,什么都没留下…
展开
-
Android音频播放器的实现
多媒体在娱乐设备的用户体验中占了很大一部分,在硬件设备的存储容量不断上升的同时,需要开发功能完善、高质量的多媒体处理软件。任何一门技术,如果了解了它的基本原理和框架,就有一种一览众山小的感觉。因此,我们先了解一下android音频播放状态。 播放一首歌,可以分为很多状态。一切准备就绪等待播放时的状态为Prepared状态,就是已经准备好的意思,对应的正在准备的状态时Prearing状态(该原创 2016-07-28 14:24:25 · 1031 阅读 · 1 评论 -
Android内核开发之一:理解和掌握repo工具
由于Android源码是用repo工具来管理的,因此,搞Android内核开发,首先要搞清楚repo是什么东西,它该怎么使用?作为《Android内核开发》系列文章的第二篇,我们首先谈谈对repo工具的理解和使用。1. repo是什么?repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库转载 2018-03-31 13:41:45 · 555 阅读 · 0 评论 -
Android内核开发之二:源码的版本与分支详解
我想很多初学者或许跟我一样,看完Android源码下载相关的文章以后,就开始兴致勃勃地去下载Android源码了,但是下载完了源码后,有没有像我一样产生如下几个困惑呢?(1) Android版本有哪些分支可用?每个分支的TAG是什么?(2) Android源码下载完了怎么没有看到Linux内核代码?Android源码对应Linux内核是否可以从kernel.org官网去下载?Android对标准的...转载 2018-03-31 13:48:56 · 2386 阅读 · 0 评论 -
Android内核开发之三:系统编译输出的镜像文件
本文是《Android内核开发》的第四篇文章,主要介绍一下源码编译输出的几个重要的镜像文件,这里把bootloader源码和Linux内核源码的编译输出也算在其中,因为毕竟Android系统缺少了这两个部分在设备上也是跑不起来的。1. MLO, u-boot.img 任何操作系统的启动,都离不开“引导程序”,比如桌面Windows系统的BIOS、桌面Linux系统常用的是Grub,而在嵌入式系统中...转载 2018-03-31 13:54:43 · 658 阅读 · 0 评论 -
Android内核开发之四:系统分区与镜像文件的烧写
玩过刷机的朋友肯定对fastboot这个工具并不陌生,它是Android SDK中提供的一种开发工具,支持通过USB线将手头的镜像文件更新/烧录到Android设备中,常用的fastboot烧录过程如下:123456fastboot flash boot boot.imgfastboot flash system system.imgfastboot flash userdata userdata...转载 2018-03-31 14:02:30 · 1923 阅读 · 0 评论 -
Android内核开发之五:图解Android系统的启动过程
学习任何软硬件系统,研究系统启动过程都是一种非常有效地起步手段,搞Android内核开发也不例外。网上有很多文章对Android启动相关代码进行分析和走读,大家可以先搜索阅读一下,我个人更喜欢更加直观的方式去理解未知的东西,包括图、表、系统输出的log信息等等,因此,本文准备通过一些流程图和log信息,来探索一下Android的启动过程。首先,给出一张图,图片来自这里,我觉得它画得很好,就引用过来...转载 2018-03-31 14:05:03 · 449 阅读 · 0 评论 -
Android内核开发之六:如何统计系统的启动时间
首先了解2个概念:(1) Android是基于Linux内核的系统,因此Android的启动过程是分为两个阶段的,第一个阶段就是Linux内核的启动,第二个阶段就是Android框架的启动(包括核心服务和程序)。(2)Android的log系统是独立于Linux内核的log系统的。Linux内核通过printk打印的log信息,这些log写入到了/dev/kmsg文件中,在Shell终端可以通过d...转载 2018-03-31 14:15:41 · 970 阅读 · 0 评论 -
Android内核开发之七:学会分析系统的启动log
首先,我们给出一张比较全面的Android系统启动图(来自Embeded Android):根据上述Android的启动框图,我们可以顺序地列出Android系统启动中涉及的几个关键步骤:(1) Linux内核的启动(2) Init程序启动,并启动各个本地服务(如 healthd, debuggerd等)(3) Zygote进程启动(4) Zygote进程初始化工作(preload class/r...转载 2018-03-31 14:18:54 · 1050 阅读 · 0 评论