首页 > 解决方案 > 在标记 ';' 处重复声明类型' 尝试声明 SELinux 类型时

问题描述

我正在尝试为我的手机(小米米 A2 Lite)构建一个带有 SELinux 强制的 ROM。我已经在许可模式下成功启动了手机,但是在强制模式下,Wi-fi 将无法工作,并且 SystemUI 每隔几分钟就会重新启动一次,显示“手机正在启动...”而不是启动器屏幕。

我曾经audit2allow从手机中获取 SELinux 拒绝,并将输出添加到 SELinux 策略列表中。但是,当我尝试编译 ROM 时,出现以下错误:

device/xiaomi/daisy/sepolicy/daisy.te:224:ERROR 'unknown type qemu_hw_mainkeys_prop' at token ';' on line 75538:
allow platform_app qemu_hw_mainkeys_prop:file read;

收到该错误后,我在 property.te 文件中声明了类型:

type qemu_hw_mainkeys_prop, property_type;

在尝试再次编译 ROM 之后,我得到了这个:

device/xiaomi/daisy/sepolicy/property.te:3:ERROR 'Duplicate declaration of type' at token ';' on line 75576:
type qemu_hw_mainkeys_prop, property_type;

DT:https ://github.com/tkchn/android_device_xiaomi_daisy/

标签: androidbuildselinux

解决方案


Android 会将所有 te 文件附加到一个文件中。需要在每个 te 文件的末尾添加一个空行,否则前一个文件的最后一行和当前文件的第一行会混在一起。而且,我更喜欢在每个 te 文件的开头添加一个空白行,以避免其他 te 文件出现格式错误。


推荐阅读