Android启动过程深入解析

Android启动过程深入解析,第1张

在先后经历了七个版本(DP1~4,Beta1~3)的测试后,Android 11终于在2020年9月9日正式上线了第一个稳定版。或许是因为此前在发布测试版时,谷歌方面已经召开过了规模不小的线上发布会,因此最终正式版反而是选择了相当“低调”的上线方式。

当然,如果你是一位谷歌Pixel系列机型的用户,那么这种低调的正式版发布方式其实并不会有太大的影响,毕竟就在今天的凌晨,全球的Pixel用户就已经收到了包含详细功能说明的系统推送。而在我们三易生活撰写这篇文章的时候,这部分用户可能早就已经玩上新系统好几个小时了。


但是“谷歌亲儿子”在当今Android手机的阵营中,毕竟只占很小的一部分,因此对于绝大多数的智能手机用户来说,正式版Android 11说到底还是一个有点遥远的概念。甚至可能相当一部分用户都要靠未来购买新机才有可能真正用上新版Android系统。正因为如此,提前熟悉一下新系统的界面与功能,自然也就变得很有必要了。


通知栏大变样,聊天软件获得“特权”地位


众所周知,如今智能手机的APP出于各种目的,普遍都非常喜欢给用户推送通知。体现在用户感受上,往往就是一会不看手机,系统的通知栏,信息就已经多到了甚至能滚动好几页的地步。


有鉴于此,在Android 10时代谷歌首次对通知栏信息进行了优先级的划分。通过提供“无声通知”功能,Android 10允许用户自行屏蔽不想要看到的通知信息,同时也不会触发相应APP的通知检测功能(也就是软件不会发现自己被屏蔽)。而这一功能到了国内的深度定制系统上,更是被发展为便利的通知自动折叠功能,AI会自动判断哪些应用的通知“不重要”,从而有效减少通知栏的杂乱现象。

但是从用户体验的角度上来说,一味地“精简”通知栏实际上也会造成不便。比如对于那些流行的社交软件而言,如果它们的通知被折叠、被隐藏,或者延迟显示的话,那后果可能就不仅仅是简单的“不方便”了。


正因如此,在Android 11上,谷歌对于通知栏的策略进行了一些“纠偏”式的修改。其中最显著的改动,就是专门针对短信以及社交软件增加了两个全新的通知样式,“优先对话(Priority conversations)”和“对话气泡(Bubbles)”。

所谓优先对话,简单来说就是在通知栏上为短信和社交软件开辟了一块“专用区域”,所有的社交信息都会在这块区域集中显示,并位于其他大多数APP通知信息的上方。如此一来,社交软件的对话信息就会更为显眼,更不容易错过,也不会被系统“折叠”了。


不仅如此,Android 11甚至还原生支持了专供聊天软件使用的“气泡通知”效果。当有新信息到来时,屏幕边上就会显示气泡通知,点按即可d出一个悬浮式的聊天窗口,从而实现无需退出当前APP,直接回复聊天内容的便捷功能。


媒体控制功能增强,蓝牙耳机和智能音箱受益


可只要是用过蓝牙耳机的用户就知道,在此前的Android版本上,虽然系统本身对于各大蓝牙协议的支持非常全面,但是在一个很常用的细节上,过往的Android系统表现得却堪称糟糕。这,就是多个音频输出设备之间的快速切换功能。


试想一下,当我们正戴着蓝牙耳机的时候,突然有事需要启用手机的外放扬声器,亦或是当手机正同时连接到蓝牙耳机、智能手表,以及智能音箱等多个设备的情况下,需要在不同的设备间迅速切换输出。此时,有些手机会通过一根独立的音频管理程序,在通知栏的最下方提供一个切换的快捷按钮,但大部分没有考虑到这一点的机型,就只能进入“设置”菜单,然后再点进蓝牙设备列表,进行手动切换。

很显然,这非常的不方便,因此它也很自然的成为了谷歌在开发新系统时必须要解决的问题之一。在Android 11上,用户现在就可以直接在通知栏的媒体控制卡片里看到当前所使用的输出设备(扬声器、耳机,或是蓝牙音箱等等),只需轻轻点一下就能进行切换了。


很显然,这比过去的体验可方便多了,只不过它也确实来得太慢了一些,而且怎么看都很像是谷歌从隔壁的iOS系统上汲取了“灵感”。当然从另一个角度上来说,提供更为便利的音频输出切换功能,实际上也可以看作是谷歌方面认可了蓝牙耳机和智能音箱等无线音频输出设备的重要性。从此手机厂商或许就更有理由,不再保留35mm有线耳机孔了。


更严格的权限控制,让流氓软件无处可藏


很久很久以前,当玩家朋友说起“原生安卓”时,他们通常会感叹这套系统那极简和无广告的系统界面,但同时也对其糟糕的权限控制功能扼腕叹息。可以说正是由于早期的Android系统无法有效限制大量流氓软件的自启动和后台行为,这才让各类“深度定制”系统迅速赢得了消费者的欢迎。


好在自从Android 60之后,谷歌就一直在加强原生Android的权限控制功能。从最初在系统中加入权限管理器,到后来一步步收紧系统权限本身,在经历了多次改进后,如今的Android 11正有望成为史上最安全,“对流氓软件最不友好”的移动 *** 作系统。

谷歌做了什么?首先,如果大家平时有留意一些软件在请求系统权限时d出的选项,就会知道在以往的Android版本里,用户的选择基本上可以概括为三类,即“始终允许”、“仅在该软件运行时允许”,和“不允许”。其中最危险的是“始终允许”,因为这意味着流氓软件哪怕是在后台偷偷自启时也能获取到敏感的系统权限,显然是很不安全的。


因此在Android 11里,谷歌彻底取消了“始终允许”这一选项。新的权限选择选项被更改为了“只允许一次”、“只在运行时允许”和“不允许”。如此一来,那些喜欢后台自启动,偷偷驻留后台的软件,如今便不再能够背着用户去偷拍、偷听、偷看联系人信息了。

不仅如此,考虑到可能有许多用户并不理解权限管理功能对于保护个人隐私的重要性,谷歌这次还引入了一个新的“权限重置”机制。它指的是当一个软件在一段时间里未被打开时,它原本已经申请过的系统关键权限就会被收回。而当用户再点开这一软件时,系统会重新提示软件的权限申请信息,要求用户重新手动开启某些权限。


这样做有什么好处?一方面来说,它相当于更频繁的提醒用户“您现在使用的APP有这样这样这样一些敏感权限,可能侵害您的个人隐私”,从而大幅增加了用户主动限制应用权限的可能性,让流氓软件无法再只靠第一次启动时申请的权限,就一直“作恶”下去;另一方面来说,这种机制本身实际上也可以用于发现流氓软件,试想一下,如果在Android 11上某个你时隔许久都没有使用的APP,再次点开时却没有重新d出权限申请信息,那么这可能就只意味着一件事,那就是它平时就经常偷偷自启。


更快的更新速度,让这届Android更有盼头


最后,我们不得不提一下此次Android 11的更新情况。虽然从整体上来看,Android如今每一次新的大版本发布之后的更新普及速度距离苹果的iOS系统还差得很远,但不可否认的是,随着越来越多的手机厂商积极且深入的参与到Android的共同开发与测试工作,我们也可以看到大量的第三方品牌Android机型在系统更新方面表现得越来越好。

比如说就在今天早上,除了谷歌自家的Pixel系列机型获得官方的Android 11正式版系统推送之外,包括一加、小米、OPPO和realme在内的多个国内品牌也“不约而同”的推出了新版固件。虽然它们之中的大多数名义上还标注着“测试版”,但实际上在这些系统的底层,都已经是全部用上了最新的正式版Android 11。


这意味着什么?首先我们完全有理由期待,以上的这些国内手机品牌将有望在很短的时间里推出他们基于Android 11的“正式版”系统更新。对于消费者而言,这很显然是一件令人兴奋的好事。

其次,从目前外媒对于Android 11的相关报道来看,除了以上的四家国内手机品牌,我们似乎并没有发现其他厂商做到了“第一时间提供系统更新”。哪怕这几家品牌目前基于Android 11正式版代码的系统,还多半都打着“测试版”的旗号,但它至少也已经给我们传达了两个很关键的信息。


一是中国手机企业目前已经积极的参与到了Android系统的早期开发与测试工作,二是中国品牌的智能手机如今已经相当重视“系统更新”对于提升用户体验的作用。很显然,无论是从行业地位的层面、还是从消费者利益的层面上来说,这个事实都值得我们为之而欢呼。


《深入理解Android:WiFi,NFC和GPS卷》百度网盘pdf最新全集下载:
链接:>pwd=xs5b 提取码:xs5b
简介:本书从实际应用的需求出发,适合所有Android系统工程师、Android应用开发工程师和BSP开发工程师阅读。本书是经典畅销书“深入理解Android”系列的新作,由资深Android系统专家邓凡平先生撰写,全志和高通等公司资深专家担任技术审校并强烈推荐。从通信专业知识和Android系统代码实现的角度,对Netd、Wi-Fi、NFC和GPS等模块的代码进行深入的剖析,旨在深刻揭示其实现原理和工作流程。其中涉及大量通信相关的专业知识,因此特意邀请全志和高通等著名芯片公司的资深专家担任技术审校。

《深入理解Android网络编程》(陈文)电子书网盘下载免费在线阅读

链接:> 提取码:99p8  

书名:深入理解Android网络编程

作者:陈文

豆瓣评分:51

出版社:机械工业出版社

出版年份:2013-8-20

页数:362

内容简介:

这是一本Android网络编程方面的专著,旨在帮助开发者们高效地编写出高质量的Android网络应用。不仅系统讲解了Android网络编程的各项核心技术和功能模块,通过多个案例解读了Android网络编程的方法和技巧,而且从源码角度深入解析了Android核心网络处理方法和关键应用的实现原理,包含大量最佳实践。

全书共11章,分为三个部分:概述篇(第1章)在介绍了Android开发平台后,重点讲解了Android网络程序的功能及开发环境的配置,引领读者走进Android网络编程的大门;实战篇(第2~8章),详细讲解了TCP、UDP、>

作者简介:

陈文 资深Android开发工程师,深入分析过Android系统的源代码,对Android系统的底层原理有非常深入的认识,尤其是与网络编程相关的功能模块。精通XMPP协议和企业级云端系统的构建,现从事移动互联网系统的框架设计和研发工作。此外,他对Java、HMTL 5、Web数据挖掘、个性化搜索引擎等技术也有一定的研究。

Android程序员的职业规划,怎么说呢?一句话叫做:早知如此,又何必当初。命运有些是自己可以掌握的,有些可能需要运气和机会。
一、路径可达
先说说路径可达这个词吧?有些人会觉得他的路看不到未来,有些人就可以清晰的看到他的方向。如果你现在所做的工作过两年会不会有所成长,达到你的目标。如果答案是否定的,那么说明现在的工作是没有上升通道的,就需要改变。当然安于现状不思进取是另外一回事。时刻反思自己所走的路,然后迅速调整,可能会少走很多弯路,毕竟时间不可逆。
二、时间规划
我有时候会想我五年后在哪里?做什么?大部分人对于这个都会比较模糊。因为时间跨度太大。五年时间相当于整个生命长河其实比较短,但在职业规划中确是很长的段,特别是刚毕业的那五年。从时间规划来讲肯定会用到时间的切分。宏观的东西只有落地到一件件事上才是有效的,才算得上完整的规划。但是话又说回来人是有惰性的,人对于这种有限制的东西有天然的排斥感,执行起来非常痛苦,即使开始执行起来很有激情,过不了几个月,所有的计划都缩水了,这同时也导致了很多时间的浪费和做事情的盲目性。所以计划的时效性和执行很重要,这里又会涉及一个词:“执行力”。
没有计划也导致学习变成一个一个孤立的点,完全没有串连性。因为你是想到学什么学什么,而不是计划着学,一段时间后可能会有一些积累,但是永远深度不够。这可以做一个简单的实验,把自己脑子里的东西理一理,如果时间需要很长说明整体知识体系已经有些混乱,可以对比一下 *** 作系统的磁盘整理。如果一个人能很好的管理时间那么必成大牛。好学生好在哪里,排除智商的因素外,就是时间管理和善于思考。我觉得我自己最大的问题:时间管理,自律性,沟通能力。这三块是我觉得自己最缺乏一定程度上是致命的,很大程度上会决定我未来的所发展的高度。
三、项目经理还是架构师
在程序员中一直有个讨论就是将来要做项目经理还是做架构师。这两条路的侧重点不一样,所以积累的东西也可能不同。项目经理更强调综合能力,比如说协调能力,沟通能力等一系列偏管理的能力。而架构师可能更专注于技术本身,技术上的宏观方向。两条路有重叠,但是更多的是区别。有些项目经理可能就不会写代码。但是同样可以带好一个项目,一个团队。
我曾经也问自己要是以后这两条路走哪条,其实都可以尝试一下。比如说给一个项目让我带带,我能否把它带好,其实需要机会,同时也需要自己去争取这样的机会。所以我的答案就是如果有机会的话两条路都可以尝试走走,就是两个方向的一些能力都可以进行积累。很多人认为项目经理是一个职位,我倒觉得是动态的,这个项目中你做项目经理,另外一个项目中可能又是开发工程师。所以不永远是项目经理,也不永远是开发工程师。
就程序员而言,专注技术是没有任何问题的,先技术后管理。管理这个东西总的说有点虚无飘渺,各都有各的一套理论,比较难以评估。但是技术是可测量的,通过一定的努力技术水平都会有定的跃升。记得在《肖申克的救赎》里面说到地质的形成只需要两个条件:压力和时间。其实对于学技术也是一样的。只要肯学一定会达到某个水平。到大牛级别的确实需要一些悟性和天分。
四、我的选择
我为什么觉得自己应该走架构师这条路,这和我职业终极目标是契合的。这里先说一下架构师做什么?架构师负责整个项目甚至整个系统的构架(这一句话等于废话)。一般型的项目可能这个设计项目就做掉甚至可能就不需要架构。但是系统复杂度上升的时候,会涉及到系统之间的交互,还有技术的可行性和整个设计的方案。这个时候架构师就出场了。另外的工作就是承担一定的培养新人的工作。所以架构师都需要具备比较好的口才,很多人都说程序员不会说话,错了,那是低端的,到了高端的程序员口才都很好,看一下那些程序员大会中侃侃而谈的架构师们,是不是有种“高端大气上档次”的感觉。这后面会发现有一个发展方向就是“培训师”,还可以写书,其实这些都可能是一些“副产品”。技术到一定的境界很多事情到都是水到渠成。
架构师写代码吗?当然写。他们肯定不会写那些简单的代码,他们一般写什么代码?框架,一般来讲优秀的框架都是一个人或者极少人写出来的。比如说Linux的核心就是一个人写出来的。好的代码绝不是人堆出来的。你给100个初级程序员也整不出一个Struts来。这里会衍生出另外一条路,就是开源框架,很多牛人都是开源社区的爱好者。都或多或少的参与了一些开源项目。甚至把自己写的一些东西开源出来。一般来讲能做到这个级别那是相当厉害的了。
五、领域方向
我记得以前总有人问我你最擅长的领域是什么?这个问题一问我就懵了,因为我从来就没想过这个问题。可能本身还没到分领域的级别,还处于一种“原始积累”阶段。技术学到一定阶段的时候是分领域的。领域之间会有一些交叉。
我所知道的大方向是“高性能,大数据量,移到平台“。这是我给Java这所分的三个方向。其实我上面所说的三个方向不一定是同一个维度。但是我认为写Java的如果没有沾上这三个方向中的一个,一定没有前途。高性能和大数据量的处理需要比较多的技术储备。很多人说写个Java就是CRUD(严格来讲,对于计算机本身所有的 *** 作都是CRUD)。可是在高性能情况下所涉及的问题一下成指数级增长。各种“水平扩展”,“服务化”,“容灾”,”缓存”等各种牛B的词汇就来了,你写一般的CRUD最多也就知道个SSH,这是不一样的。比如说做大数据量的处理一定会知道Hadoop,然后就是云计算,云存储。反正什么牛B什么来。移动平台和上面我所说的维度不一样,因为移动平台相对应的是PC平台。但是由于移动平台的发展时间很短。所以能搭上这趟快车也有不错的发展。要是早些年(2012年以前)进入移动平台的开发,现在同水平的程序员工资肯定更高。这是平台发展所带来的红利。虽然三年前我预见到了移动平台的无可限量,但是那时候就像一个一无所有的人,还管它什么移动平台还是PC平台,能写代码做项目就OK。以至于我学了一个月的Android就偃旗息鼓。
不管怎么样技术的底层都是一样的,所以扎实的基础是必要的,这就是为什么算法和数据结构是永恒不衰的。很多人说算法和数据结构无用那就是无知的表现。这个无知就像在讨论读大学有没有用一样。
六、总结
上面所说的一些东西可能都会比较虚,很多人都可能明白其中的道道,比如说到时间管理,这个估计从学生时代就在讲。但是真正的执行还是千差万别。所以又回归到哪里?回归到人本身。后来我想明白一件事情,即使道理再明白,没有好的执行仍然等于空谈。这里我回想起刘未鹏的《暗时间》。里面非常细致的讲了对于时间的管理。这个我读大学的时候同样在一本书《读大学,究竟读什么》里面也有所论述。当然两个方向是不一样的,一个是程序员的思维,另外一个是文科生的思维。但是道理只有一个,时间利用率的本质是什么。
另外就是实践,强烈的实践。我记得大学的时候读《人性的弱点》真是心潮澎湃,可是过不了多久我就忘了书中的内容。所以没有把书中的一些东西深刻的印记在脑海里并转化成你自己的东西,它永远只是知识。

关于安卓开发:Android早期由“Android之父”之称的Andy Rubin创办,Google于2005年并购了成立仅22个月的高科技企业Android,展开了短信、手机检索、定位等业务,基于Linux的通用平台进入了开发。

从现在安卓手机和iOS手机的销量来看,占据了市场的绝大部分,在结束了塞班时代,在winphone还没有被问世之前,安卓可以说就已经很火了。安卓开发培训几乎是一时间火速兴起的产业。

目前IT行业中的,Android应用软件,Android手机游戏,发展迅速,据报导安卓系统占中国智能手机90%的市场份额,面对这么大的市场,Android开发市场受到投资者,创业者的关注,相关的新兴公司很多。但是目前从事这项技术开发的人员很少,所以目前人才需求量比较大,好就业。

Andriod移动开发工程师就业行情之人才需求:

1、硬件驱动方向;2、软件应用。就目前人才需求来看,偏向软件应用岗位的需求更多,包括手机游戏、手机终端应用软件和其他手机应用软件的开发,具某求职网站数据显示目前企业对这类应用软件的Android开发人才占总需求的70%左右。

据不完全统计:从2013年开始热招的Android技术相关岗位约有5120个,而一个月内的有效岗位量在3070个。主要热招职位包括Android开发工程师、Android软件工程师、Android应用开发工程师、Android手机游戏开发、Android系统软件开发、Android程序员、Android游戏应用版本管理、人机交互分析工程师、Android中间层开发工程师等。


人才供应:由于目前Android技术较新,无论是相关书籍、培训还是大学教育,都处于初级阶段,因此Android人才短期将供不应求。

从长期来看,随着各种移动应用和手机游戏等内容需求日益增加,也将激励大中小型手机应用开发商加大对Android应用的开发力度,因此andriod移动开发工程师的就业前景也非常广泛。

PS

★月薪:

1年经验:大概7000~8000;

3年经验:一般10K以上,不同公司不同行业,相差比较大;

目前国内的Android开发还是主要以应用开发为主,主要分成3类:为企业开发应用、开发通用应用以及游戏开发

Android的开发采用了Java语言,有一些编程语言(如C/C++/Java等)训练的,都可以考虑学习Android应用开发。希望从事Android游戏开发,最好能在高数、离散数学甚至计算机图形学等方面有比较扎实的基础。后续想往底层开发如系统移植、驱动开发等方向发展,应更好地理解Android 应用架构体系,具备一定的 *** 作系统知识。

我干了3年Androidsdk开发,觉得到了瓶劲没法更进一步,于是花了一年多点时间,大概摸到点门径。根据前辈的经验,Android底层完全入门需要两年。

先说下我的入门过程:

第零步,下载源码,我下的42的,框架层源码10G,内核2G多,ctags给框架层建的标签文件都有600M,当时让我有点震撼,用的vimctagscscope来阅读,还算不错,架构挺清晰的。

第一步,我找到了一本好书《Android的设计与实现第一卷》它讲了Android框架层的启动,初始化,服务框架初始化,Binder,消息循环,。据作者说后面会出讲UI子系统的第二卷,拭目以待。其实这本书看了几十页我就发现需要第二步的知识,否则看不下去,于是跳去第二步。

第二步,学习Linux系统编程,在看《Android的设计与实现》的时候我发现,框架层的Native部分,全是Linux编程。为了掌握这部分知识,我花了4个月学习了《Linux系统编程手册》(TLPI)这本1000多页的书,我以前是搞WIndows文件系统这块的,所以C语言还比较熟,TLPI的习题很有意思,量也比较大,坚持下来还是收获很多。

第三步,花了4个月学习了一些Linux内核的知识,看了LKD,PLKA看了一半多。越学越没底,觉得不懂得越来越多,不过这个也正常,只有靠慢慢磨,估计以后要不断的磨这块。

第四步,回头看Android源码,这次一口气看完了《Android的设计与实现第一卷》,终于对框架层有了谱。同时真的数次把我看晕,前面看Linux内核源码都没这么晕,不断在Java层和Native层之间跳有点磨脑浆。其中我又觉得Java的基础没有打太牢,回去补了一个月的《CoreJava》第八版。但是这书没有涉及UI子系统,于是又看了《Android内核剖析》

第五步,《Android内核剖析》(这本书实际上是讲框架层的,作者也是个搞嵌入式的,所以他在写框架层的时候文笔不太好,很罗嗦,不过还是有很多看点,到他后来写做ROM,玩开发板时估计是说到了他的本行,一下子遛起来了看得出还是挺有水平的,这本书知识有点旧毕竟讲的是23很多代码已经过时,但是作者很多点子很有参考价值)这本书讲UI子系统和按键/触摸消息处理系统还是很有分量的,尤其13章View绘制那里,结合源码研究很有收获。而后面他讲编译框架和ROM相关的东西都是挺宝贵的资料。

第六步,为了再补一下其他诸如电源管理模块等子系统的知识看了,《深入理解android》系列,个人认为这个系列看起来有点不太舒服,不过作为补充印证还是比较有价值。

第七步,《Android系统源代码情景分析》,罗升阳的源码分析大作,比《Android的设计与实现》分析得更细致,但缺点是涉及到模块比较少,选用的源码也比《Android的设计与实现》更旧一点。看完书后需要去研究作者的博客,东西挺多的,一定让你满意。

第八步,买块开发板自己玩。这步我还没走到,原因是我觉得我还差点准备知识。可能要再几个月,到时准备入块6410或者树莓派。

最后,由于我11年以前都是搞Windows这块的,所以对Linux知识不是很了解,不得已看了这么些书,如果是一直做Linux的人,很多步骤估计可以省掉了。直接上源码才是正道。

我本身做着移动GIS开发的工作,学框架层全是因为兴趣,但招聘平台Android框架层开发人员还是蛮有竞争力的有不少定制ROM,智能电视的工作都处于人才难求状态,毕竟有一定的门槛,现在各种ios培训,让奔着钱干开发的人纷纷涌入,而ios只能干sdk开发的缺点就暴露出来了,一堆新手老手,菜鸟大牛全挤在SDK开发这块,我觉得不太妙。反观Android这边,虽然入门菜鸟没有搞ios来钱,但是可持续性很好,从sdk-》框架》驱动》内核这样干下去。干着干着发现自己渐渐变成了Linux开发者/嵌入式开发者的人也不少,新人,老手,菜鸟大牛各居其位,层次性很好。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12911166.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-28
下一篇2025-08-28

发表评论

登录后才能评论

评论列表(0条)

    保存