4.移植msensor(Android 7.0)

本文以移植qmcX983d地磁传感器为例,讲述移植步骤和问题解决。

1.驱动移植

drivers/misc/mediatek/magnetometer/
$(project)/ProjectConfig.mk CUSTOM_HAL_MSENSORLIB

2.添加sepolicy相关及服务(device目录)

a) device/mediatek/mt6735/init.mt6735.rc 添加sever

service qmcX983d /vendor/bin/qmcX983d
disabled
user system
group system
class main
oneshot

b) mediatek/common/sepolicy/basic/file_contexts 添加

/(system\/vendor|vendor)/bin/qmcX983d u:object_r:qmcX983d_exec:s0

c) mediatek/common/sepolicy/basic/qmcX983d.te 新增文件内容为:

# ==============================================
# Type Declaration
# ==============================================

type qmcX983d_exec , exec_type, file_type;
type qmcX983d ,domain;

#permissive qmcX983d;
init_daemon_domain(qmcX983d)
#unconfined_domain(qmcX983d)

#add permission
allow qmcX983d gsensor_device:chr_file {open ioctl read write};
allow qmcX983d msensor_device:chr_file {open ioctl read write};
allow qmcX983d sysfs:file {open read write};

# Operate data partation directly, need modify later,e.g. use "data/misc/sensor".
file_type_auto_trans(qmcX983d, system_data_file, msensor_data_file)
allow qmcX983d system_data_file:dir { write add_name create setattr };
allow qmcX983d msensor_data_file:file { open write read create setattr};

#allow qmcX983d sysfs_bus_msensor_file:dir { search };
#allow qmcX983d sysfs_bus_msensor_file:file { open write read create setattr };

d) mediatek/common/sepolicy/basic/property.te 添加

type ctl_qmcX983d_prop, property_type;

e) mediatek/common/sepolicy/basic/msensord.te 添加

set_prop(msensord, ctl_qmcX983d_prop)

f) mediatek/common/sepolicy/basic/property_contexts 添加

ctl.qmcX983d u:object_r:ctl_qmcX983d_prop:s0

g) mediatek/mt6735/device.mk 添加

PRODUCT_PACKAGES += qmcX983d

3.添加相关库文件(vender目录)

a)添加 jrdchz/libs/qmcX983/Android.mk

LOCAL_PATH := (callmydir)include ( c a l l m y − d i r ) i n c l u d e (CLEAR_VARS)
LOCAL_MODULE = qmcX983d
LOCAL_MODULE_CLASS = EXECUTABLES
LOCAL_MODULE_OWNER = mtk
LOCAL_PROPRIETARY_MODULE = true
LOCAL_SHARED_LIBRARIES = libc++
LOCAL_MULTILIB = 32
LOCAL_SRC_FILES_32 = arm/qmcX983d
include $(BUILD_PREBUILT)

b) 添加库 jrdchz/libs/qmcX983/arm/qmcX983d

4.验证

原则上修改SELinux的问题需要全编译,为了节省时间可以使用以下方法调试
1.编译bootimage
2.烧录bootimage
3.执行adb root,adb remount
4.执行adb shell restorecon system/bin/xxx
5.重启手机,查看开机 log中是否成功启动qmcX983d服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值