Android 7.0 init.rc的一点改变
来源:互联网 发布:淘宝打印画骗局 编辑:程序博客网 时间:2024/05/16 03:14
在Android 7之前的版本中,系统Native服务,不管它们的可执行文件位于系统什么位置都定义在根分区的init.*.rc文件中。这造成init*.rc文件臃肿庞大,给维护带来了一些不便,而且其中定义的一些服务的二进制文件根本不存在。
但在android 7.0中,对该机制做了一些改变 。
- 单一的init*.rc,被拆分,服务根据其二进制文件的位置(/system,/vendor,/odm)定义到对应分区的etc/init目录中,每个服务一个rc文件。与该服务相关的触发器、操作等也定义在同一rc文件中。
- /system/etc/init,包含系统核心服务的定义,如SurfaceFlinger、MediaServer、Logcatd等。
- /vendor/etc/init, SOC厂商针对SOC核心功能定义的一些服务。比如高通、MTK某一款SOC的相关的服务。
- /odm/etc/init,OEM/ODM厂商如小米、华为、OPP其产品所使用的外设以及差异化功能相关的服务。
这样的目录结构拆分,也与Android产品的开发流程相吻合,减轻了维护的负担。下图为Android7.0 模拟器/system/etc/init中定义的服务。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
2.提供一个编译宏LOCAL_INIT_RC用于将服务相关的RC文件编译到相应位置。这能确保服务定义和服务的可执行文件同时存在,避免了之前出现的服务对应的可执行程序不存在的问题。
例如logcatd的Android.mk中,通过LOCAL_INIT_RC将logcatd对应的logcatd.rc编译到/system/etc/init目录中。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
3.在init执行mount_all指令挂载分区时,会加载这些目录中的rc文件,并在合适的时机运行这些服务和操作。下面位Android7.0模拟器的log。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
相关内容可以参考android 7.0 system/etc/init/readme.txt.
原文链接:http://blog.csdn.net/sunao2002002/article/details/52454878
阅读全文
0 0
- Android 7.0 init.rc的一点改变
- Android 7.0 init.rc的一点改变
- Android 7.0 init.rc的一点改变
- Android 7.0 init.rc的一点改变
- Android 7.0 init.rc的一点改变
- android 的init.rc
- Android的init.rc
- Android init.rc 的執行順序
- Android init.rc 的生成
- android init.rc 的 service
- Android init 进程 init.rc init.*.rc
- Android init 进程 init.rc init.*.rc
- Android init 进程 init.rc init.*.rc
- 对/etc/rc.d/init.d/目录的一点理解
- 对/etc/rc.d/init.d/目录的一点理解
- 对/etc/rc.d/init.d/目录的一点理解
- 对/etc/rc.d/init.d目录的一点理解
- 对/etc/rc.d/init.d/目录的一点理解
- Error querying database. Cause:org.h2.jdbc.JdbcSQLException:Table “t_user" not found;SQL statement
- java网络编程详解(分层,TCP/IP,网络基础,协议)
- 练习赛qu(大根堆 STL)
- jquery的绑定事件及其优缺点
- Android Gradle Build Error:Some file crunching failed, see logs for details解决办法
- Android 7.0 init.rc的一点改变
- 初识Hadoop
- Android Studio修改默认${user}
- S树(S-Trees, Uva 712)
- PAT(乙级)1014
- Google VR Views实战(VR全景图播放器)
- GreenDao使用说明(四)特殊的单表
- org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘__frch_item
- js面向对象实现无缝轮播图