不是针对消费电子,像工控特殊行业应用,有时需要将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模式相关推荐

  1. Android 系统属性读取和设置详解

    Android 系统属性读取和设置详解 一.在adb中进行属性读取和设置 1.Settings Provider设置和读取 获取 设置 2.SystemProperties属性读取和设置 二.Andr ...

  2. android系统属性获取及设置

    系统属性获取及设置中的设置值 data/data/com.android.providers.settings/databases/settings.db 1.系统属性获取及设置 android.os ...

  3. 重温1 Android系统架构及版本

    1.Linux内核层(Linux Kernel) 为Android设备的各种硬件提供了底层驱动,Display Driver/Camera Driver/Bluetooth Driver/Flash ...

  4. Android编译默认英语,Android系统语言出厂编译设置为简体中文

    Android系统默认的语言是英语,但是对于中国大陆Android产品厂商来说,不会出厂之后语言还是英语,到用户手里之后,用户自己设置成简体中文吧?有如果客户不懂英语,岂不是就不能设置系统语言了?所以 ...

  5. android系统自带字体设置,安卓手机系统字体设置-系统字体设置(Big Font) 安卓版v2.37-PC6安卓网...

    Big Font 改变系统字体大小:这个软件可以直接修改安卓系统字体的大小,相比原生系统的大中小肯那个还不能完全符合所有人.这个软件还不错. 官方介绍 透过改变系统字体大小Big Font应用,你可以 ...

  6. Android Studio 4以上版本设置成中文

    我们安装好Android Studio后,默认是英文界面的,这可能对开发者来说并不是很友好,所以我们给它设置成中文. 本以为直接在设置里面有切换成中文的功能,结果找了一轮没有,最后网上查看相关方法,发 ...

  7. Android系统首选网络类型设置

    Android 首选网络类型式默认值的修改方法 源码部分 //设置 frameworks/base/packages/SettingsProvider/src/com/android/provider ...

  8. android系统默认值的设置

    1开机图片: android-logo-mask.png android-logo-shine.png 这两个图片一个在上一个在下 ./out/target/common/obj/JAVA_LIBRA ...

  9. Android 系统名字、版本、API level的对应关系

    相关文章:从 Android 10 开始,以甜点命名的"传统"结束了! 但是从Android 10开始,以甜点命名的"传统"结束了. Cupcake (1.5) ...

最新文章

  1. [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
  2. 用Unity盖房子(一):《勇者斗恶龙:建造者2》游戏功能的猜想
  3. SQL语句:SQLwhile(0=0)与while @@fetch_status=0.
  4. Atitit.  c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0   attilax总结
  5. nodejs初探(四)实现一个多人聊天室
  6. pic单片机c语言程序设计实例精粹 pdf,PIC单片机C语言程序设计.pdf
  7. CH341A编程器驱动下载地址及P751dm2模具设置方法截图
  8. 科技论文写作个人心得
  9. FMI飞马网 | AI人工智能/大数据/Database/Linear Algebra/Python/机器学习/Hadoop 有哪些书籍?福利可下载!
  10. cogs2235 烤鸡翅 贪心
  11. linux uefi iso,支持UEFI启动的GRUB2 ISO光盘镜像的制作
  12. [BZOJ]5068: 友好的生物 放缩
  13. 连接交换路由器的方式
  14. 第十三课 类族结构的进化
  15. JVM垃圾回收器-CMS并发标记清除
  16. MyBatis----回顾mybatis自定义和环境搭建+完善自定义Mybatis的注解开发
  17. linux - 时间时区设置
  18. C# Windows 7任务栏开发之进度条(Progress Bar)
  19. Nature子刊 | 全球变化因子对土壤微生物多样性和功能的影响
  20. 百度网盘直链下载教程

热门文章

  1. pyecharts 画折线图去掉折线上小圆圈
  2. 12.1 Prim算法
  3. 【OpenGL】绘制一个点
  4. storm和vgj vgj_Team VGJ发布公告解散 两年征程划上句号
  5. 来看看你的时间都去哪儿了
  6. 小车红外线自主充电方案-1
  7. 提权-Windows操作系统
  8. Android 插件化之—— 加载插件中的资源
  9. C 语言调用 JNI_CreateJavaVM
  10. 2019年开户难,大陆居民如何在香港的银行开个人账户?