Android App 设置persist 类型系统变量异常分析
来源:互联网 发布:iphone mac地址修改 编辑:程序博客网 时间:2024/04/19 10:47
属性权限
系统中存在多种前缀的系统变量,每种变量设置时对应的用户权限也不一样,系统变量的类型如下:
/* White list of permissions for setting property services. */struct { const char *prefix; unsigned int uid; unsigned int gid;} property_perms[] = { { "net.rmnet0.", AID_RADIO, 0 }, { "net.gprs.", AID_RADIO, 0 }, { "net.ppp", AID_RADIO, 0 }, { "net.qmi", AID_RADIO, 0 }, { "net.lte", AID_RADIO, 0 }, { "net.cdma", AID_RADIO, 0 }, { "ril.", AID_RADIO, 0 }, { "gsm.", AID_RADIO, 0 }, { "persist.radio", AID_RADIO, 0 }, { "net.dns", AID_RADIO, 0 }, { "sys.usb.config", AID_RADIO, 0 }, { "net.", AID_SYSTEM, 0 }, { "dev.", AID_SYSTEM, 0 }, { "runtime.", AID_SYSTEM, 0 }, { "hw.", AID_SYSTEM, 0 }, { "sys.", AID_SYSTEM, 0 }, { "sys.powerctl", AID_SHELL, 0 }, { "service.", AID_SYSTEM, 0 }, { "wlan.", AID_SYSTEM, 0 }, { "bluetooth.", AID_BLUETOOTH, 0 }, { "dhcp.", AID_SYSTEM, 0 }, { "dhcp.", AID_DHCP, 0 }, { "dhcp.offer", AID_NOBODY, 0 }, { "debug.", AID_SYSTEM, 0 }, { "debug.", AID_SHELL, 0 }, { "log.", AID_SHELL, 0 }, { "service.adb.root", AID_SHELL, 0 }, { "service.adb.tcp.port", AID_SHELL, 0 }, { "persist.sys.", AID_SYSTEM, 0 }, { "persist.service.", AID_SYSTEM, 0 }, { "persist.security.", AID_SYSTEM, 0 }, { "persist.service.bdroid.", AID_BLUETOOTH, 0 }, { "selinux." , AID_SYSTEM, 0 }, { "mstar.", AID_SYSTEM, 0 }, { "http.", AID_SYSTEM, 0 }, { "mstar.media.", AID_MEDIA, 0 }, { "mstar.dvfs.", AID_MEDIA, 0 }, { NULL, 0, 0 }};可以注意到persist前缀系统变量的属性如下:
{ "persist.radio", AID_RADIO, 0 }, { "persist.sys.", AID_SYSTEM, 0 }, { "persist.service.", AID_SYSTEM, 0 }, { "persist.security.", AID_SYSTEM, 0 }, { "persist.service.bdroid.", AID_BLUETOOTH, 0 },那么,我们在设置persist.sys类型的属性时,需要用户(也即app)需要有system权限。
app权限
上面说到,设置一些系统属性对应的USER id 为AID_SYSTEM时,需要app用system权限,下面我们可以看一下系统当中一些app的USER ID通过ps我们可以查到一些应用的USDER ID为system,radio,AID_USER + app_id ,知道了这些我们如果碰到设置系统属性不成功,就应该想到升级应用用户属性来
提升用户操作权限,有了system权限才可以对/data目录下的文件进行操作,而所有的persist类型的属性都是在/data/property/目录下以文件形式存在。
设置system权限的方法很简单,就是在AndroidManifest.xml 中添加 android:sharedUserId="android.uid.system" ,这样普通的app就有system权限。
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE异常
普通app在添加android:sharedUserId="android.uid.system" ,使用eclipse编译后,安装就会出现“Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE”异常,其实就是添加android.uid.system 权限之后导致,解决方法:重新签名才能正常安装运行。
总结:当前出现串口使用setprop/getprop 设置获取android系统属性能成功,但是应用通过SystemProperties.get、SystemProperties.set 失败就都可能是应用的权限不够
导致,而在串口设置时一般都root权限比较大才会成功。
0 0
- Android App 设置persist 类型系统变量异常分析
- Android系统属性分析ro.persist.
- 设置Android系统变量
- Android APP字体大小跟随系统设置
- 异常类型:org.hibernate.PersistentObjectException: detached entity passed to persist异常
- 【Android】系统架构层次与异常分析
- Android系统自带App分析(短信App)
- Android 捕捉app系统中未处理的异常
- android app被系统回收后重启异常的解决方法
- 异常类型和异常变量的生命周期
- 异常类型_异常变量的生命周期
- Android 设置app字体不受Android系统控制
- android.app.SuperNotCalledException异常
- android app异常终止
- Android APP异常处理
- android app异常捕获
- APP跳转系统设置
- Android 的系统属性(SystemProperties)设置分析
- 创建dynamic web project工程中遇到的问题
- 百度云资源提取链接
- Android Interface Definition Language (AIDL)
- [Leetcode]Subsets
- office 2013 修订格式
- Android App 设置persist 类型系统变量异常分析
- hdu1010 Tempter of the Bone
- 第四讲 数学公理化方法(上)
- 通过代码添加约束之NSLayoutConstraint
- 5-2 派生类的构造函数
- Wait函数和waitpid函数详解----很好
- HttpClient4.3教程 第二章 连接管理
- JDK并发工具类源码学习系列——PriorityBlockingQueue
- 简单分数类之运算符重载