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
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