简介 SystemServer的进程名实际上叫做“system_server”,通常简称为SS. 系统中的服务驻留在其中,常见的比如WindowManagerServer(Wms).ActivityManagerSystemService(AmS). PackageManagerServer(PmS)等,这些系统服务都是以一个线程的方式存在于SystemServer进程中. SS是由Zygote通过Zygote.forkSystemServer函数fork诞生出来的.与Zygote生死与共.SS…
简介 SystemServer的进程名实际上叫做“system_server”,通常简称为SS. 系统中的服务驻留在其中,常见的比如WindowManagerServer(Wms).ActivityManagerSystemService(AmS). PackageManagerServer(PmS)等,这些系统服务都是以一个线程的方式存在于SystemServer进程中. SS是由Zygote通过Zygote.forkSystemServer函数fork诞生出来的.与Zygote生死与共.SS…
简介 Zygote本身是一个Native的应用程序,和驱动.内核等均无关系.Zygote是由init进程根据init.rc文件中的配置项而创建的. zygote最初的名字叫“app_process”,这个名字是在Android.mk文件中被指定的,但app_process在运行过程中,通过Linux下的pctrl系统调用将自己的名字换成了“zygote”,所以我们通过ps命令看到的进程名是“zygote”. 通过JNI调用Java函数,注意调用的是com.android.internal.os.…
init是一个进程,确切地说,它是Linux系统中用户空间的第一个进程.由于Android是基于Linux内核的,所以init也是Android系统中用户空间的第一个进程,它的进程号是1.作为天字第一号的进程,init被赋予了很多极其重要的工作职责. · 挂载设备 · 解析两个配置文件,中一个是系统配置文件init.rc,另外一个是和硬件平台相关的配置文件,以HTC G7手机为例,这个配置文件名为init.bravo.rc. · 执行各个阶段的动作,创建Zygote的工作就是在其中的某个阶段完成…
简介 Binder是Android系统提供的一种IPC(进程间通信)机制.由于Android是基于Linux内核的,因此,除了Binder外,还存在其他的IPC机制,例如管道和socket等.Binder相对于其他IPC机制来说,就更加灵活和方便了.Android系统基本上可以看作是一个基于Binder通信的C/S架构.Binder就像网络一样,把系统各个部分连接在了一起,因此它是非常重要的. 什么是Binder Binder是android在内核中专门用于完成进程间通信而设置的一个虚拟设备(/…
简介 Windows平台上有一个叫注册表的东西.注册表可以存储一些类似key/value的键值对.一般而言,系统或某些应用程序会把自己的一些属性存储在注册表中,即使下次系统重启或应用程序重启,它还能够根据之前在注册表中设置的属性,进行相应的初始化工作. Android平台也提供了一个类型机制,可称之为属性服务(property service).应用程序可通过这个属性机制,查询或设置属性. 可以用adb shell登录到真机或模拟器上,然后用getprop命令查看当前系统中有哪些属性. init…
官方文档: http://source.android.com/source/requirements.html  Requirements The Android build is routinely tested in-house on recent versions of Ubuntu LTS (14.04), but most distributions should have the required build tools available. Before you download…
简介 RefBase是Android中所有对象的始祖,类似MFC中的CObject及Java中的Object对象.在Android中,RefBase结合sp和wp,实现了一套通过引用计数的方法来控制对象生命周期的机制.RefBase的子类在构造一个实际对象的同时,还会悄悄地构造一个影子对象. sp是strong pointer, wp是weak pointer, LightRefBase是轻量级的引用计数类,只有一个引用计数,为0就删除. RefBase,sp,wp中的引用计数 · RefBas…
以模块角度 以Java,native,kernel角度…
      SystemServer进程是zygote孵化出的第一个进程,该进程是从ZygoteInit.java的main函数中调用startSystemServer()开始的.与启动普通进程的差别在于:类zygote为启动SystemServer提供专门的函数startSystemServer(),而不是标准的forAndSpecilize函数.同时,SystemServer进程启动后首先要做的事情和普通进程也有所差别.     函数startSystemServer()的关键功能如下: (…