MTK添加Android权限te文件后,编译make bootimage报重复duplicate错误。
错误信息:
------------------------------------------------------------------------
out/host/linux-x86/bin/checkpolicy: loading policy configuration from
out/target/product/xxx/obj/ETC/sepolicy_intermediates/policy.conf
device/mediatek/common/sepolicy/device.te:164:
ERROR 'duplicate declaration of type/attribute' at token ';' on line 14430:
type
xxx_device, dev_type;
checkpolicy: error(s) encountered while parsing configuration
------------------------------------------------------------------------
注意:报错信息中14430行说的是policy.conf文件,不过这不是重点。
duplicate,重复。
报错,重复,哪里重复了呢?
是在这两个目录下重复了:
xxxprj/device/mediatek/common/sepolicy
xxxprj/external/sepolicy
通过这个命令可以看到,确实两个目录下都有,重复了。
xxxprj/device/mediatek/common/sepolicy# find * |xargs grep
xxx_device
xxxprj/external/sepolicy# find * |xargs grep
xxx_device
原因在于,Android的te权限文件,在两个路径下都可以添加,效果一样,但不能同时有,不然会报重复错误!
解决方法:
删除device或external目录下sepolicy中的一个权限te文件,
删除中间缓存,
# rm -rf out/target/product/xxx/obj/ETC/sepolicy_intermediates
重新编译,生成boot.img,OK。