在标记';'处重复声明类型'尝试声明 SELinux 类型时

问题描述 投票:0回答:2

我正在尝试使用 SELinux 强制为我的手机(小米 Mi A2 Lite)构建一个 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/

android build selinux
2个回答
0
投票

我遇到了同样的重复声明错误。这是我的设备目录结构:

device/
  my_company/
    my_device/
      BoardConfig.mk
      my_device.mk
    common/
      sepolicy/
        property.te
      my_system.mk

里面

my_device.mk
我有:

$(call inherit-product, device/my_company/common/my_system.mk)

起初在

my_system.mk
我有:

BOARD_SEPOLICY_DIRS += device/my_company/common/sepolicy

但这产生了错误,所以我从

BOARD_SEPOLICY_DIRS
中删除了上面的
my_system.mk
行并将其放入
BoardConfig.mk
中。错误消失了,希望我能准确解释原因,但也许你有同样的问题。


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.