initandroid
① 如何去写 Android init.rc (Android init language)
C风格的反斜杠转义符可以用来插入空白到语言符号。双引号也可以用来防止文本被空格分成多个语言符号。当反斜杠在行末时,作为折行符。 * 以#开始(前面允许有空格)的行为注释行。 * Actions和Services隐含声明一个新的段落。所有该段落下Commands或Options的声明属于该段落。第一段落前的Commands或Options被忽略。 * Actions和Services拥有独一无二的命名。在它们之后声明相同命名的类将被当作错误并忽略。init.action 当前正在执行的action,如果没有则为"" init.command 被执行的命令,如果没有则为"" init.svc. 命名为的服务的状态("stopped", "running", "restarting") init.rc 示例:----------------- # not complete -- just providing some examples of usage#on boot export PATH /sbin:/system/sbin:/system/bin export LD_LIBRARY_PATH /system/lib mkdir /dev mkdir /proc mkdir /sys mount tmpfs tmpfs /dev mkdir /dev/pts mkdir /dev/socket mount devpts devpts /dev/pts mount proc proc /proc mount sysfs sysfs /sys write /proc/cpu/alignment 4 ifup lo hostname localhost domainname localhost mount yaffs2 mtd@system /system mount yaffs2 mtd@userdata /data import /system/etc/init.conf class_start default service adbd /sbin/adbd user adb group adb service usbd /system/bin/usbd -r user usbd group usbd socket usbd 666 service zygote /system/bin/app_process -Xzygote /system/bin --zygote socket zygote 666 service runtime /system/bin/runtime user system group system on device-added-/dev/compass start akmd on device-removed-/dev/compass stop akmd service akmd /sbin/akmd disabled user akmd group akmd 调试---------------默认情况下,init执行的程序输出的信息和错误到/dev/null.为了debug,你可以通过Android程序logwrapper执行你的程序。
.d 是 directory 的缩写,表示这是一个目录(文件夹)。
这个在配置文件中比较常见。
一般如果有一系列格式相同的,目的一致的配置文件,就把它们放在一个以.d结尾的文件夹中。
例如,
init.d 中存放的就是一系列系统服务的管理(启动与停止)脚本。
又如,
在我的 /etc/ 文件夹下有一个 modprob.conf 文件,用来配置系统加载的内核模块。
同时又有一个 modprob.d 文件夹,里面的文件与 modprob.conf 的格式和加载方式都相同。
这样做的好处是,当新装的软件需要配置内核模块时,只需简单地向 modprob.d 文件夹中
添加一个文件就可以了,避免了修改 modprob.conf 文件的麻烦。而且各个配置的作用和来源
一目了然,维护起来也更加方便,当系统升级有新的 modprob.conf 时,只需简单的替换原来的,因为用户和其他程序添加的配置都以单独文件的形式存放在 modprob.d 文件夹中,不会受到影响。
③ 如何修改android根目录init.rc文件
根据自己的CPU,修改init.rc文件的相应位置,然后:
[html] view plain
print?
make bootimage
重新生成boot.img文件,重新烧录即可。
三、实例
以Freescale的CPU为例,只需修改init.rc文件,init.freescale.rc文件make后自动生成,位于out/target/proct/sabresd_6dq/root/目录下。
下面我们修改GPS对应的串口号,针对编译后的源码:
1、修改out/target/proct/board_name/root/init.freescale.rc
④ Android中什么时候需要使用init()方法
init : 单词翻译过来是 初始化的意思, 并不是一个官方提供的api函数,一般来说,程序员习惯自己写一个 init( ) 函数 来作为 自己写的 类/activity/surfaceview 的 首次执行初始化的操作,比如加载资源,比如给一些变量初始赋值,
并不是都需要放在init中, 控件 只要求在使用其之前 实例化就好,你要用了再来实例化取出也不晚, 只是 习惯上 把 要用的控件 都在 oncreate中 统一实例化,方便,易看, 但是把代码放在oncreate中很难看的感觉, 所以再创一个函数 init……之类的,把初始化代码都放里面,方便整改
⑤ 关于android的init.rc文件,请教各位大牛
直接把chmod写到init.rc就可以了