file_contexts(system/bin/添加)

来源:互联网 发布:仿优酷php视频网站源码 编辑:程序博客网 时间:2024/06/17 14:57

      最近在编译android4.1.2源码的时候,想在"out/target/……/system/bin/"目录添加几个二进制文件;但是每次把二进制文件拷贝到"out/target/……/system/bin/"目录后,在回到源码根目录“make -j8”生成system.img文件后,我从新打开system.img文件或者刷机到板子上面,总是没有我添加到那几个二进制文件!很是纳闷!如果一直这样工作就费劲了!每次添加都要使用adb push …… 一个一个推到"system/bin“目录!麻烦!因为我在4.0 和 4.2源码根本就不会出现这这种情况!所以就仔细找了下原因!真被我找到了!虽然我也不是太理解!但是总算把问题解决了!在此做个笔记!

1)我打印了”make -j8"的输出文件,”diff“命令比较了下,也没发现什么不同的!单我发现了”file_contexts"文件;

2)我又比较了下Android4.2 和 Android4.1 out/target/product/panda/root/file_contexts文件;不确定是不是下图file_contexts文件的那一项造成的;

3)我把Android4.2的file_contexts直接到拷贝替换掉Android4.1的file_contexts文件;测试了OK(make -j8生成system.imge文件,simg2img生成system.img.ext4文件,挂载system.img.ext4到temp文件,ls temp/bin/得到如下截图);说明我的问题就是file_contexts文件引起的;下图红色圈内是我添加的二进制文件;

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        以上问题找到了具体的原因,是因为Android4.1.2源码file_contexts文件少了”/system/bin/run-as  --  u:object_r:runas_exec:s0”引起的!我在4.1.2file_contexts文件里面添加了如下图,就可以了!

--------------------------------------------------------------------------------------------------------------------------------------------------

       昨天安照上图的改法编译源码可以,解压system.img也有自己需要的二进制文件;但是今天早上过来再编译,就不可以了,仔细看了输出的错误信息!runas_exec未定义!所以我就把上图中的runas_exec改为shell_exec;就OK了;