随笔分类 -  Android 深入浅出

1
详细介绍Android各个部分,希望对大家有所帮助
摘要:本来是发表在《程序员》杂志的,结果编辑整理成一篇书评,内容和深度都大幅缩水,今天把原文post出来,希望能抛砖引玉。我正式接触Android的准确时间应该在2010年9月份。那段时间,老听到公司有人说Donut,CupCake、Eclair等非常奇怪的词(直到现在,我也不中意Android的版本命名),心中不禁很仰慕:竟然还有这么多我闻所未闻的东西。所以心里就特别好奇。不久,我就加入了Android的开发,第一个接触的大模块是Audio。一看代码,就发现有更多不懂的词了,什么Binder、AudioFlinger、sp、wp等等。当时,我记得买了韩超老师的《Android系统原理及开发要点详解 阅读全文
posted @ 2012-10-14 21:48 innost 阅读(4144) 评论(0) 推荐(2) 编辑
摘要:由于工作关系,对Android关注将从FWK(Framework)转向BSP,也就是Linux Kernel。在工作的5年中,曾经数次研究过kernel,但一直没有合适的机会或者说推动力去深入研究。这次有机会了,岂能放过呢?以前搞kernel,总是觉得没有合适的设备,都玩不转。最近琢磨了几天,打算从android虚拟设备goldfish开始吧。(惭愧啊,以前还买过一个板子,结果完了2天就腻味了)。本随笔包括一下几个部分:先介绍Android kernel的下载和编译。配置模拟器以使之使用我们编译的kernel。介绍下输入系统方面的内容。我的目标是在最短的时间内把Android的驱动撸一遍。在这 阅读全文
posted @ 2012-09-08 22:04 innost 阅读(7572) 评论(12) 推荐(6) 编辑
摘要:本来将4.1的AOSP源码打包放在115网盘上,结果最近几天说取消了大众共享。MD! 解决办法是大家加我为好友,每天我会2-3次共享源码给好友。 另外,希望下载完的兄弟姐妹们也共享相关源码。 我在115上的账户是 fanping.deng@gmail.com 谢谢大家的支持 阅读全文
posted @ 2012-08-09 16:26 innost 阅读(2863) 评论(2) 推荐(0) 编辑
摘要:时间真的是很巧,本来没打算写Surface系统的(相比AudioFlinger来说,Surface变化之后的难度真的是毛毛雨了),但为了庆祝泷泽萝拉发第二部大作,我决定还是要坚持一下。下面将延续Audio的分析风格,从几个层面来介绍Surface系统的变化(JB号称在Surface这块做过大量的优质的改进,无非就是引入在PC机上早都烂熟的VSYNC,Triple Buffering。但是JB,您能确保这套机制在单核机器上跑得开么?Win Phone 单核,都比多核Android机器流畅。恐怕还是Android上层Display架构有问题吧??!)同Audio一样,想真正理解Surface系统工 阅读全文
posted @ 2012-07-18 18:17 innost 阅读(11799) 评论(3) 推荐(2) 编辑
摘要:7月13号初略看了下:1 init没有太大变化,从init.rc可以看出规则未变,但init.rc出现了一些新的设置,看来更依赖kernel的一些信息了2 app_process未有太大变化,即zygote没有变化3 SystemServer变化很大,增加了几个奇怪的service,而且有些service的启动开始受到系统属性的控制了,例如 audioService受到"system_init.startaudioservice“控制 3.1 增加昨天提到的SchedulePolicyService,用于控制媒体相关进程调度策略的调整。注意是调度策略,而不是优先级。 3.2 增加了一 阅读全文
posted @ 2012-07-13 10:26 innost 阅读(5471) 评论(1) 推荐(2) 编辑
摘要:告诉大家一个不幸的消息,Android 4.1的代码变化非常非常大。忍不住想骂娘了。 绝对坑了我们这帮做FW的人如果能看懂深入理解android 卷I,可能还能搞4.1。唉,否则直接从4.1入手,难度会超大超大。下了代码后,立即看了AudioFlinger和SurfaceFlinger的实现。结构变化较大。有2.2的影子,但已经逐渐不多了。文件的位置也发生了重大变化。我不觉得能很容易得从4.0.4移植到4.1。虽然XDA/CM已经成功了。可能是因为还没看HAL层的变化。SystemServer增加了SchedulingPolicyService,用来调节Media进程的调度优先级。另外,那个该 阅读全文
posted @ 2012-07-12 22:04 innost 阅读(2465) 评论(0) 推荐(1) 编辑
摘要:最近接到很多兄弟们的求助,也回答过无数个和下面这个问题类似的问题:如何编译android 原生代码得到一个rom,然后跑到某某手机上。鉴于很多兄弟对这块不清楚,我这里一并简单回答之。1 ROM包含两个基本的image,一个是boot.image,这个image中主要是kernel和文件系统/目录下的一些东西。kernel我就不说了,/目录下主要是init和相关的配置文件system.image是android系统的userpace的核心,包括/system/bin,system/lib,system/app下的一些东西。2 手机,不同手机,其内部使用的芯片,配置等等都不同。另外,android 阅读全文
posted @ 2012-06-01 16:53 innost 阅读(12905) 评论(4) 推荐(5) 编辑
摘要:http://115.com/folder/fauqpj0t#Android-ICS-SOURCE-CODE国内被墙了,导致代码下不了。我将4.0.1的代码放到115网盘上。请大家先阅读其中的部署说明.txt包含两个东西:1 ICS 4.0.1全套代码,不含kernel。我当时还是可以通过git下载的,现在被墙了吧应该2 java coffee bytes eclipse代码折叠插件。很好很方面的一个工具。大家下载后,如果有问题请尽快联系我。谢谢了。 阅读全文
posted @ 2012-05-01 09:36 innost 阅读(1141) 评论(0) 推荐(0) 编辑
摘要:http://book.51cto.com/exp/bookrating2011/index.php谢谢大家了。 阅读全文
posted @ 2011-12-15 16:08 innost 阅读(377) 评论(0) 推荐(0) 编辑
摘要:随笔之Android平台上的进程调度探讨一由来最近在翻阅MediaProvider的时候,突然想起之前碰到的一个问题,该问题是这样的:一个Pad上有很多媒体文件,然后每次开机后的一段时间内,Home Screen的反应都特别慢,有时候还会报出ANR的错误。从ANR文件/data/anr/traces.txt分析,发现系统打印的cpu占有率中,android.process.media占用非常高。所以怀疑是MediaProvider做文件扫描占用CPU太多资源导致。但是我们实际测试的时候,通过top –m 5查看cpu占有率的时候,发现只要一操作Home,android.process.medi 阅读全文
posted @ 2011-11-06 10:39 innost 阅读(8203) 评论(5) 推荐(3) 编辑
摘要:2011-10-11第一次勘误特别感谢jdxwind网友的大力支持。对所有给本书提bug的童鞋们表示衷心的感谢。1. 目录XIII ——StartThread_Pool,joinThread_Pool。这两个单词中间的Pool没有空格。P149页中的目录项也需要修改。2.P15,模块_jni.so,中间多了空格。3.P388 代码,Mutext::Autolock 和下面的注释未予sp<BufferSource>一行对齐4.P233页:因为读者可能在等待可写的,改成:因为写者可能在等待可写的..5.P234页:offset是外界传入的基于userBase的一个偏移量,它的值是use 阅读全文
posted @ 2011-10-11 21:36 innost 阅读(1156) 评论(0) 推荐(0) 编辑
摘要:近来有不少读者向编辑反应:1 本书很多内容从网上可以搜索到。2 Binder一章从一个国外网站可以搜索到英文版(http://unknownerror.net/2011-06/mechanism-of-binder-layman-android-5-30302)这里要郑重声明一下:1 本书的来源:援引【这本书的策划编辑,关于整个误会,我想向大家解释一下:作者@邓凡平最初写了不少关于Android源代码分析的文章发表在自己的博客上,一天突然被我看到,仔细研读后发现作者分析得细致深入,而且逻辑性强,但是整体上还比较粗超,如果能经过作者和出版社的进一步打磨,肯定是一本不错的书。于是作者根据我们商议的 阅读全文
posted @ 2011-09-28 06:51 innost 阅读(4562) 评论(5) 推荐(0) 编辑
摘要:感谢cnblogs网友的支持。PDF版的可以从以下网址下载:http://download.csdn.net/source/3578482第5章深入理解常见类本章涉及的源代码文件名称及位置下面是本章分析的源码文件名和它的位置。RefBase.h(framework/base/include/utils/RefBase.h)RefBase.cpp(framework/base/libs/utils/RefBase.cpp)Thread.cpp(framework/base/libs/utils/Thread.cpp)Thread.h(framework/base/include/utils/Th 阅读全文
posted @ 2011-09-06 10:29 innost 阅读(19734) 评论(0) 推荐(0) 编辑
摘要:好消息,本书信息已经更新了。http://product.china-pub.com/198566#qy希望得到大家的喜欢和支持。 阅读全文
posted @ 2011-08-25 16:47 innost 阅读(1215) 评论(0) 推荐(1) 编辑
摘要:http://blog.csdn.net/Innost/archive/2011/02/05/6172893.aspx刚才有朋友说排版的问题,我是从word直接copy过来的,在word上的格式之前是可以直接使用的。现在好像不行了。sorry。排版太差确实影响效果。还好csdn的blog没问题。 阅读全文
posted @ 2011-02-05 10:55 innost 阅读(11394) 评论(4) 推荐(1) 编辑
摘要:Android深入浅出之Zygote一 目的zygote,是Android搞出来的一个东西。网上讲这个的也非常多。第一次看到这个名字我就挺郁闷,想干嘛这是?Linux下名字都取得挺通俗易懂,深得人心。zygote?不就想模仿Linux下的fork吗?个人觉得Google取名字挺怪,包括Google本身。不管怎样,Zygote依然是Android系统的核心,zygote是受精卵的意思,可以认为是Android framework大家族的祖先!我们本节的目的是描述下zygote的来龙去脉,顺便揭露下它的短处,以后大家可以对症下药,变异一个更加优良的品种。二 Zygotezygote本身是一个应用层 阅读全文
posted @ 2011-01-26 20:59 innost 阅读(59387) 评论(5) 推荐(3) 编辑
摘要:农历新年快来到了,我希望能把android这个系列写完。今天这篇帖子是农历年最后一篇了。大家如果有什么想了解的,可以回帖或者站内短消息,我们共同来分析Android。一目的上回我们说了AudioFlinger(AF),总感觉代码里边有好多东西没说清楚,心里发毛。就看了看AF的流程,我们敢说自己深入了解了Android系统吗?AudioPolicyService(APS)是个什么东西?为什么要有它的存在?下层的Audio HAL层又是怎么结合到Android中来的?更有甚者,问个实在问题:插入耳机后,声音又怎么从最开始的外放变成从耳机输出了?调节音量的时候到底是调节Music的还是调节来电音量呢 阅读全文
posted @ 2011-01-22 19:31 innost 阅读(34533) 评论(18) 推荐(3) 编辑
摘要:一目的本文承接Audio第一部分的AudioTrack,通过AudioTrack作为AF(AudioFlinger)的客户端,来看看AF是如何完成工作的。在AT(AudioTrack)中,我们涉及到的都是流程方面的事务,而不是系统Audio策略上的内容。WHY?因为AT是AF的客户端,而AF是Android系统中Audio管理的中枢。AT我们分析的是按流程方法,那么以AT为切入点的话,AF的分析也应该是流程分析了。对于分析AT来说,只要能把它的调用顺序(也就是流程说清楚就可以了),但是对于AF的话,简单的分析调用流程 我自己感觉是不够的。因为我发现手机上的声音交互和管理是一件比较复杂的事情。举 阅读全文
posted @ 2011-01-15 20:29 innost 阅读(46402) 评论(14) 推荐(3) 编辑
摘要:Android深入浅出之Audio第一部分 AudioTrack分析一目的本文的目的是通过从Audio系统来分析Android的代码,包括Android自定义的那套机制和一些常见类的使用,比如Thread,MemoryBase等。分析的流程是:l先从API层对应的某个类开始,用户层先要有一个简单的使用流程。l根据这个流程,一步步进入到JNI,服务层。在此过程中,碰到不熟悉或者第一次见到的类或者方法,都会解释。也就是深度优先的方法。1.1 分析工具分析工具很简单,就是sourceinsight和android的API doc文档。当然还得有android的源代码。我这里是基于froyo的源码。注 阅读全文
posted @ 2011-01-09 21:29 innost 阅读(99129) 评论(21) 推荐(7) 编辑
摘要:Android深入浅出之Binder机制一说明Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以MediaService的例子来分析Binder的使用:lServiceManager,这是Android OS的整个服务的管理程序lMediaService,这个程序里边注册了提供媒体播放的服务程序MediaPlayerService,我们最后只分析这个lMediaPlayerClient,这个是与MediaPlayerService交互 阅读全文
posted @ 2011-01-09 21:28 innost 阅读(339148) 评论(122) 推荐(39) 编辑

1