从底层驱动 到上层APP的流程(2)



1 .init.rc  对 cmaeravibrator 进行权限的赋予 
underpath: 
 ./bootable/recovery/etc/init.rc
 ./system/core/rootdir/init.rc
 添加权限:
chomd 0777 /dev/cmaeravibrator


       

      对于标准的封装到jni要先在HLA硬件抽象层里面添加对设备节点的操作的方法给framework层调用,   但是也可以绕过HAL层,只要我们对这个设备的节点有可操作的权限就ok,但在 android KK 4.4 版本后,Google 默认启用了SELinux, 并会把SELinux 审查异常打印在kernel log或者 android log(L 版本)中,对应的关键字是: "avc: denied" 或者"avc: denied"(测试中遇到这样的情况),在测试环境可临时关闭,但是在量产的机器下我们还是要添加权限
关闭selinux的权限,操作如下:
$:adb remount
$:adb shell 
$:setenforce 0 (设置SELinux 成为permissive模式)


2. selinux的权限添加 , 参考MTKFAQ【FAQ11486】
     2.0先确定自己的进程属于哪个.te

          $: adb shell

          $: ps -Z

          找到自己应用对用的进程的te文件。就可以开始添加对用的权限

         (ls -Z 查看object的所属 domain,ps -Z 查看进行 所属 domain id -Z 查看当前用户信息
          
          这里查看到当前的应用程序属于untrusted_app.te文件下,我们到 untrusted_app.te文件下添加权限再全编工程 
          是可以  解决权限问题的,但是这样是不安全的方式(untrusted.te),这里我们只是为了测试通过.

      2.1 (正规做法)在file_contexts文件下天机设备描述
             路径: /home/star/work/t61_0511/alps/device/mediatek/common/sepolicy
      
    
     
      

 2.3修改当前目录下的device.te文件,将cameravibrator_device声明为dev_type

     

  3.我们创建这个节点是最终是通过system_server进程来访问(或者system_app), 修改    system_server.te/system_app.te/app.te,允许进程对我们的设备节点进行读写.
(file:普通文件 ,char_file 字符文件,dir 目录,rw_file_perms 对文件的读写权限)
 
    
   

4.在external\sepolicy目录下上述文件也添加相应的权限

   app.te、device.te、file_contexts、system_app.te、system_server.tep
(配置后会和mtk .se文件冲突)
    
5.编译
    编译内核
   $:  make -j8 kernel 2>&1 | tee kernel.log(生成log,出错可以查看),为了检测是否生成对应的camera_vibrator.o
       文件,你可以定位到out目录,执行 find -name camera_vibrator.o,或者到对应的目录下查看
        under path: alps/out/target/product/land6735_65u_l1/obj/KERNEL_OBJ/drivers/misc/mediatek    
     
     打包bootimage  
     $:  make bootimage

6.烧录bootimage
 



7.现在可以用app直接验证
   
1 .init.rc  对 cmaeravibrator 进行权限的赋予 
underpath: 
 ./bootable/recovery/etc/init.rc
 ./system/core/rootdir/init.rc
 添加权限:
chomd 0777 /dev/cmaeravibrator


       

      对于标准的封装到jni要先在HLA硬件抽象层里面添加对设备节点的操作的方法给framework层调用,   但是也可以绕过HAL层,只要我们对这个设备的节点有可操作的权限就ok,但在 android KK 4.4 版本后,Google 默认启用了SELinux, 并会把SELinux 审查异常打印在kernel log或者 android log(L 版本)中,对应的关键字是: "avc: denied" 或者"avc: denied"(测试中遇到这样的情况),在测试环境可临时关闭,但是在量产的机器下我们还是要添加权限
关闭selinux的权限,操作如下:
$:adb remount
$:adb shell 
$:setenforce 0 (设置SELinux 成为permissive模式)


2. selinux的权限添加 , 参考MTKFAQ【FAQ11486】
     2.0先确定自己的进程属于哪个.te

          $: adb shell

          $: ps -Z

          找到自己应用对用的进程的te文件。就可以开始添加对用的权限

         (ls -Z 查看object的所属 domain,ps -Z 查看进行 所属 domain id -Z 查看当前用户信息
          
          这里查看到当前的应用程序属于untrusted_app.te文件下,我们到 untrusted_app.te文件下添加权限再全编工程 
          是可以  解决权限问题的,但是这样是不安全的方式(untrusted.te),这里我们只是为了测试通过.

      2.1 (正规做法)在file_contexts文件下天机设备描述
             路径: /home/star/work/t61_0511/alps/device/mediatek/common/sepolicy
      
    
     
      

 2.3修改当前目录下的device.te文件,将cameravibrator_device声明为dev_type

     

  3.我们创建这个节点是最终是通过system_server进程来访问(或者system_app), 修改    system_server.te/system_app.te/app.te,允许进程对我们的设备节点进行读写.
(file:普通文件 ,char_file 字符文件,dir 目录,rw_file_perms 对文件的读写权限)
 
    
   

4.在external\sepolicy目录下上述文件也添加相应的权限

   app.te、device.te、file_contexts、system_app.te、system_server.tep
(配置后会和mtk .se文件冲突)
    
5.编译
    编译内核
   $:  make -j8 kernel 2>&1 | tee kernel.log(生成log,出错可以查看),为了检测是否生成对应的camera_vibrator.o
       文件,你可以定位到out目录,执行 find -name camera_vibrator.o,或者到对应的目录下查看
        under path: alps/out/target/product/land6735_65u_l1/obj/KERNEL_OBJ/drivers/misc/mediatek    
     
     打包bootimage  
     $:  make bootimage

6.烧录bootimage
 



7.现在可以用app直接验证
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值