有时候希望在启动后做点事情,比如在sdcard上建立目录,修改/data的访问权限等,这些都可以放在init.rc中去完成,那么如何来完成呢,最近由于工作的需要,在这方面进行了一些研究,特写于此,供大家参考。

通过下面的例子来讲述,实现一个功能:在android系统启动后,修改/data的访问权限为770.

共4步:1、解压ramdisk.img 2、用c语言完成要实现的功能 3、修改init.rc,启动c语言可执行程序 4、制作ramdisk.img

1、解压ramdisk.img:

解压、修改Android的ramdisk.img的手动方法:

将ramdisk.img复制一份到任何其他目录下,将其名称改为ramdisk.img.gz,并使用命令

gunzip ramdisk.img.gz

然后新建一个文件夹,叫ramdisk吧,进入,输入命令
cpio -i -F ../ramdisk.img
这下,你就能看见并操作ramdisk里面的内容了。

此步可参考:http://blog.csdn.net/liushaogeng/archive/2010/10/14/5941259.aspx

2、完成一个C语言程序chpermission.c,来实现修改权限的功能。代码如下:

#include <stdlib.h>

int main()

{

system("chmod 700 /data");

return 0;

}

然后编译此程序,不过需要编译为android下的可执行程序,可参考我的博客:http://blog.csdn.net/liushaogeng/archive/2010/09/01/5855925.aspx,采用博客中介绍的两种方法均可以。 编译完后将可执行文件push到模拟器的/data目录中去: #adb push chpermission /data

3、修改ramdisk目录下init.rc文件,让其启动chpermission程序,增加以下代码:

#add by me on 2010-10-18
service
chpermission /data/chpermission
oneshot

用于启动chpermission,完成相应的功能--修改data权限。

init.rc的语法可参考博客:http://blog.csdn.net/liushaogeng/archive/2010/10/18/5949244.aspx

4、制作ramdisk.img,

init.rc修改之后,可以使用下列命令重新打包成镜像
cpio -i -t -F ../ramdisk.img > list
cpio -o -H newc -O lk.img < list

当前目录下生成的lk.img就是我们的新镜像了。

可参考博客: http://blog.csdn.net/liushaogeng/archive/2010/10/14/5941259.aspx

将ramdisk.img拷贝到sdk指向的目录。

全部ok,重启自己的模拟器,查看data权限是否为770

更多相关文章

  1. 使用achartengine开发曲线图相关的Android应用程序(zhuan)
  2. 关于在Android上运行纯C程序
  3. Android权限之三共享UID和签名
  4. Android应用开发性能总结
  5. android开发基础
  6. 成为android工程师的30+个小技巧
  7. 在Android(安卓)Studio上编译C++可执行程序
  8. . Android內核Porting相關背景知識 转载
  9. Android(安卓)NDK安装及使用简介

随机推荐

  1. Android(安卓)在一个程序中启动另一个程
  2. MySQL中自增ID起始值修改方法
  3. MySQL出现SELECT list is not in GROUP B
  4. 【凯子哥带你学Android】Android专用Log
  5. 2021.1.17
  6. Debian设置允许root用户以ssh方式登录
  7. 【第562期】用 webpack 构建 node 后端代
  8. 我的51cto课程
  9. 活动|三次元世界等你来!!
  10. 自学第五十一天