Android添加系统属性之SystemProperties

本文介绍了Android系统中添加SystemProperty属性的方法,包括其命名规则和权限限制。SystemProperty属性受系统严格控制,如ro和persist开头的属性代表只读和持久化。权限涉及到AID_SYSTEM、AID_MEDIA和AID_RADIO等,而添加自定义属性通常需要在system.prop文件中进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android添加系统属性有两种,一种是System.Setting类的属性,这种属性其实是存在SettingProvider数据库中的,也就是framework/base/packages/settingprovider/src/com/android/providers/settings/DatabaseHelper.java所load的那些,添加这种类型的系统属性下篇再写。现在先写下如何添加另外一种,也就是SystemProperty属性,SystemProperty属性是被系统严格限制的,首先是它的命名,必须以system/core/init/Property_services.c中定义的

/* 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 },
    { "mux.",             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 },
    { "service.",         AID_SYSTEM,   0 },
    { "wlan.",            AID_SYSTEM,   0 },
    { "dhcp.",            AID_SYSTEM,   0 },
    { "dhcp.",            AID_DHCP,     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 },
    { "mediatek.",        AID_RADIO,    0 },
    { "gps.",             AID_GPS,   AID_SYSTEM },
    { "cdma.",            AID_RADIO,    0 },
    { "af.",              AID_MEDIA,   0 },
    { "a2dp.",            AID_MEDIA,   0 },
    { "streamin.",        AID_MEDIA,   0 },
    { "streamout.",       AID_MEDIA,   0 },
    { NULL, 0, 0 }
};其中ro开头表示只读属性,presist开头的表示可存储,也就是以文件的形式保存的,开关机不会失效的。其中AID_SYSTEM,AID_MEDIA,AID_RADIO等代表的权限,也就是程序签名以及所在的进程ID,比如系统的Settings所拥有的权限android:sharedUserId="android.uid.system“以及Android.mk中的平台签名LOCAL_CERTIFICATE := platform使得Settings具有system权限,对应的AID_SYSTEM类型。

添加一个自定义的属性按照上面的规则,system.prop文件中添加,也就是编译在手机中的build.prop中看到的那些属性。比如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值