Android系统
文章平均质量分 72
Android系统
奋斗者Eas
android framework 和 app开发
展开
-
android资深工程师如何分析system_server异常
如果System Server的CPU占用率一直很高,可能是System Server在进行一些高负载的操作,如执行密集计算或者大量的逻辑推理等。工具使用:利用AndResGuard等工具对System Server相关资源进行优化,以及使用Remdesivir等工具对System Server进行安全增强,这可以帮助我们在不影响System Server运行的情况下,检查其性能和安全性。分析系统重启原因:了解System Server是否有过重启历史,重启的原因是什么,这有助于找到问题的可能原因。原创 2023-08-04 09:57:20 · 851 阅读 · 1 评论 -
Android Launcher启动流程
1.Launcher概述Android系统启动的最后一步是启动一个Home应用程序,这个应用程序用来显示系统中已经安装的应用程序,这个Home应用程序就叫做Launcher。应用程序Launcher在启动过程中会请求PackageManagerService返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序。2.Launcher启动流程SyetemServer进程在启动的过程中会启动PackageMan.原创 2021-12-23 16:10:58 · 1717 阅读 · 0 评论 -
Android系统服务PMS
1、概述 PowerManagerService是负责管理、协调设备电源管理的系统服务之一,设备常见功能如亮灭屏、亮度调节、低电量模式、保持CPU唤醒等,都会通过PMS的协调和处理。其继承自SystemService,因此具有SystemService子类的共性:具有生命周期方法,由SystemServer启动、注册到系统服务中,通过Binder和其他组件进行交互等。其生命周期方法如下: 构造方法:通过反射调用,获取实例; onstart()方法:开启对应的SystemSer...转载 2021-12-23 11:57:52 · 1129 阅读 · 0 评论 -
Android AIDL参数中in、out、inout、oneway含义及区别
1、定义in、out、inout表示跨进程通信中数据的流向(基本数据类型默认是in,非基本数据类型可以使用其它数据流向out、inout)。in 表示数据只能由客户端流向服务端。(表现为服务端修改此参数,不会影响客户端的对象)out 表示数据只能由服务端流向客户端。(表现为服务端收到的参数是空对象,并且服务端修改对象后客户端会同步变动)inout 则表示数据可在服务端与客户端之间双向流通。(表现为服务端能接收到客户端传来的完整对象,并且服务端修改对象后客户端会同步变动)oneway...原创 2020-09-30 17:49:44 · 3915 阅读 · 0 评论 -
Android跨进程Binder通信异常总结
1、猜想Binder通信最大可传输8KB-1MB(注:8K是两个PageSize,一个PageSize是申请物理内存的最小单元)2、源码分析1MB-8KB的限制来源于哪里?frameworks/native/libs/binder/ProcessState.cpp#define BINDER_VM_SIZE ((1 * 1024 * 1024) - sysconf(_SC_PAGE_SIZE) * 2)//这里的限制是1MB-4KB*2ProcessState::ProcessSt原创 2020-09-26 14:58:50 · 649 阅读 · 0 评论 -
Android系统服务PKMS(PackageManagerService)
1、概述PKMS全称PackageManagerService,是Android核心服务之一,主要负责功能如下:解析AndroidManifest.xml,主要有AndroidManifest中节点信息的解析和提炼。 扫描本地文件,主要针对apk,系统应用、本地安装应用等。 管理本地apk,包括安装、删除等。2、核心源码/frameworks/base/core/java/android/app/ApplicationPackageManager.java/frameworks/.原创 2020-09-15 21:40:52 · 1183 阅读 · 0 评论 -
Android系统核心守护进程service_manager
1、概述service_manager是Android中IPC机制的关键组件。负责提供注册服务和查询获取服务功能。一旦service_manager挂了,其它服务需要重启。如healthd、zygote、media、surfaceFlinger等进程都需要重启。2、作用作为操作系统的定位器存在。任何一个应用或系统组件想要使用其它服务,都需要先到service_manager中查询,获取对应服务的句柄。即service_manager提供注册服务和查询服务功能。3、原理注册服.原创 2020-09-12 15:56:05 · 588 阅读 · 0 评论 -
Android系统服务WMS
1、概述WindowManagerService服务简称WMS,管理整个系统的所有窗口UI。Activity与Window:Activity只负责生命周期和事件处理。 Window主要是管理View创建,以及与ViewRootImpl交互,将Activity与View解耦。 一个Activity包含一个Window(即PhoneWindow),一个PhoneWindow持有一个DecorView(本身是一个FrameLayout)实例。 如果Activity没有Window,那就相当于Se原创 2020-09-12 10:37:05 · 2243 阅读 · 0 评论 -
Android系统应用之SystemUI
1、定义Android系统核心应用,SystemUI负责反馈系统和应用状态,属于Android Framework一部分(源码目录/frameworks/base/packages/SystemUI/)。范围:状态栏(StatusBar)、导航栏(NavigationBar)、通知栏(Notification Panel)、近期任务界面(Recents)、锁屏界面(Keyguard,Android 8.0新加入)。2、主要模块状态栏 StatusBar:通知消息提示和状态展现 导航栏 Na原创 2020-09-11 16:07:49 · 1232 阅读 · 0 评论 -
为何要熟悉Android Framework层?
待输入原创 2020-09-11 14:20:14 · 257 阅读 · 0 评论 -
Android系统服务AMS
1、概述ActivityManagerService简称AMS,此服务具有管理Activity行为、控制activity生命周期、派发消息事件、内存管理等功能。2、核心源码/frameworks/base/services/java/com/android/server/SystemServer.java/frameworks/base/core/java/android/app/ActivityThread.java/frameworks/base/core/java/android/a原创 2020-09-11 10:42:56 · 149 阅读 · 0 评论 -
Android Framework层system_server进程及服务介绍
1、概况 system_server 进程承载着整个framework的核心服务,例如创建 ActivityManagerService、PowerManagerService、DisplayManagerService、PackageManagerService、WindowManagerService、LauncherAppsService等80多个核心系统服务。 这些服务以不同的线程方式存在于system_server这个进程中。2、核心源码/frameworks/b...原创 2020-09-11 11:05:18 · 254 阅读 · 0 评论 -
Android Framework层Zygote进程
1、概念Android系统的Zygote是一个C/S模型,Zygote进程作为服务端,其它进程作为客户端向它发出“孵化-fork”请求,而Zygote进程接收到这个请求后就“孵化-fork”出一个新的进程。Zygote进程处于Native层创建。核心源码/system/core/rootdir/init.rc/system/core/init/main.cpp/system/core/init/init.cpp/system/core/rootdir/init.zygote64_32原创 2020-09-11 10:52:19 · 206 阅读 · 0 评论 -
Android系统整体启动流程
1、总体流程BootRom->BootLoader->Linux Kernel->Init->Zygote->SystemServer->Launcher2、详细启动流程1)设备开机后,引导芯片从ROM中加载Bootloader到RAM,Bootloader检查RAM、初始化硬件参数等。2)Bootloader初始化完成后,进入Kernal层。Kernel层首先启动swapper进程(内核空间第一个进程),用于初始化进程管理、内存管理、加载驱动(驱动自原创 2020-09-10 15:49:18 · 247 阅读 · 0 评论 -
最新AndroidStudio查看或调试Framework代码攻略
1、作用使用AndroidStudio能够调试Android Framework,断点调试能够更理解Framework逻辑。2、环境搭建 下载Android源码 编译源码 配置Android Studio 配置vm options 配置最大打开文件数 创建Android Framework工程 源码根目录运行.build/envsetup.sh 单独编译idegen模块,在源码根目录运行mmm development/to原创 2020-09-08 20:15:09 · 2130 阅读 · 0 评论 -
Android Framework系统服务创建流程
1、Android系统层级2、如何在Framework层添加系统服务2.1 Kernel层开发设备驱动程序与开发典型的 Linux 设备驱动程序类似。如果需要添加的硬件设备需要驱动的话,需要在此层添加。2.2HAL层HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。借助 HAL,您可以顺利实现相关功能,而不会影响或更改更高级别的系统。HAL 实现会被封装成模块,并会由 Android 系统适时地加载。作用:生成一个动态链接.原创 2020-09-04 17:54:48 · 315 阅读 · 0 评论