一、关于权限的描述:
首先linux下文件权限分为所属用户权限、所属组权限和其他权限。每一个又分为r(读)、w(写)、x(可执行)。如果你在Linux中运行ls -l 就会显示权限。如:
第一个 rw- 是所属用户的权限,表示所属用户(root)对文本件可读(r)、可写(w)。第二个,第三个类推。
二、Android利用JNI打开设备失败
利用下面的C代码打开设备失败,代码如下:
fd = open(PS_DEV, O_RDONLY, 0);//PS_DEV代表设备名称
if (fd == -1)
{
ALOGE("[Ps test mode] [%s] open ps failed. errno: %s", __func__, strerror(errno));
return 0;
}
发现访问设备失败,打印的主要日志日下:
E ION_DEBUG: [add_system_map_entry]so libfile_op.so address 0x61cf3000 size 53248 has been load into memory ion_debug_lock 0x404b001c
01-01 01:33:26.891 2871 2871 E ION_DEBUG: [add_system_map_entry]so libhwm.so address 0x61cea000 size 36864 has been load into memory ion_debug_lock 0x404b001c
01-01 01:33:26.891 2871 2871 E ION_DEBUG: [add_system_map_entry]so libfactory_jni.so address 0x61ce4000 size 20480 has been load into memory ion_debug_lock 0x404b001c
01-01 01:33:26.892 2871 2871 E : [Ps test mode] [jboolean openPsDev()] open ps failed. errno: Permission denied
发现是访问权限的问题,使用命令chmod 666 +设备名,如下图:
发现问题解决,可以正确的访问设备了。
三、MTK权限问题
源码目录mediatek/config/平台/init.rc文件里将该设备权限改成666即可。如下所示:
chmod 0666 /dev/gsensor