- 博客(57)
- 收藏
- 关注
原创 Android 14 servicemanager的前世今生2
本文基于Android 14深入解析ServiceManager的核心机制。内容包括:1)ServiceManager核心成员函数如getService、addService等的工作原理;2)servicemanager的main入口流程,包括初始化驱动、创建ServiceManager对象和成为ContextManager的过程;3)servicemanager的SELinux安全策略,详细解析了类型定义、Binder权限控制、文件访问权限等关键配置;4)servicemanager的Android.bp
2025-09-15 13:46:02
786
1
原创 C++中的单例模式的实现
private:public:注意:在声明GloggerImpl的类时使用了friendclass GSingleton<GLoggerImpl>,表示声明让模版类成为友元。原因:在调用GLoggerImpl::getInstance()时,// ← 这里要构造 T,即 GLoggerImpl。
2025-09-10 19:58:47
410
原创 Android 14 servicemanager的前世今生1
servicemanager管理系统中所有Binder服务的注册(addService)和查找(getService)。类似DNS服务器,通过service name返回IBinder对象。启动时序:servicemanager是由init进程在on init阶段启动的,请参考on init启动基石服务servicemanager/hwservicema nager,它早于zygote启动,而zygote是在init-late之后的post-fs-data阶段启动的。
2025-09-09 20:20:44
501
1
原创 Android14 init.rc中on boot阶段操作4
Android14的init.rc在onboot阶段执行多项关键操作:1)低内存设备优化包括缩短脏页保留时间、提前后台回写;2)基础网络初始化;3)内存管理参数调整;4)ZRAM写回权限配置;5)F2FS文件系统调优;6)硬件设备权限设置(CPU、LED、振动器等);7)诊断分区挂载。这些操作通过优化内存管理、I/O性能、硬件控制和诊断支持,确保系统在资源受限设备上高效运行。同时启动HAL和core类服务,为系统后续初始化奠定基础。
2025-09-08 19:56:48
1131
原创 Android14 init.rc中启动Zygote详解3
Android系统启动过程中,zygote服务的初始化与配置流程详解:on init-late阶段中,在post-fs-data阶段之后会trigger zygote-start,从而启动zygote。通过三种加密状态配置启动zygote进程。zygote作为应用进程孵化器,采用高性能配置(priority-20、USAP池机制)加速应用启动,并通过critical机制确保系统稳定性(崩溃超过阈值触发恢复)。同时维护zygote_secondary作为32/64位兼容方案。
2025-09-05 10:55:08
834
原创 Android14 init.rc的on late-fs, post-fs-data阶段主要操作详解2
本博文主要介绍on late-fs和on post-fs-data阶段的主要操作。on late-fs的主要目标:修复 tracefs 权限,启动关键 early-hal service,加载 verity 保护的密钥,优化内存使用,禁用非必要 tracing。on post-fs-data的主要目标:初始化数据分区、启动关键服务、结束“早期启动”阶段、为系统服务(如 bootchart,keystore、apexd)准备运行环境。
2025-09-02 20:35:20
1097
原创 Android14 init.rc中on early-init, init, late-init, early-fs, post-fs阶段详解1
本文主要介绍on early-init, on init和on init阶段BoringSSL安全自检,on late-init,充电模式正常开机,on early-fs, on post-fs阶段的主要操作。
2025-09-01 19:30:29
454
原创 Android14 高通平台的USB子系统启动和动态配置init.qcom.usb.rc
高通芯片SOC中有多个独立的处理器,运行不同的OS,通过共享内存和IPC通信。处理器代号作用AP运行 Android 系统MP处理 2G/3G/4G/5G 通信LPASS处理音频CNSS处理 Wi-Fi/蓝牙SPSS处理安全加密。
2025-08-29 17:28:29
900
原创 Android14 基于Configfs的USB动态配置init.usb.configfs.rc
usb配置为adb、mtp、ptp、accessory、audio_source、midi、rndis以及其组合时,会将对应配置通过写入内核路径/config/usb_gadget/g1/configs/b.1/strings/0x409/configuration中,多种组合以下划线连接,例如accessory_audiosource_adb,并通过symlink创建对应f1、f2、f3与functions之间的软链。setprop sys.usb.state ${sys.usb.config}详解。
2025-08-28 17:48:32
854
原创 Android14 USB子系统的启动以及动态切换相关的init.usb.rc详解
1 USB子系统的启动init.usb.rc的作用是在Android系统启动和运行时,通过监听属性(sys.usb.config和sys.usb.configfs, sys.usb.typec.mode)变化动态,通过写入内核接口 /sys/class/android_usb/ 来配置USB模式。1 USB子系统的启动1.1 on init阶段的配置。
2025-08-28 10:22:56
1031
原创 Android14 init.environ.rc详解
init.environ.rc中主要是在on early-init阶段执行由export指令设置全局环境变量,为后续系统服务、zygote、应用程序运行提供路径和配置基础。
2025-08-25 16:12:55
900
原创 Android14 init.rc详解3
本文详细解析了Android init.rc中的Commands指令集、Import、Properties、Boot Timing
2025-08-15 13:48:00
733
原创 Android14 init.rc详解1
init.rc的代码目录在//,该文件是由init进程解析,来初始化和启动PropertyService,启动zygote和servicemanager进程。
2025-08-12 14:29:53
1158
原创 OpenXR 超详细的spec-Chapter 5 System介绍
这个API把XR设备的物理系统的概念与application直接交互的logical objects。A System代表Runtime中相关devices,通常由几个individual hardware components组成。
2024-03-11 23:27:59
423
原创 OpenXR 超详细spec--Chapter 2 基本原理
An OpenXR runtime是实现OpenXR API的软件。一个系统中可能安装不止一个openXR runtime,但是在任何时间只有一个runtime是active。
2024-03-11 23:22:45
1519
原创 OpenXR 超详细的spec--Chapter 1 Introduce
OpenXR是XR应用的一个API,它是app与runtime进程内或者进程外的接口。Runtime可以处理类似frame composition,外围设备管理、原始tracking information的功能。Optionally, Runtime可以支持device layer plugins,允许通过共同定义的接口访问各种硬件。
2024-03-11 23:15:05
933
原创 OpenXR 超详细的spec--Chapter 3 API初始化介绍
xrGetInstanceProcAddr的参数instance和name不同,返回的值也是不同,参考下表。instance: XrInstance类型,可以是NULL,也可以是任何有效的instance;function:返回的函数指针fp。name:待获取fp的函数名称;
2024-03-03 15:32:04
742
原创 OpenXR 超详细的spec--Chapter 4 Instance介绍
instance: XrInstance类型,可以是NULL,也可以是任何有效的instance;name:待获取fp的函数名称;function:返回的函数指针fp。xrGetInstanceProcAddr的参数instance和name不同,返回的值也是不同,参考下表。
2024-03-02 13:07:11
1208
原创 JNI编程入门(一)
JNI(Java Native Interface),主要是为了实现Java和C/C++代码之间相互调用,它相当于Java层和C/C++层的桥梁。如下图所示。通常我们都是在Java中调用C/C++的方法,这样可以实现Java层访问底层硬件或者直接调用现有的C++ 库。但在使用JNI的时候要非常细心,它的错误很难追踪和调试,它的局部引用和全局引用,稍微使用不当就会crash。
2023-07-15 22:50:49
647
2
原创 Android Studio直接install系统签名的apk到设备
1.给apk系统签名的方法2.Android Studio直接运行带系统签名的apk。
2023-06-26 19:13:12
995
原创 PackageManagerService的启动过程——Android 12(一)
PackageManagerService(简称PKMS)的官方解释:随时随地跟踪所有的APKs。主要职责分为:启动过程中扫描App所有安装目录,解析其中的Apk将相关信息加载到PKMS的数据结构中,同时同步到/data/system/packages.xml中;注册APK信息和其四大组件到PKMS中。负责App的安装和卸载。对外提供接口查询App相关信息。
2023-05-25 13:37:25
1712
原创 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
3136
原创 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
1940
原创 系统服务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
1550
原创 ActivityManagerService安装SettingsProvider的过程详解—Android 12(三)
先介绍了SystemServer.startBootstrapServices()中AMS和ATMS启动相关业务,,接着介绍了startCoreServices()中AMS设置UsageStatsManagerInternal相关业务,本章介绍startOtherServices()中与AMS和ATMS相关的业务。
2023-05-17 09:34:27
507
原创 AMS中ActivityThread的生命周期
ActivityThread管理application进程中主线程的执行、调度,执行activities、broadcasts和activity manager请求的其他操作。AMS中持有的ActivityThread mSystemThead实际上是SystemServer进程的主线程。
2023-05-10 20:51:24
539
原创 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
1038
原创 ActivityManagerService和ActivityTaskManagerService详解—Android 12(二)
接上一篇博客,介绍了SystemServer.starBootstrapServices()中启动AMS和ATMS所做的工作,这一节介绍在SystemServer.startCoreServices()中关于AMS和ATMS设置UsageStateManagerInternal服务来跟踪application使用状态的业务。
2023-05-10 14:31:30
1166
原创 ActivityManagerService和ActivityTaskManagerService启动详解—Android 12(一)
ActivityManagerService太负责了,尤其是Android12的AMS没有相关文章,那我们就从它的启动开始分析源码,梳理ActivityManagerService、ActivityTaskManager、WindowManagerService等相关类的关系。
2023-05-09 18:02:38
4356
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
3944
1
原创 servicemanger的前世今生--Android 12
前边好几节介绍了Java层的SystemService类、ServiceManager类、SystemServiceManager类,以及SystemServer类中启动三大类服务的解析,我们知道启动系统服务时有的会调用SystemServiceManager.startService()或者ServiceManager.addService(),两者除了参数要求不一致外,都最终会调用IServiceManager.addService()中。
2023-05-01 23:36:19
2082
原创 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
1925
原创 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
896
原创 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
3720
1
原创 Android framework层SystemServer类详解
SystemServer类主要是启动系统服务的,系统服务分为三类:引导服务BootstrapServices,核心服务CoreServices,其他服务OtherServices。
2023-04-24 16:13:11
1228
原创 Framework层ServiceManager类的详细介绍
SystemManager是/frameworks/base/core/java/android/os/ServiceManager.java。该类主要与native层的SystemManager.cpp通信交互。
2023-04-23 18:59:58
806
原创 Framework层SystemServiceManager类的详解
SystemServiceManager类是用来管理系统服务(SystemService)的创建、启动和其他生命周期事件的。
2023-04-23 15:27:27
1259
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅