android property_get/property_set设置与avc权限添加

1.使用需要添加对应的头文件,同时需要在Android.mk文件中加入库libcutils.

#include <cutils/properties.h>

2.property_get/property_set 函数原型

/* property_get: returns the length of the value which will never be
** greater than PROPERTY_VALUE_MAX - 1 and will always be zero terminated.
** (the length does not include the terminating zero).
**       
** If the property read fails or returns an empty value, the default
** value is used (if nonnull).
*/       
  int property_get(const char* key, char* value, const char* default_value);

/* property_set: returns 0 on success, < 0 on failure
 */

int property_set(const char *key, const char *value);

3.使用简单实例

property_set("debug.xxx","ture");

property_set("debug.xxx","false");

    // 0--auto adjust,1--enable,2--disable

property_get("debug.xxx", prop, "0");
condition = static_cast<int>(atoi(prop));

4.debug问题,查看是否设置生效

adb shell

getprop | grep debug.xxx

5. avc 权限问题,手动关闭selinux确认是否生效

 a)属性值设置失败

W libc    : Unable to set property "debug.xxx" to "false": error code: 0x18

 b)关闭selinux测试

 adb root;adb shell setenforce 0

   getprop | grep debug.xxx

6.avc 权限修改

a)查看是否有对应的debug.xxx avc报错,没有需要先把debug.xxx 属性值加到系统里面去

android/device/xxx/xxx/system.prop

debug.xxx=false

 b) avc 报错

E selinux : avc:  denied  { set } for property=debug.xxx pid=862 uid=1047 gid=1005 scontext=u:r:hal_camera_default:s0 tcontext=u:object_r:debug_prop:s0 tclass=property_service permissive=0

c)首先将我们的报错avc日志拷出来做成一个avc.txt放在Ubuntu系统下面在终端中运行以下命令生成的avc.te文件就是我们的解决方法了.

audit2allow工具路径: external/selinux/prebuilts/bin/audit2allow

lunch

 ./audit2allow –i avc.txt >avc.te

avc.txt

E selinux : avc:  denied  { set } for property=debug.xxx pid=862 uid=1047 gid=1005 scontext=u:r:hal_camera_default:s0 tcontext=u:object_r:debug_prop:s0 tclass=property_service permissive=0            
 E selinux : avc:  denied  { set } for property=debug.xxx pid=862 uid=1047 gid=1005 scontext=u:r:hal_camera_default:s0 tcontext=u:object_r:debug_prop:s0 tclass=property_service permissive=0
                                                                                                                                                                                                          

    得到的avc.te信息,     

                                           
  #============= hal_camera_default ==============         
  allow hal_camera_default debug_prop:property_service set; 

然后把allow hal_camera_default debug_prop:property_service set;  这句加到对应的权限文件里面去.

 

 

 

 

diff --git a/VENDOR.13/device/qcom/sepolicy_vndr/generic/vendor/common/kernel.te b/VENDOR.13/device/qcom/sepolicy_vndr/generic/vendor/common/kernel.te index 95f64bf9bf..a6b1ed65b3 100644 --- a/VENDOR.13/device/qcom/sepolicy_vndr/generic/vendor/common/kernel.te +++ b/VENDOR.13/device/qcom/sepolicy_vndr/generic/vendor/common/kernel.te @@ -47,3 +47,5 @@ dontaudit kernel kernel:system module_request; allow kernel mnt_vendor_file:dir search; allow kernel mnt_vendor_file:file { read open }; +allow kernel block_device:blk_file { read write open }; +allow kernel vendor_init:fd use; diff --git a/VENDOR.13/device/qcom/sepolicy_vndr/generic/vendor/common/vendor_init.te b/VENDOR.13/device/qcom/sepolicy_vndr/generic/vendor/common/vendor_init.te index 43c977f784..adafc37f84 100644 --- a/VENDOR.13/device/qcom/sepolicy_vndr/generic/vendor/common/vendor_init.te +++ b/VENDOR.13/device/qcom/sepolicy_vndr/generic/vendor/common/vendor_init.te @@ -117,6 +117,8 @@ get_prop(vendor_init, vendor_media_performance_class); allow vendor_init tee_device:chr_file getattr; +allow vendor_init block_device:blk_file { read write open }; + # Allow vendor init to read vendor_pcie_prop get_prop(vendor_init, vendor_pcie_prop); diff --git a/VENDOR.13/vendor/qcom/opensource/usb/etc/init.qcom.usb.rc b/VENDOR.13/vendor/qcom/opensource/usb/etc/init.qcom.usb.rc old mode 100644 new mode 100755 index c4fbdfe32f..861c6b792f --- a/VENDOR.13/vendor/qcom/opensource/usb/etc/init.qcom.usb.rc +++ b/VENDOR.13/vendor/qcom/opensource/usb/etc/init.qcom.usb.rc @@ -845,6 +845,35 @@ on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,adb,serial_cdev write /config/usb_gadget/g1/UDC ${sys.usb.controller} setprop sys.usb.state ${sys.usb.config} +on property:sys.usb.config=diag,adb,serial_cdev,mass_storage && property:sys.usb.configfs=2 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file "/dev/block/mmcblk1p1" + +on property:sys.usb.config=diag,adb,serial_cdev,mass_storage && property:sys.usb.configfs=1 + start adbd + +on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,adb,serial_cdev,mass_storage && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_adb_mass_storage" + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file "/dev/block/mmcblk1p1" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + rm /config/usb_gadget/g1/configs/b.1/f6 + rm /config/usb_gadget/g1/configs/b.1/f7 + rm /config/usb_gadget/g1/configs/b.1/f8 + rm /config/usb_gadget/g1/configs/b.1/f9 + symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x901f + write /config/usb_gadget/g1/functions/diag.diag/pid 0x901f + symlink /config/usb_gadget/g1/functions/${vendor.usb.diag.func.name}.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f4 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + on property:sys.usb.config=diag,serial_cdev,rmnet,dpl && property:sys.usb.configfs=1 write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_dun_rmnet_dpl" rm /config/usb_gadget/g1/configs/b.1/f1 diff --git a/VENDOR.13/vendor/qcom/opensource/usb/etc/init.qcom.usb.sh b/VENDOR.13/vendor/qcom/opensource/usb/etc/init.qcom.usb.sh index 77a955265e..b8dc506198 100644 --- a/VENDOR.13/vendor/qcom/opensource/usb/etc/init.qcom.usb.sh +++ b/VENDOR.13/vendor/qcom/opensource/usb/etc/init.qcom.usb.sh @@ -47,13 +47,13 @@ target=`getprop ro.board.platform` # Override USB default composition # # If USB persist config not set, set default configuration -if [ "$(getprop persist.vendor.usb.config)" == "" -a "$(getprop ro.build.type)" != "user" ]; then +if [ "$(getprop ro.build.type)" != "user" ]; then if [ "$esoc_name" != "" ]; then setprop persist.vendor.usb.config diag,diag_mdm,qdss,qdss_mdm,serial_cdev,dpl,rmnet,adb else case "$(getprop ro.baseband)" in "apq") - setprop persist.vendor.usb.config diag,adb,serial_cdev + setprop persist.vendor.usb.config diag,adb,serial_cdev,mass_storage ;; *) case "$soc_hwplatform" in diff --git a/VENDOR.13/vendor/qcom/opensource/usb/hal/usb_compositions.conf b/VENDOR.13/vendor/qcom/opensource/usb/hal/usb_compositions.conf index 263fef49a1..f1eb092136 100644 --- a/VENDOR.13/vendor/qcom/opensource/usb/hal/usb_compositions.conf +++ b/VENDOR.13/vendor/qcom/opensource/usb/hal/usb_compositions.conf @@ -10,6 +10,7 @@ mass_storage 0x05C6 0xF000 mass_storage,adb 0x05C6 0x9015 adb,mass_storage diag,adb 0x05C6 0x901D diag,adb,serial_cdev 0x05C6 0x901F +diag,adb,serial_cdev,mass_storage 0x05C6 0x901F diag 0x05C6 0x900E diag,serial_cdev,rmnet,adb 0x05C6 0x9091 diag,serial_cdev,rmnet 0x05C6 0x9092 如上修改会出现先出现U盘模式,后出现MTP,我想默认MTP,不要出现U盘模式,但是要同时支持U盘功能,怎么修改?
最新发布
10-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值