摘要: init是安卓也是linux的第一个进程,进程号为1.首先它会先解析init.rc。首先,解析得到的内容会以section为单位,只有On或者是service关键词算是一个section。zygote是一个service section,在这个section里面定义了zygote,系统有一个service结构体来存放service section,service结构体里面包含一个action结构体。解析后service section的执行命令就会被存放在action结构体里面。然后,会通过相关的命令,通过service结构体来实现zygote,一般就是通过fork命令创建进程然后使用exec 阅读全文
posted @ 2013-12-11 22:21 yutoulck 阅读(201) 评论(0) 推荐(0) 编辑
摘要: JNI层必须实现为动态库,才能被虚拟机加载并调用,一般命名为:lib模块名_jni.so。JNI的实现有两个点:1、在native方法调用前被加载,一般是在static{}里面使用System.loadLibrary(),动态库名与实际操作的名不一样,因为系统会自动匹配;2、用native声明的函数表示该函数即将会从JNI里完成。(被调用的JNI函数必须先声明,类似C语言)JNI的注册主要是通过方法名字来进行相关联系的,例如如果在android.media.test有一个方法Init(),那么全名就是android.media.test.Init(),在JNI的库函数里,因为“.”有特殊意义所 阅读全文
posted @ 2013-12-11 20:56 yutoulck 阅读(291) 评论(0) 推荐(0) 编辑