framework
文章平均质量分 90
雅雅姐
1.学习新知识要有记笔记的习惯;
2.纸上得来终觉浅,绝知此事要躬行。
展开
-
Android 12 framework API规则和编译
在Framework层使用enum会报错:Enums are discouraged in Android APIs [Enum],因此一般都用@intDef代替,使用新的注解表示。当只有一个回调方法且永远不会有其他回调方法时使用Listener,且注册监听和解注册监听的方法必须是add/remove开头,否则Android Lint编译不过。如果上述注册方法没有在明确的线程中时,则需要在注册的时候包含Executor参数,如果不加的话,默认在主线程中回调。表示返回值、参数或者field可以是null。原创 2023-05-24 20:09:59 · 2372 阅读 · 0 评论 -
PackageManagerService的启动过程——Android 12(一)
PackageManagerService(简称PKMS)的官方解释:随时随地跟踪所有的APKs。主要职责分为:启动过程中扫描App所有安装目录,解析其中的Apk将相关信息加载到PKMS的数据结构中,同时同步到/data/system/packages.xml中;注册APK信息和其四大组件到PKMS中。负责App的安装和卸载。对外提供接口查询App相关信息。原创 2023-05-25 13:37:25 · 1155 阅读 · 0 评论 -
系统服务Installer的启动——Android 12
PackageManagerService的中负责Application安装、卸载等工作,实际上是由Java层系统Intaller通过Binder调用native层的installd守护进程来实现的,而Installer与installd是通过AIDL进行通信的。因为SystemServer进程是以system用户运行,所以由它启动的系统服务包括PKMS都是以system用户运行,而创建关键目录如/data/user等需要root用户权限、dex文件的优化和转化等需要installd进程完成原创 2023-05-17 15:21:04 · 1134 阅读 · 0 评论 -
ActivityManagerService启动Launcher过程详解——Android 12(四)
前边介绍了AMS和ATMS startService()的启动过程、setSystemProcess()阶段、installSystemProviders()阶段,本文介绍AMS.systemReady()的阶段,包含启动home activity的过程,home activity根据是否注册system uid来判断是启动Launch还是setup wizard。原创 2023-05-17 22:44:07 · 1376 阅读 · 0 评论 -
ActivityManagerService安装SettingsProvider的过程详解—Android 12(三)
先介绍了SystemServer.startBootstrapServices()中AMS和ATMS启动相关业务,,接着介绍了startCoreServices()中AMS设置UsageStatsManagerInternal相关业务,本章介绍startOtherServices()中与AMS和ATMS相关的业务。原创 2023-05-17 09:34:27 · 333 阅读 · 0 评论 -
AMS中ActivityThread的生命周期
ActivityThread管理application进程中主线程的执行、调度,执行activities、broadcasts和activity manager请求的其他操作。AMS中持有的ActivityThread mSystemThead实际上是SystemServer进程的主线程。原创 2023-05-10 20:51:24 · 364 阅读 · 0 评论 -
LocalServices类详解——Android 12
LocalServices的解释:注册到LocalServices中的service不是Binder对象,只能在同一个进程中使用,除此之外它的的使用方式和ServiceManager相似。添加本地service时调用LocalServices.addService(Class type, T service),获取某个类型本地service的实例引用时调用LocalServices.getService(Class type)。某个类型的service在LocalServices中只有一个实例。原创 2023-05-10 16:04:11 · 575 阅读 · 0 评论 -
ActivityManagerService和ActivityTaskManagerService详解—Android 12(二)
接上一篇博客,介绍了SystemServer.starBootstrapServices()中启动AMS和ATMS所做的工作,这一节介绍在SystemServer.startCoreServices()中关于AMS和ATMS设置UsageStateManagerInternal服务来跟踪application使用状态的业务。原创 2023-05-10 14:31:30 · 785 阅读 · 0 评论 -
ActivityManagerService和ActivityTaskManagerService启动详解—Android 12(一)
ActivityManagerService太负责了,尤其是Android12的AMS没有相关文章,那我们就从它的启动开始分析源码,梳理ActivityManagerService、ActivityTaskManager、WindowManagerService等相关类的关系。原创 2023-05-09 18:02:38 · 3066 阅读 · 1 评论 -
Android启动过程--Kernel启动和init启动
BootLoader:它是在操作系统内核运行之前运行的一段小程序,初始化硬件设备、建立内存空间映射图,从而将OS拉起来。Linux Kernel:它启动后,设置缓存、计划列表、加载驱动,启动init进程。init:初始化和启动PropertyService,启动zygote和servicemanager进程。zygote:c++层:启动VM并为VM注册JNI方法,调用ZygoteInit进入Java层;Java层:预加载类、库等各种资源,创建服务器端Socket,启动systemserver进程。原创 2023-05-05 17:42:18 · 2064 阅读 · 1 评论 -
servicemanger的前世今生--Android 12
前边好几节介绍了Java层的SystemService类、ServiceManager类、SystemServiceManager类,以及SystemServer类中启动三大类服务的解析,我们知道启动系统服务时有的会调用SystemServiceManager.startService()或者ServiceManager.addService(),两者除了参数要求不一致外,都最终会调用IServiceManager.addService()中。原创 2023-05-01 23:36:19 · 1505 阅读 · 0 评论 -
Android系统启动--init启动zygote进程的过程--Android 12
Android设备的启动必须经历3个阶段,即Boot Loader、Linux Kernel和Android系统服务。init是Linux系统中用户空间的第一个进程,pid = 1。init进程将通过解析init.rc来启动其他关键的系统服务进程——zygote、systemserver、servicemanager。原创 2023-04-29 23:52:09 · 1460 阅读 · 0 评论 -
Android系统启动--Zygote启动system_server进程的过程--Android 12
上一篇博文介绍了SystemServer启动各种SystemService的过程,本章介绍Zygote孵化SystemServer进程的过程,system_server是进程名称,代码实现在 /frameworks/base/services/java/com/android/server/SystemServer.java。Zygote启动system_server进程基本都在framework Java层,本文基于Android 12,整体过程如下图。原创 2023-04-27 23:13:30 · 641 阅读 · 0 评论 -
Android Log和Slog类详解--Android 12
Log类的路径在/frameworks/base/core/java/android/util/Log.javaSlog类的路径在/frameworks/base/core/java/android/util/Slog.java。原创 2023-04-26 23:21:07 · 2224 阅读 · 0 评论 -
Android framework层SystemServer类详解
SystemServer类主要是启动系统服务的,系统服务分为三类:引导服务BootstrapServices,核心服务CoreServices,其他服务OtherServices。原创 2023-04-24 16:13:11 · 803 阅读 · 0 评论 -
Framework层ServiceManager类的详细介绍
SystemManager是/frameworks/base/core/java/android/os/ServiceManager.java。该类主要与native层的SystemManager.cpp通信交互。原创 2023-04-23 18:59:58 · 403 阅读 · 0 评论 -
Framework层SystemServiceManager类的详解
SystemServiceManager类是用来管理系统服务(SystemService)的创建、启动和其他生命周期事件的。原创 2023-04-23 15:27:27 · 782 阅读 · 2 评论 -
Framework层SystemService类的详细介绍
它是运行在系统进程中的service的基类,根据需要override和implement生命周期事件回调方法。SystemService的生命周期方法如下:下边的方法都是由system service的主线程调用。1.构造函数用来提供初始化系统service;调用该方法启动service。在onStart()中应该调用把该service公开,这样其他service或者apps可以访问到它。在收到PHASE_BOOT_COMPLETED的boot phase之前,该方法被调用的次数和引导阶段的次数一样多。原创 2023-04-21 15:41:26 · 751 阅读 · 0 评论 -
Framework层添加SystemService和Manager的超详细步骤
本文适用于Android 12中增加系统服务。原创 2023-04-13 21:01:01 · 2783 阅读 · 5 评论