上述代码中有5个重要的点,我已经通过标号标记出来了,接下来我们分别分析一下这5点函数的具体实现。
建立IPC通信服务端——registerZygoteSocket
zygote及系统中其他程序的通信没有使用Binder,而是采用了基于AF_UNIX类型的socket。registerZygoteSocket函数的使命正是建立这个Socket,实现代码如下:
- private static void registerZygoteSocket() {
- if (sServerSocket == null) { int fileDesc;
- try { String env = System.getenv(ANDROID_SOCKET_ENV);
- fileDesc = Integer.parseInt(env); } catch (RuntimeException ex) {
- throw new RuntimeException(ANDROID_SOCKET_ENV + " unset or invalid", ex); }










