1,
新建一个sh脚本cameratesttool.sh
#!/system/bin/sh
#循环执行次数
for times in $(seq 5)
do
#启动相机
am start com.android.camera2/com.android.camera.CameraLauncher
#延时2s
sleep 2s
#连续5次点击拍照按钮
for clicktimes in $(seq 5)
do
input tap 370 1170
sleep 3s
echo clicktimes:$clicktimes
done
#点击Back键退出相机
input keyevent 4
sleep 2s
echo opration:$times
done
2,将脚本放到
device/qcom/sdm660_64/下,
修改sdm660_64.mk
+PRODUCT_COPY_FILES += \
+ device/qcom/sdm660_64/cameratesttool.sh:system/bin/cameratesttool.sh
+
3,添加开机自动启动服务
修改init.target.rc文件
+#camera test tool
+service cameratesttool /system/bin/sh /system/bin/cameratesttool.sh
+ class main
+ user root
+ group root
+ oneshot
+ disabled
+ seclabel u:r:cameratesttool:s0
+
+on property:sys.boot_completed=1
+ start cameratesttool
4,
添加系统权限:
device/qcom/sepolicy/vendor/sdm660/file_contexts
+#camera test tool
+/system/bin/cameratesttool.sh u:object_r:cameratesttool_exec:s0
+
添加文件:device/qcom/sepolicy/vendor/sdm660/cameratesttool.te
type cameratesttool, domain, coredomain;
type cameratesttool_exec, exec_type, file_type;
init_daemon_domain(cameratesttool)
allow cameratesttool shell_exec:file { getattr execute read open };
allow cameratesttool storage_file:lnk_file { read };
allow cameratesttool tmpfs:dir { search };
allow cameratesttool mnt_user_file:dir { search };
allow cameratesttool mnt_user_file:lnk_file read;
5,编译
测试make bootimage
./build.sh bootimage -j8 2>&1 | tee build.log
编译时,可以查看自己的规则是否编译进去,
可以查看文件 android/out/target/product/项目名称/obj/ETC/sepolicy_intermediates/ 下的 policy.conf
这个里面可以查看到是否编译进去了,
比如你 定义了一个type什么名称,在文件里搜索,查看能否看到。
————————————————
单替换权限,快速编译sepolicy并验证
mmma system/sepolicy
adb push out/target/product/xxx/system/etc/selinux /system/etc/selinux
adb push out/target/product/xxx/vendor/etc/selinux /vendor/etc/selinux
全编译系统,刷机验证。
注:需要机器有root权限下才能操作执行。