从Zygote进程启动过程分析过程中,我们知道,dalvik虚拟机的启动过程是从AndroidRuntime::startVm(JavaVM**
pJavaVM, JNIEnv** pEnv)函数开始的,详细时序图如下:
下面我们来逐步详细地分析一下每个步骤。
1.startVm(AndroidRuntime.cpp)
/*
* Start the Dalvik Virtual...
分类:
其他好文 时间:
2015-05-08 16:32:47
阅读次数:
309
Zygote, 意为“受精卵”,Android系统中几乎所有的应用进程都是由Zygote进程孵化出来的,Java环境也是由Zygote创建起来的,它建立了我们app运行所需要的环境,是app的祖先,因此,分析它的启动以及内部逻辑显得非常有必要。
Android系统是基于Linux内核的,而在Linux系统中,所有的进程都是init进程的子孙进程,也就是说,所有的进程都是直接或者间接地由i...
分类:
移动开发 时间:
2015-05-07 22:12:09
阅读次数:
284
手机启动过程:
1.linux内核启动:压缩内核启动 内核初始化 启动内核
2.执行init进程 由init进程启动android系统
init启动android系统本地服务(Native Service), Zygote进程和其子进程SystemServer 然后启动主页面(Home)
3.android系统启动完成...
分类:
移动开发 时间:
2015-05-04 13:54:39
阅读次数:
172
目录目录
概述
zygote分析
AppRuntime分析
创建虚拟机startVm
注册JNI函数startReg
进入JAVA世界
建立IPC通信服务端registerZygoteSocket
预加载类和资源preload
启动system_server
有求必应之等待请求runSelectLoop
概述在Android系统中,所有的应用程序进程,以及用来运行系统关键服务的System进程都是由...
分类:
移动开发 时间:
2015-04-29 21:47:46
阅读次数:
195
从zygote孵化出来的进程都会记录在ActivityManagerService.mLruProcesses列表中,由ActivityManagerService进行统一管理,ActivityManagerService核心业务之一便是时时更新进程的状态,根据状态计算出进程对应的OomAdj值,这个值会传递到kernel中去,kernel有个低内存回收机制,在内存达到一定阀值时会触发清理OomA...
分类:
其他好文 时间:
2015-04-29 21:42:06
阅读次数:
564
SystemServer也是系统的一个重要的守护进程,从SystemServer的进程中,我们看到了系统的各种关键的Service的启动。
另外,根据前面的zygote的分析,我们知道了systemServer在android的启动过程中是肯定要启动的。
因为在init.rc里面,已经指定了要start-system-server = true.
那么在zygote中,我们看到了如下的code...
分类:
移动开发 时间:
2015-04-13 12:54:17
阅读次数:
526
错误日志:
E/cutils ( 1180): Not a directory: /storage/sdcard0
W/Zygote ( 1180): Failed to mount emulated storage: 22
E/Zygote ( 1180): Cannot continue without emulated storage
F/art...
分类:
其他好文 时间:
2015-04-11 13:25:25
阅读次数:
390
首先zygote创建了appruntime的对象,并调用他的start。此后的活动由AppRuntime来控制
然后调用startVM来创建了虚拟机,调用startReg来注册JNI的函数
通过JNI调用zygoteInit进入了java的世界
调用registerZygoteSocket来响应子孙后代的请求,同时调用preload函数进行资源的预加载
调用startSystemServer来进行系统启动的后续工作
完成了java世界的初创工作后,变进入了select循环,来处理后续的请求。...
分类:
移动开发 时间:
2015-03-31 18:04:50
阅读次数:
196
chromium启动总是出现警告提示:
[4428:4428:51288848814:WARNING:zygote_host_impl_linux.cc(165)] Running without the SUID sandbox! See http://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
更新...
分类:
其他好文 时间:
2015-03-14 17:01:09
阅读次数:
165
application activity
application service
application UI system
application sdk tool
JVM1 activitythe first JVM instance => zygote app_main->AndroidRuntime(now start jvm instance,and start to load zyog...
分类:
移动开发 时间:
2015-03-12 20:57:01
阅读次数:
92