接下来,是预加载OpenGL。源码如下:
- private static void preloadOpenGL() {
- if (!SystemProperties.getBoolean(PROPERTY_DISABLE_OPENGL_PRELOADING, false)) { EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
- } }
启动system_server
现在我们要分析第三个关键点:startSystemServer。这个函数会创建java世界中系统Service所驻留的进程system_server,该进程是framework的核心。如何system_server挂掉,会导致zygote自杀。我们来看一下startSystemServer()实现源码。
- /** * Prepare the arguments and fork for the system server process.
- */ private static boolean startSystemServer() throws MethodAndArgsCaller, RuntimeException
- { long capabilities = posixCapabilitiesAsBits(
- OsConstants.CAP_KILL, OsConstants.CAP_NET_ADMIN,
- OsConstants.CAP_NET_BIND_SERVICE, OsConstants.CAP_NET_BROADCAST,
- OsConstants.CAP_NET_RAW, OsConstants.CAP_SYS_MODULE,
- OsConstants.CAP_SYS_NICE, OsConstants.CAP_SYS_RESOURCE,
- OsConstants.CAP_SYS_TIME, OsConstants.CAP_SYS_TTY_CONFIG
- );
- // 设置参数 String args[] = {
- "--setuid=1000", "--setgid=1000",
- "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,1032,3001,3002,3003,3006,3007", "--capabilities=" + capabilities + "," + capabilities,










