Android系统启动-SystemServer进程

Android系统启动-SystemServer进程,第1张

相关源码文件:

根据上篇 Android系统启动-Zygote进程

文章,在Zygote进程启动时,会调用 ZygoteInitmain() 方法,其中分别会调用 registerZygoteSocket、preload 、startSystemServer 、runSelectLoop 来创建服务Socket、提前加载资源、创建SystemServer进程、循环创建子进程。

本篇文章讲解 startSystemServer() 方法,在startSystemServer()方法中主要完成两件事:

· 创建SystemServer进程

· SystemServer进程启动系统服务

下图则是startSystemServer方法的创建过程,先通过 ZygoteforkSystemServe 去创建SystemServer进程,创建SystemServer进程之后,通过 handleSystemServerProcess() 在SystemServer进程中去启动服务。

ZygoteforkSystemServer

创建 SystemServer 进程是通过 comandroidinternalos Zygote 的 nativeForkSystemServer 本地方法创建的,JNI方法的注册在 AndroidRuntime 中,通过查询[包名]_[类名]可以知道对应的方法为:com_android_internal_os_Zygotecpp类的com_android_internal_os_Zygote_nativeForkAndSpecialize()方法。最后通过 ForkAndSpecializeCommon 方法 fork() 创建SystemServer进程。

handleSystemServerProcess(parsedArgs)

通过一连串的分析得知,一是通过 nativeZygoteInit 去启动Bind,二是通过 applicationInit 方法通过异常去反射执行 SystemServermain 方法,这里为什么需要通过异常去反射执行方法呢?为什么不直接反射执行方法?其实是为了清空栈的信息。到这里并没有启动服务,接下来的 SystemServermain 方法是启动服务的开始。

SystemServermain

SystemServer执行 main() 方法后调用 run 方法,之后分别调用 startBootstrapServices 、 startCoreServices 、 startOtherServices 开始启动很多服务,像常见的 ActivityManagerService、PackageManagerService、WindowManagerService、InputManagerServic 服务都在这里开启。

开启服务有两种方式:

但是发现最终都是调用到LocalServicesaddService这种方法。

可见启动服务是靠Binder驱动去开启的。

首先通过JNI的注册方法去创建SystemServer进程,创建进程之后,开始处理SystemServer进程,通过异常反射调用SystemServer的main方法,主要完成两件事:一、启动Binder驱动线程,二、开启服务(AMS、PMS、WMS、IMS等),最后通过Binder驱动去启动服务。

下面我就说一下我精简的内容吧(精简以前就流畅了,精简以后更加流畅,开机50多秒)

AccountAndSyncSettingsapk 账户同步设置(这个没删)

ADWLauncherapk ADW桌面启动器(这个可以删,但删之前必须安装其它Launcher)

AndroidTermapk 超级终端(不知道别人删没,反正我不用这个,貌似可以用来刷rec)

ApplicationsProviderapk 应用程序信息存储器(不能删)

Bluetoothapk 蓝牙服务(可以删,但删了之后会是什么样你们都知道)

Browserapk 浏览器(我删了,用UC替代了)

Calculatorapk 计算器(保留了,感觉自带的已经够用了,虽然有高级计算器,就是可以算函数那个,但平时用不到)

Calendarapk 谷歌日历(删了,用365日历代替了,自带的老同步,烦)

CalendarProviderapk 谷歌日历储存器(同上)

Cameraapk 相机(没删,自带的够用)

CertInstallerapk 证书安装器(貌似不能删)

CMPartsapk CM高级设置(CM的都没删,对系统影响不大,以下相同)

CMPartsHelperapk CM提示

CMStatsapk

CMWallpapersapk CM壁纸

Contactsapk 联系人(感觉自带的够用了,没删)

ContactsProviderapk 联系人存储器(同上)

DefaultContainerServiceapk 媒体容器服务(貌似不能删)

DeskClockapk 闹钟时钟(自带够用)

Developmentapk (删了,别人会用得上,但我不用)

DownloadProviderapk 下载管理器(貌似不能删)

DrmProviderapk 数字版权保护内容储存器(不能)

DSPManagerapk DSP管理器(个人不用,删之)

Emailapk 电子邮件(删之,不解释)

FileManagerapk 文件管理器(删了,我用RE,个人习惯而已)

Gallery3Dapk 3D相册(个人喜欢这个东东,哪能删了,不喜欢的删了,但我觉得这个rom上反应很快的,其实很好)

GenieWidgetapk 新闻天气资讯(删了,不解释)

Gmailapk 谷歌邮箱(谷歌的东西我都删了,因为不想用,没理由第二次刷的时候,根本就没刷g包,就用不着去删了,以下相同)

GoogleBackupTransportapk 谷歌设置备份

GoogleCalendarSyncAdapterapk 谷歌日历同步配置器

GoogleContactsSyncAdapterapk 联系人同步配置器

GoogleFeedbackapk 谷歌信息反馈

GooglePartnerSetupapk 谷歌合作伙伴设置

GoogleQuickSearchBoxapk 谷歌搜索

GoogleServicesFrameworkapk 谷歌服务框架

HTMLViewerapk HTML查看器(没多大用,删了)

kickbackapk 辅助功能( *** 作振动效果)(删了,震动很烦)

LiveWallpapersPickerapk 动态墙纸(动态壁纸可以用,但会影响速度,没删也没用它)

Mapsapk 谷歌地图(可以先删了再安装到SD卡中,不然太大占内存)

MarketUpdaterapk 菜市场软件精选管理器(一般不用市场,用手机更新比较费流量,用91更新好一些,要用的保留)

MediaProviderapk 媒体播放列表(如果要用自带视频,3D图库的不能删,删了之后3D图库找不到,自带播放器会出问题,不用的可以删)

MediaUploaderapk 我上传的内容(在google包里面,不刷g包就没有,所以可以删)

Mmsapk 信息(自带信息,保留,可以替换)

Musicapk 音乐播放器(暂时保留了)

NetworkLocationapk 网络位置(貌似删了之后,会FC,我第一次就是这样,后来每次开机都会有两个d窗,点agree就可以了)

OneTimeInitializerapk 不明物体(删了没什么反应)

PackageInstallerapk 打包安装程序(保留了)

Phoneapk 拨号器(喜欢就删,大不了不拨号,呵呵我没删)

PicoTtsapk 语音朗读引擎(删了,不用)

LatinIMEapk 输入法(删了,不好用,用搜狗的代替了)

Protipsapk 桌面帮助提示小插件(怎么说了,既然你都会刷机了,就不会要这个了)

Provisionapk (偶不用,删了)

QuickSearchBoxapk 快速搜索框(可删可保留,本人平时不用,自己手机里的东西,自己找得到)

RomManagerapk ROM管理器(没测试好不好用,至少我不想用它)

Settingsapk 系统设置(保留,不解释)

SettingsProviderapk 系统设置存储器(同上)

SetupWizardapk 第一次开机的设置向导(只是第一次,当然以后就用不到了,就删了呗)

soundbackapk 辅助功能( *** 作声音效果)(已删)

SparePartsapk (偶用不到,想用的就留着呗)

SoundRecorderapk 录音机(保留了,只是保留这个功能,平时用得少)

Stkapk SIM卡工具包(我会用它,不喜欢的可以删)

Streetapk 街景地图(不实用,删了)

Superuserapk 高级权限(这个不能删,如果删了你会发现你的RE管理器打开就会让你重启,说没有root权限的,本人尝试过)

Talkapk GoogleTalk(感觉没用,删了)

talkbackapk 辅助功能( *** 作语音效果)(同上)

TelephonyProviderapk 拨号器储存(不能删)

TtsServiceapk TTS语音朗读服务器(删了)

UserDictionaryProviderapk 用户词典(同上)

Vendingapk 菜市场(同上,偶不用这个)

VoiceDialerapk 语音拨号(同上)

VoiceSearchapk 语音搜索(同上)

VpnServicesapk 虚拟专用网服务(同上)

YouTubeapk YouTube视频客户端(必须得删,留着干啥呢)

三星S5升级安卓50system进程无响应应该是系统故障,解决方法为:1、备份重要数据,对手机进行恢复出厂设置。

2、对手机进行刷机(在专业人士的指导下),具体方法为:

a、打开“刷机助手”官方网站,在页面中下载刷机助手。下载完成后安装并启动刷机助手。

b、用手机原装数据线将手机与电脑相连接,然后等待刷机助手完成初始化工作。待刷机助手成功识别手机后,可以点击“一键刷机”按钮开始刷机。

c、点击“浏览”按钮选择之前下载的刷机包,若没有下载可以使用刷机助手市场下载ROM包。选择手机对应的型号开始下载ROM。

d、选择刷机包后点击“下一步”按钮备份手机数据,以免数据丢失。备份开始前,在手机中允许刷机助手读取短信、联系人等记录。然后点击“刷机”按钮开始备份并刷机,慢慢等待刷机完成。

3、送到维修店维修。

是的,androidsystemapp目录下可以自升级,但是这个过程有一定的复杂性。Android系统app目录下的自升级需要开发者自行开发,才能实现自升级。

首先,开发者需要在Android系统app目录下创建一个文件,用于存放要更新的新应用程序。然后,开发者需要编写代码,来检查是否有新的应用程序可以更新,并自动下载安装这些新的应用程序。最后,开发者需要编写代码,来管理更新过程中的所有可能出现的问题,以确保更新过程顺利进行。

总之,androidsystemapp目录下可以自升级,但需要开发者编写相应的代码才能实现自动更新。开发者要确保更新过程中的所有问题都得到解决,这样才能保证更新过程的顺利进行。

以上就是关于Android系统启动-SystemServer进程全部的内容,包括:Android系统启动-SystemServer进程、安卓system 文件、安卓手机system进程无响应怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10124165.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存