android系统user/userdebug版本设置selinux到SELINUX_PERMISSIVE模式
不是针对消费电子,像工控特殊行业应用,有时需要将android的selinux强行打开。
方法如下:
1、system\core\init\Android.mk
--- a/system/core/init/Android.mk
+++ b/system/core/init/Android.mk
ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
init_options += \-DALLOW_LOCAL_PROP_OVERRIDE=1 \-DALLOW_PERMISSIVE_SELINUX=1 \-DREBOOT_BOOTLOADER_ON_PANIC=1 \-DWORLD_WRITABLE_KMSG=1 \-DDUMP_ON_UMOUNT_FAILURE=1
else
init_options += \-DALLOW_LOCAL_PROP_OVERRIDE=0 \--- -DALLOW_PERMISSIVE_SELINUX=0 \+++ -DALLOW_PERMISSIVE_SELINUX=1 \ //添加这行,去掉上面一行-DREBOOT_BOOTLOADER_ON_PANIC=0 \-DWORLD_WRITABLE_KMSG=0 \-DDUMP_ON_UMOUNT_FAILURE=0
endif
2、system\core\init\selinux.cpp
EnforcingStatus StatusFromCmdline() {--- //EnforcingStatus status = SELINUX_ENFORCING;
+++ EnforcingStatus status = SELINUX_PERMISSIVE;import_kernel_cmdline(false,[&](const std::string& key, const std::string& value, bool in_qemu) {if (key == "androidboot.selinux" && value == "permissive") {status = SELINUX_PERMISSIVE;}});//status = SELINUX_PERMISSIVE; //可以打开直接设置return status;
}
3、具体的实现代码如下:
system\core\init\selinux.cpp
enum EnforcingStatus { SELINUX_PERMISSIVE, SELINUX_ENFORCING };EnforcingStatus StatusFromCmdline() {//EnforcingStatus status = SELINUX_ENFORCING;EnforcingStatus status = SELINUX_PERMISSIVE;import_kernel_cmdline(false,[&](const std::string& key, const std::string& value, bool in_qemu) {if (key == "androidboot.selinux" && value == "permissive") {status = SELINUX_PERMISSIVE;}});status = SELINUX_PERMISSIVE;return status;
}bool IsEnforcing() {if (ALLOW_PERMISSIVE_SELINUX) { //ALLOW_PERMISSIVE_SELINUX=1,进入 SELINUX_PERMISSIVE!=SELINUX_ENFORCING,返回falsereturn StatusFromCmdline() == SELINUX_ENFORCING;}return true;
}
android系统user/userdebug版本设置selinux到SELINUX_PERMISSIVE模式相关推荐
- Android 系统属性读取和设置详解
Android 系统属性读取和设置详解 一.在adb中进行属性读取和设置 1.Settings Provider设置和读取 获取 设置 2.SystemProperties属性读取和设置 二.Andr ...
- android系统属性获取及设置
系统属性获取及设置中的设置值 data/data/com.android.providers.settings/databases/settings.db 1.系统属性获取及设置 android.os ...
- 重温1 Android系统架构及版本
1.Linux内核层(Linux Kernel) 为Android设备的各种硬件提供了底层驱动,Display Driver/Camera Driver/Bluetooth Driver/Flash ...
- Android编译默认英语,Android系统语言出厂编译设置为简体中文
Android系统默认的语言是英语,但是对于中国大陆Android产品厂商来说,不会出厂之后语言还是英语,到用户手里之后,用户自己设置成简体中文吧?有如果客户不懂英语,岂不是就不能设置系统语言了?所以 ...
- android系统自带字体设置,安卓手机系统字体设置-系统字体设置(Big Font) 安卓版v2.37-PC6安卓网...
Big Font 改变系统字体大小:这个软件可以直接修改安卓系统字体的大小,相比原生系统的大中小肯那个还不能完全符合所有人.这个软件还不错. 官方介绍 透过改变系统字体大小Big Font应用,你可以 ...
- Android Studio 4以上版本设置成中文
我们安装好Android Studio后,默认是英文界面的,这可能对开发者来说并不是很友好,所以我们给它设置成中文. 本以为直接在设置里面有切换成中文的功能,结果找了一轮没有,最后网上查看相关方法,发 ...
- Android系统首选网络类型设置
Android 首选网络类型式默认值的修改方法 源码部分 //设置 frameworks/base/packages/SettingsProvider/src/com/android/provider ...
- android系统默认值的设置
1开机图片: android-logo-mask.png android-logo-shine.png 这两个图片一个在上一个在下 ./out/target/common/obj/JAVA_LIBRA ...
- Android 系统名字、版本、API level的对应关系
相关文章:从 Android 10 开始,以甜点命名的"传统"结束了! 但是从Android 10开始,以甜点命名的"传统"结束了. Cupcake (1.5) ...
最新文章
- [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
- 用Unity盖房子(一):《勇者斗恶龙:建造者2》游戏功能的猜想
- SQL语句:SQLwhile(0=0)与while @@fetch_status=0.
- Atitit. c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0 attilax总结
- nodejs初探(四)实现一个多人聊天室
- pic单片机c语言程序设计实例精粹 pdf,PIC单片机C语言程序设计.pdf
- CH341A编程器驱动下载地址及P751dm2模具设置方法截图
- 科技论文写作个人心得
- FMI飞马网 | AI人工智能/大数据/Database/Linear Algebra/Python/机器学习/Hadoop 有哪些书籍?福利可下载!
- cogs2235 烤鸡翅 贪心
- linux uefi iso,支持UEFI启动的GRUB2 ISO光盘镜像的制作
- [BZOJ]5068: 友好的生物 放缩
- 连接交换路由器的方式
- 第十三课 类族结构的进化
- JVM垃圾回收器-CMS并发标记清除
- MyBatis----回顾mybatis自定义和环境搭建+完善自定义Mybatis的注解开发
- linux - 时间时区设置
- C# Windows 7任务栏开发之进度条(Progress Bar)
- Nature子刊 | 全球变化因子对土壤微生物多样性和功能的影响
- 百度网盘直链下载教程