Android框架层
文章平均质量分 90
刘望舒
腾讯最具价值专家,Android进阶书畅销前三: 《Android进阶指北》《Android进阶解密》《Android进阶之光》 作者 ,连续5年蝉联电子工业出版社年度优秀作者。国内首批Android开发者,10多年开发经验,前华为架构师、独角兽公司技术总监。国内唯一被百度百科收录的Android技术专家,谷歌开发者社区、Droidcon等技术大会特邀讲师,CSDN 2018年度十大博客之星。
展开
-
都2021年了,是时候安装Ubuntu了!
本文首发于微信公众号「刘望舒」这是BATcoder的第三篇,BATcoder是Android进阶三部曲的番外篇,会对Android进阶三部曲的内容进行拓展和升级,会以视频的形式分享给大家。至于为啥叫BATcoder,这是因为我希望大家看了我的技术视频能进入自己中意的大厂。本文应该是我最近几年写过最简单的文章了,但是只要能帮助一些人,那就是有用的。在Android进阶三部曲第二部《Android进阶解密》的第一章,我介绍了两种阅读源码的方式,其中一种是从百度网盘:https://pan.baidu..原创 2021-04-26 05:14:38 · 2446 阅读 · 3 评论 -
Android开发如何高效学习系统底层原理
本文首发于微信公众号「刘望舒」大家好,我是刘望舒,I’m back!最近分享了一些视频,都属于望舒杂谈,望舒杂谈会分享一些经验,什么都会聊。除了望舒杂谈还有另一个视频分支叫做BATcoder,什么是BATcoder呢?它是Android进阶三部曲的番外篇,会对Android进阶三部曲的内容进行拓展和升级,会以视频的形式分享给大家。至于为啥叫BATcoder,这是因为我希望大家看了我的技术视频能进入自己中意的大厂。这篇是BATcoder的第二个视频,来聊聊应用开发如何高效学习系统叠层源码,注意是给应用.原创 2021-04-06 11:20:14 · 2423 阅读 · 3 评论 -
腾讯面试官:了解Java Binder中的系统服务吗?
本文首发于微信公众号「后厂技术官」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系列...原创 2020-03-30 23:01:15 · 1855 阅读 · 1 评论 -
腾讯面试官:Binder的系统服务是如何获取的?
本文首发于微信公众号「后厂村码农」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系列...原创 2020-02-26 01:00:10 · 1539 阅读 · 0 评论 -
Android Binder原理(四)ServiceManager的启动过程
本文首发于微信公众号「后厂技术官」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系...原创 2020-02-07 04:01:34 · 1848 阅读 · 0 评论 -
Android Binder原理(三)系统服务的注册过程
关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系列本文首发于微信公众号「后厂技术官」...原创 2020-02-07 03:58:32 · 2007 阅读 · 0 评论 -
Android Binder原理(二)ServiceManager中的Binder机制
本文首发于微信公众号「后厂技术官」前言在上一篇文章中,我们了解了学习Binder前必须要了解的知识点,其中有一点就是Binder机制的三个部分:Java Binder、Native Binder、Kernel Binder,其中Java Binder和Native Binder都是应用开发需要掌握的。Java Binder是需要借助Native Binder来工作的,因此需要先了解Nat...原创 2020-01-12 18:33:46 · 1935 阅读 · 2 评论 -
Android Binder原理(一)学习Binder前必须要了解的知识点
本文首发于微信公众号「后厂村码农」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系...原创 2019-10-24 00:29:41 · 2979 阅读 · 2 评论 -
Android系统启动流程(一)解析init进程启动过程
作为“Android框架层”这个大系列中的第一个系列,我们首先要了解的是Android系统启动流程,在这个流程中会涉及到很多重要的知识点,这个系列我们就来一一讲解它们,这一篇我们就来学习init进程。原创 2017-02-07 11:29:48 · 41008 阅读 · 7 评论 -
Android深入四大组件(七)Android8.0 根Activity启动过程(后篇)
当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本。由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解。原创 2017-12-18 12:17:36 · 1948 阅读 · 0 评论 -
Android解析WindowManagerService(三)Window的删除过程
相关文章 Android系统启动系列 Android深入四大组件系列 Android应用进程启动过程系列 Android解析WindowManager系列前言在本系列文章中,我提到过:Window的操作分为两大部分,一部分是WindowManager处理部分,另一部分是WMS处理部分,Window的删除过程也不例外,本篇文章会介绍Window的删除过程,包括了两大处理部分的内容原创 2018-01-22 22:36:09 · 3139 阅读 · 0 评论 -
Android包管理机制(二)PackageInstaller安装APK
前言在本系列上一篇文章Android包管理机制(一)PackageInstaller的初始化中我们学习了PackageInstaller是如何初始化的,这一篇文章我们接着学习PackageInstaller是如何安装APK的。本系列文章的源码基于Android8.0。 1.PackageInstaller中的处理紧接着上一篇的内容,在PackageInstallerActivit...原创 2018-07-13 01:35:05 · 17562 阅读 · 0 评论 -
Android输入系统(三)InputReader的加工类型和InputDispatcher的分发过程
关联系列解析WMS系列深入理解JNI系列输入系统系列前言在上一篇文章中,我们学习了输入事件的处理,输入事件会交由InputDispatcher进行分发,那么InputDispatcher是如何进行分发的?这篇文章会给你答案。1.InputReader的加工类型在Android输入系统(二)IMS的启动过程和输入事件的处理这篇文章中,我们知道InputReader会对原始输入事件进行...原创 2019-03-14 21:42:12 · 1174 阅读 · 0 评论 -
Android系统架构与系统源码目录
技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是《Android开发艺术探索》的姊妹篇。在这本书的最后一章我会分析Android底层源码,但是毕竟是一本Android应用开发的书,对于底层源码阅读也只能带大家入个门。因此,在博客中我会新开一个“系统源码解析”的系列,该系列的开篇就是本篇文章。原创 2017-01-23 18:09:56 · 73190 阅读 · 27 评论 -
Android深入四大组件(六)Android8.0 根Activity启动过程(前篇)
当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本。由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解。原创 2017-11-18 16:56:40 · 4504 阅读 · 0 评论 -
Android解析WindowManagerService(二)WMS的重要成员和Window的添加过程
在本系列的上一篇文章中,我们学习了WMS的诞生,WMS被创建后,它的重要的成员有哪些?Window添加过程的WMS部分做了什么呢?这篇文章会给你解答。原创 2017-10-26 18:55:54 · 5986 阅读 · 2 评论 -
Android解析ClassLoader(二)Android中的ClassLoader
相关文章 Java虚拟机系列 Android系统启动系列 Android解析ClassLoader系列前言在上一篇文章我们学习了Java的ClassLoader,很多同学会把Java和Android的ClassLoader搞混,甚至会认为Android中的ClassLoader和Java中的ClassLoader是一样的,这显然是不对的。这一篇文章我们就来学习Android中的C...原创 2017-10-18 19:45:14 · 14194 阅读 · 6 评论 -
Android解析WindowManagerService(一)WMS的诞生
此前我用多篇文章介绍了WindowManager,这个系列我们来介绍WindowManager的管理者WMS,首先我们先来学习WMS是如何产生的。本文源码基于Android 8.0,与Android 7.1.2相比有一个比较直观的变化就是Java FrameWork采用了Lambda表达式。原创 2017-10-09 21:03:55 · 15014 阅读 · 3 评论 -
Android解析WindowManager(二)Window的属性
在上一篇文章我们学习了WindowManager体系,了解了Window和WindowManager之间的关系,这一篇我们接着来学习Window的属性。原创 2017-09-12 00:13:15 · 7117 阅读 · 6 评论 -
Android解析WindowManager(三)Window的添加过程
在此前的系列文章中我们学习了WindowManager体系和Window的属性,这一篇我们接着来讲Window的添加过程。建议阅读此篇文章前先阅读本系列的前两篇文章。原创 2017-09-19 00:39:06 · 5994 阅读 · 4 评论 -
Android包管理机制(三)PMS处理APK的安装
相关文章 Android包管理机制系列前言在上一篇文章Android包管理机制(二)PackageInstaller安装APK中,我们学习了PackageInstaller是如何安装APK的,最后会将APK的信息交由PMS处理。那么PMS是如何处理的呢?这篇文章会给你答案。 1.PackageHandler处理安装消息APK的信息交由PMS后,PMS通过向PackageHa...原创 2018-07-31 21:33:18 · 3374 阅读 · 0 评论 -
Android包管理机制(四)PMS的创建过程
相关文章 Android包管理机制系列前言PMS的创建过程分为两个部分进行讲解,分别是SyetemServer处理部分和PMS构造方法。其中SyetemServer处理部分和AMS和WMS的创建过程是类似的,可以将它们进行对比,这样可以更好的理解和记忆这一知识点。 1. SyetemServer处理部分PMS是在SyetemServer进程中被创建的,SyetemServe...原创 2018-08-21 13:43:24 · 1763 阅读 · 0 评论 -
Android MediaPlayer+Stagefright框架(音频)图解
在android原生的媒体播放器中是由mediaplayerservice来控制媒体播放器的,在mediaplayerservice中创建了mediaplayer,在mediaplayer.java的native方法通过jni调用android_media_mediaplayer.cpp中的方法,接着往下调用mediaplayer.cpp中的方法,mediaplayer通过ipc机制调用media原创 2012-01-26 10:20:53 · 17487 阅读 · 3 评论 -
Android AOSP基础(五)Android Studio调试系统源码的三种方式
本文首发于微信公众号「刘望舒」关联系列Android AOSP基础系列Android系统启动系列应用进程启动系列Android深入四大组件系列Android深入理解Context系列Android深入理解JNI系列Android解析WindowManagerAndroid解析WMS系列Android解析AMS系列Android包管理机制系列Android输入系统系列前...原创 2019-08-19 23:55:44 · 5384 阅读 · 5 评论 -
Android输入系统(四)输入事件是如何分发到目标窗口的?
关联系列解析WindowManager系列解析WMS系列深入理解JNI系列输入系统系列基于Android 8.1前言在Android输入系统(三)InputReader的加工类型和InputDispatcher的分发过程这篇文章中,由于文章篇幅的原因,InputDispatcher的分发过程还有一部分没有讲解,这一部分就是事件分发到目标窗口的过程。1. 为事件寻找合适的分发目标...原创 2019-04-05 01:33:57 · 1592 阅读 · 1 评论 -
Android AOSP基础(四)Source Insight和Android Studio导入系统源码
关联系列Android AOSP基础系列Android系统启动系列前言在上一篇文章Android AOSP基础(三)Android系统源码的整编和单编中,我们对系统源码进行了编译,这篇文章我们接着来学习如何将系统源码导入到编辑器中,以便于查看和调试源码。关于查看源码,可以使用Android Studio、Eclipse、Sublime、Source Insight等软件,这里我推荐使用S...原创 2019-04-05 01:29:38 · 5561 阅读 · 0 评论 -
Android AOSP基础(三)Android系统源码的整编和单编
关联系列Android AOSP基础系列Android系统启动系列前言在上一篇文章Android AOSP基础(二)AOSP 源码下载中,我们顺利的将AOSP下载了下来,很多时候我们不仅仅需要去查看源码,还有以下的几个需求:动态调试Android系统源码定制Android系统将最新版本的Android系统刷入到自己的Android设备中将系统源码导入到Android Stud...原创 2019-04-05 01:26:39 · 5801 阅读 · 0 评论 -
Android AOSP基础(二)AOSP源码下载
前言这篇文章我们来学习如何下载AOSP 源码,如果你还没有Linux 环境,请查看Android AOSP基础(一)VirtualBox 安装 Ubuntu这篇文章,另外如果你不需要编译源码,或者不需要最新的源码,可以直接从百度网盘:https://pan.baidu.com/s/1ngsZs 将源码下载下来。1.关于AOSPAOSP(Android Open Source Project...原创 2019-04-05 01:21:19 · 3571 阅读 · 0 评论 -
Android AOSP基础(一)VirtualBox 安装 Ubuntu
前言在Android进阶三部曲第二部《Android进阶解密》的第一章,我介绍了两种阅读源码的方式,其中一种是从百度网盘:https://pan.baidu.com/s/1ngsZs 将源码下载下来,然后用SouceInsight来查看,这种方式很便捷,适合去阅读源码,但是有两个弊端,一个是无法获取最新的源码,另一个是不能够编译源码。本系列就是来讲解下载和编译源码相关知识的。编译源码需要在 Li...原创 2019-04-05 01:19:26 · 1261 阅读 · 0 评论 -
Android输入系统(二)IMS的启动过程和输入事件的处理
关联系列解析WMS系列深入理解JNI系列输入系统系列基于Android 8.1前言在上一篇文章中,我们学习了IMS的诞生(创建),IMS创建后还会进行启动,这篇文章我们来学习IMS的启动过程和输入事件的处理。1.IMS的启动过程IMS的创建在SystemServer的startOtherServices方法中,不了解请查看Android输入系统(一)输入事件传递流程和InputM...原创 2019-02-07 15:23:23 · 1618 阅读 · 1 评论 -
Android输入系统(一)输入事件传递流程和InputManagerService的诞生
关联系列解析WMS系列View体系系列前言很多同学可能会认为输入系统是不是和View的事件分发有些关联,确实是有些关联,只不过View事件分发只能算是输入系统事件传递的一部分。这个系列讲的输入系统主要是我们不常接触的,但还是需要去了解的那部分。1. 输入事件传递流程的组成部分输入系统是外界与Android设备交互的基础,仅凭输入系统是无法完成输入事件传递的,因此需要输入系统和Andro...原创 2018-12-07 17:56:01 · 2256 阅读 · 1 评论 -
Android包管理机制(五)APK是如何被解析的
关联系列包管理机制系列前言在本系列的前面文章中,我介绍了PackageInstaller的初始化和安装APK过程、PMS处理APK的安装和PMS的创建过程,这些文章中经常会涉及到一个类,那就是PackageParser,它用来在APK的安装过程中解析APK,那么APK是如何被解析的呢?这篇文章会给你答案。1.引入PackageParserAndroid世界中有很多包,比如应用程序的AP...原创 2018-11-20 23:03:48 · 4416 阅读 · 4 评论 -
Android解析WindowManager(一)WindowManager体系
WindowManagerService(WMS)和AMS一样,都是Android开发需要掌握的知识点,同样的,WMS也很复杂,需要多篇文章来进行讲解,为何更好的理解WMS,首先要了解WindowManager,这一篇我们来学习WindowManager体系。原创 2017-09-08 00:36:23 · 8030 阅读 · 5 评论 -
Android解析ActivityManagerService(二)ActivityTask和Activity栈管理
关于AMS,原计划是只写一篇文章来介绍,但是AMS功能繁多,一篇文章的篇幅远远不够。这一篇我们接着来学习与AMS相关的ActivityTask和Activity栈管理。原创 2017-08-25 00:09:55 · 10327 阅读 · 7 评论 -
Android View体系(五)从源码解析View的事件分发机制
三年前写过事件分发机制的文章但是写的不是很好,所以重新再写一篇,关于事件分发机制的文章已经有很多,但是希望我这篇是最简洁、最易懂的一篇。原创 2016-03-12 13:35:43 · 5448 阅读 · 11 评论 -
Android View体系(四)从源码解析Scroller
在[Android View体系(二)实现View滑动的六种方法]这篇文章中我们讲到了用Scroller来实现View的滑动,所以这篇文章我们就不介绍Scroller是如何使用的了,本篇就从源码来分析下Scroller为何能够实现View的滑动。原创 2016-03-05 16:35:34 · 7500 阅读 · 6 评论 -
Android View体系(八)从源码解析View的layout和draw流程
上一篇文章我们讲了View的measure的流程,接下来我们讲下View的layout和draw流程,如果你理解了View的measure的流程,那这篇文章自然就不在话下了。原创 2016-03-25 17:31:15 · 6524 阅读 · 2 评论 -
Android View体系(七)从源码解析View的measure流程
在上一篇我们了解了Activity的构成后,开始了解一下View的工作流程,就是measure、layout和draw。measure用来测量View的宽高,layout用来确定View的位置,draw则用来绘制View。这一讲我们来看看measure流程,measure流程分为View的measure流程和ViewGroup的measure流程,只不过ViewGroup的measure流程除了要完成自己的测量还要遍原创 2016-03-21 15:47:11 · 8643 阅读 · 7 评论 -
Android多线程(二)AsyncTask源码分析
AsyncTask的基本用法这里就不在赘述了,基本是个安卓开发者就会。1.android 3.0以前的 AsyncTaskprivate static final int CORE_POOL_SIZE = 5; private static final int MAXIMUM_POOL_SIZE = 128; private static final int KEEP_AL原创 2015-04-14 18:45:33 · 4458 阅读 · 0 评论 -
Android开机启动流程说明
第一步:启动linux1.Bootloader2.Kernel第二步 android系统启动:入口为init.rc(system\core\rootdir)1./system/bin/service manager: Binder 守护进程;2.Runtime;3.Zygote :app-process/app-main;4.Start VM;5.Start ser原创 2011-11-13 12:34:09 · 6515 阅读 · 1 评论