自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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详解2

介绍Android init中修饰Service的Options和Command

2025-08-14 20:32:12 850

原创 Android14 init.rc详解1

init.rc的代码目录在//,该文件是由init进程解析,来初始化和启动PropertyService,启动zygote和servicemanager进程。

2025-08-12 14:29:53 1158

原创 Android 16 的用户和用户组定义

Android 16的用户和用户组(AID,Android ID)定义和详细说明

2025-08-11 22:52:11 1167

原创 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

原创 Android Studio中使用cmake开发JNI实战

Android Studio中使用cmake开发JNI实战

2023-08-05 16:24:02 1679

原创 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关注的人

提示
确定要删除当前文章?
取消 删除