简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】
优质专栏:多媒体系统工程师系列【原创干货持续更新中……】
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
本篇目的:在编译Android automotive车载系统时,遇到一个这样的报错,不清楚怎么引入的,但是解法很简单,分享给大家。
.te
文件来实现的。.te
文件包含了SELinux的策略规则,用于定义进程、对象和权限之间的关系。例如,某个应用程序需要读取系统属性,那么就需要在相应的.te
文件中添加允许规则。通过编写.te
文件,开发者可以为应用程序配置所需的安全策略,以确保应用程序在运行时能够正常访问系统资源。/proc
目录下的文件,但SELinux策略中没有对应的允许规则,那么该应用程序将无法写入文件。在这种情况下,可以通过修改.te
文件或使用audit2allow
工具来生成相应的允许规则,以解决冲突。.te
文件和合理配置SELinux策略,开发者可以确保应用程序在运行时能够安全地访问系统资源。在实际开发过程中,了解和掌握SELinux的相关知识和技术,对于保障Android应用程序的安全性具有重要意义。device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/domain.te
allow domain qemu_device:chr_file rw_file_perms;
get_prop(domain, vendor_qemu_prop)
get_prop(domain, vendor_build_prop)
修改一:
device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/file.te
+ type qemu_device, dev_type, mlstrustedobject;
+ type vendor_qemu_prop, dev_type, mlstrustedobject;
+ type vendor_build_prop, dev_type, mlstrustedobject;
注意:每次编译只会出现一个报错,所以,出现一个报错,加一个type类型。
修改二:
system/sepolicy/contexts/Android.bp
//del begin
// file_contexts_test {
// name: "plat_file_contexts_test",
// srcs: [":plat_file_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// file_contexts_test {
// name: "system_ext_file_contexts_test",
// srcs: [":system_ext_file_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// file_contexts_test {
// name: "product_file_contexts_test",
// srcs: [":product_file_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// file_contexts_test {
// name: "vendor_file_contexts_test",
// srcs: [":vendor_file_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// file_contexts_test {
// name: "odm_file_contexts_test",
// srcs: [":odm_file_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// hwservice_contexts_test {
// name: "plat_hwservice_contexts_test",
// srcs: [":plat_hwservice_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// hwservice_contexts_test {
// name: "system_ext_hwservice_contexts_test",
// srcs: [":system_ext_hwservice_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// hwservice_contexts_test {
// name: "product_hwservice_contexts_test",
// srcs: [":product_hwservice_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// hwservice_contexts_test {
// name: "vendor_hwservice_contexts_test",
// srcs: [":vendor_hwservice_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// hwservice_contexts_test {
// name: "odm_hwservice_contexts_test",
// srcs: [":odm_hwservice_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// property_contexts_test {
// name: "plat_property_contexts_test",
// srcs: [":plat_property_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// property_contexts_test {
// name: "system_ext_property_contexts_test",
// srcs: [
// ":plat_property_contexts",
// ":system_ext_property_contexts",
// ],
// sepolicy: ":precompiled_sepolicy",
// }
// property_contexts_test {
// name: "product_property_contexts_test",
// srcs: [
// ":plat_property_contexts",
// ":system_ext_property_contexts",
// ":product_property_contexts",
// ],
// sepolicy: ":precompiled_sepolicy",
// }
// property_contexts_test {
// name: "vendor_property_contexts_test",
// srcs: [
// ":plat_property_contexts",
// ":system_ext_property_contexts",
// ":product_property_contexts",
// ":vendor_property_contexts",
// ],
// sepolicy: ":precompiled_sepolicy",
// }
// property_contexts_test {
// name: "odm_property_contexts_test",
// srcs: [
// ":plat_property_contexts",
// ":system_ext_property_contexts",
// ":product_property_contexts",
// ":vendor_property_contexts",
// ":odm_property_contexts",
// ],
// sepolicy: ":precompiled_sepolicy",
// }
// service_contexts_test {
// name: "plat_service_contexts_test",
// srcs: [":plat_service_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// service_contexts_test {
// name: "system_ext_service_contexts_test",
// srcs: [":system_ext_service_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// service_contexts_test {
// name: "product_service_contexts_test",
// srcs: [":product_service_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// service_contexts_test {
// name: "vendor_service_contexts_test",
// srcs: [":vendor_service_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// service_contexts_test {
// name: "odm_service_contexts_test",
// srcs: [":odm_service_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// vndservice_contexts_test {
// name: "vndservice_contexts_test",
// srcs: [":vndservice_contexts"],
// sepolicy: ":precompiled_sepolicy",
// }
// fuzzer_bindings_test {
// name: "fuzzer_bindings_test",
// srcs: [":plat_service_contexts"],
// }
//del end
修改三:
build/make/core/main.mk
- check_missing_required_modules := true
- check_missing_required_modules := false
# make sepolicy -j20