getprop使用简介

原理:从系统的各种配置文件中读取信息。

init.rc
default.prop
/system/build.prop
使用adb shell getprop就可以把所有的信息都打印出来。而使用setprop命令就可以进行相对应的设置。


$ adb shell getpropgetprop 查看机器的全部信息参数
af.policy.r_submix_prio_adjust
bgw.current3gband
bwc.mm.VideoDecodeCodec
bwc.mm._Profile
camera.open
curlockscreen
dalvik.vm.heapgrowthlimit
dalvik.vm.heapmaxfree
dalvik.vm.heapminfree
dalvik.vm.heapsize
dalvik.vm.heaptargetutilization
dalvik.vm.mtk-stack-trace-file
dalvik.vm.mtk-vm-version
dalvik.vm.stack-trace-file
debug.MB.running
debug.force_rtl
debug.hwc.compose_level
debug.log2sd.defaultpath
debug.mdlogger.Running
debug.mtklog.netlog.Running
debug.sf.busyswap
debug.st.aux_support
dev.bootcomplete
dhcp.ipv6.wlan0.dns1
dhcp.ipv6.wlan0.dns2
dhcp.ipv6.wlan0.ipaddress
dhcp.ipv6.wlan0.leasetime
dhcp.ipv6.wlan0.result
dhcp.wlan0.dns1
dhcp.wlan0.dns2
dhcp.wlan0.dns3
dhcp.wlan0.dns4
dhcp.wlan0.domain
dhcp.wlan0.gateway
dhcp.wlan0.ipaddress获得IP
dhcp.wlan0.leasetime
dhcp.wlan0.mask
dhcp.wlan0.mtu
dhcp.wlan0.pid
dhcp.wlan0.reason
dhcp.wlan0.result
dhcp.wlan0.server
dhcp.wlan0.vendorInfo
drm.service.enabled
external_sd_path
fmradio.driver.enable
gsm.3gswitch
gsm.baseband.capability
gsm.current.phone-type
gsm.enbr.rat
gsm.gcf.testmode
gsm.network.type
gsm.operator.alpha
gsm.operator.iso-country
gsm.operator.isroaming
gsm.operator.numeric
gsm.phone.created
gsm.project.baseband
gsm.ril.eboot
gsm.ril.uicctype
gsm.roaming.indicator.needed.2
gsm.roaming.indicator.needed
gsm.serial
gsm.sim.operator.default-name
gsm.sim.retry.pin1
gsm.sim.retry.pin2
gsm.sim.retry.puk1
gsm.sim.retry.puk2
gsm.sim.ril.phbready
gsm.sim.state
gsm.siminfo.ready
gsm.version.baseband
gsm.version.ril-impl
init.svc.DMAgent
init.svc.MtkCodecService
init.svc.NvRAMAgent
init.svc.PPLAgent
init.svc.adbd
init.svc.afmsvr
init.svc.agpsd
init.svc.autokd
init.svc.backgrounddata
init.svc.batterywarning
init.svc.bootanim
init.svc.bootlogoupdater
init.svc.bwc
init.svc.conn_launcher
init.svc.custom_sn
init.svc.debuggerd
init.svc.dhcpcd_wlan0
init.svc.drm
init.svc.drvbd
init.svc.eemcs_fsd
init.svc.eemcs_mdinit
init.svc.emcsmdlogger
init.svc.emsvr_user
init.svc.enableswap
init.svc.flash_recovery
init.svc.fuse_sdcard1
init.svc.gsm0710muxd
init.svc.healthd
init.svc.installd
init.svc.keystore
init.svc.matv
init.svc.media
init.svc.mobile_log_d
init.svc.msensord
init.svc.mtkbt
init.svc.nac_server
init.svc.nac_ue
init.svc.netd
init.svc.netdiag
init.svc.nvram_daemon
init.svc.nvram_proximity
init.svc.p2p_supplicant
init.svc.poad
init.svc.pq
init.svc.ril-daemon
init.svc.sbchk
init.svc.sdcard
init.svc.servicemanager
init.svc.sn
init.svc.surfaceflinger
init.svc.terservice
init.svc.thermal
init.svc.thermal_manager
init.svc.thermald
init.svc.ueventd
init.svc.vold
init.svc.vtservice
init.svc.wlanLoader
init.svc.wmtLoader
init.svc.writeconfig
init.svc.xlogboot
init.svc.xlogdebugchanged
init.svc.zygote
internal_sd_path
launcherplus.allappsgrid
media.wfd.video-format
mediatek.extmd.usbport
mediatek.wlan.chip
mediatek.wlan.ctia
mediatek.wlan.module.postfix
mtk_wifi.fw_path
mux.report.case
net.bt.name
net.change
net.dns1
net.dns2
net.dns3
net.dns4
net.hostname
net.qtaguid_enabled
net.tcp.buffersize.default
net.tcp.buffersize.edge
net.tcp.buffersize.gprs
net.tcp.buffersize.hsdpa
net.tcp.buffersize.hspa
net.tcp.buffersize.hspap
net.tcp.buffersize.hsupa
net.tcp.buffersize.lte
net.tcp.buffersize.umts
net.tcp.buffersize.wifi
nvram_init
persist.backgrounddata.enable
persist.bootanim.mp4done
persist.bt.fwdump
persist.clearMotion.fblevel.bdr
persist.clearMotion.fblevel.nrm
persist.first_boot
persist.gemini.sim_num
persist.ipo.shutdown.process.wl
persist.lenovo.fmradio.rds
persist.lenovo.ltetype
persist.mtk.aee.aed
persist.mtk.anr.mechanism
persist.mtk.wcn.combo.chipid
persist.radio.default_sim_mode
persist.radio.fd.counter
persist.radio.fd.off.counter
persist.radio.fd.off.r8.counter
persist.radio.fd.r8.counter
persist.radio.ia-apn
persist.radio.ia
persist.ril.cfu.querytype
persist.service.acm.enable
persist.service.adb.enable
persist.sys.afmsvr
persist.sys.bubble2_tips_show
persist.sys.dalvik.vm.lib
persist.sys.disp.pq.gammaidx
persist.sys.disp.pq.pqparamidx
persist.sys.display.clearMotion
persist.sys.first_time_boot
persist.sys.ideadesk_theme_name
persist.sys.input.area
persist.sys.mute.state
persist.sys.profiler_ms
persist.sys.timezone
persist.sys.usb.config
ril.active.md
ril.current.share_modem
ril.ecclist
ril.external.md
ril.fd.mode
ril.first.md
ril.flightmode.poweroffMD
ril.iccid.sim1
ril.ipo.radiooff
ril.radiooff.poweroffMD
ril.ready.sim
ril.specific.sm_cause
ril.telephony.mode
rild.libargs
rild.libpath
ro.adb.secure
ro.allow.mock.location
ro.audio.silent
ro.baseband
ro.board.platform主板平台
ro.boot.serialno
ro.bootloader查看SPL(Hboot)版本号
ro.bootmode
ro.btstack
ro.build.characteristics
ro.build.date.utc
ro.build.date制作者及制作时间
ro.build.description用户的KEY
ro.build.display.id
ro.build.fingerprint系统指纹
ro.build.flavor
ro.build.host编译主机系统
ro.build.id
ro.build.product建立产品
ro.build.tags编译标签
ro.build.type编译模式,如user,userdebug,eng,test模式
ro.build.user编译账户
ro.build.version.codename版本代号
ro.build.version.incremental版本增量
ro.build.version.releaseAndroid系统版本
ro.build.version.sdksdk版本
ro.camera.sound.forced
ro.com.google.clientbase
ro.com.lenovo.smart.config
ro.config.alarm_alert
ro.config.low_ram
ro.config.notification_sound
ro.config.ringtone
ro.config.ringtone_2
ro.config.sms_notifi_sound
ro.config.sms_notifi_sound_2
ro.crypto.fs_flags
ro.crypto.fs_mnt_point
ro.crypto.fs_options
ro.crypto.fs_real_blkdev
ro.crypto.fs_type
ro.crypto.fuse_sdcard
ro.crypto.state
ro.custom.build.version
ro.debuggable
ro.factorytest
ro.gemini.smart_3g_switch
ro.gemini.smart_sim_switch
ro.hardware查看机器板子代号
ro.lenovo.adb
ro.lenovo.bqb
ro.lenovo.cta
ro.lenovo.device
ro.lenovo.operator
ro.lenovo.platform
ro.lenovo.region
ro.lenovo.signalbars
ro.lenovo.sim
ro.lenovo.videocall
ro.lenovo.wificert
ro.lte.dc.support
ro.mediatek.chip_ver
ro.mediatek.gemini_support
ro.mediatek.platform
ro.mediatek.version.branch
ro.mediatek.version.release
ro.mediatek.version.sdk
ro.mediatek.wlan.p2p
ro.mediatek.wlan.wsc
ro.mount.fs
ro.mtk.hardware
ro.mtprof.disable
ro.opengles.version
ro.persist.partition.support
ro.product.board采用的处理器
ro.product.brand手机品牌
ro.product.cpu.abi2cpu的品牌
ro.product.cpu.abicpu的版本
ro.product.device采用的设备
ro.product.hw.version
ro.product.locale.language手机默认语言
ro.product.locale.region地区语言
ro.product.manufacturer手机制造商
ro.product.model内部手机代号
ro.product.name手机正式名称
ro.product.ota.model
ro.product.particular.version
ro.product.sw.internal.version
ro.revision
ro.runtime.firstboot
ro.secure
ro.serialno查看机器的SN号
ro.setupwizard.mode
ro.sf.hwrotation
ro.sf.lcd_density屏幕密度
ro.sys.usb.bicr
ro.sys.usb.charging.only
ro.sys.usb.mtp.whql.enable
ro.sys.usb.storage.type
ro.wifi.channelsWIFI连接的渠道
ro.zygote.preload.enable
service.bootanim.exit
service.sf.status
streamout.lowlatency.allow
sys.autok.is_done
sys.boot.reason
sys.boot_completed
sys.customsn.showcode
sys.display.clearMotion.dimmed
sys.ipo.pwrdncap
sys.ipowin.done
sys.lenovo.romui.version.sdk
sys.md5.state
sys.settings_global_version
sys.settings_system_version
sys.sysctl.extra_free_kbytes
sys.usb.config
sys.usb.mtpConnect
sys.usb.state
sys.usb.vid
ter.service.enable
vold.post_fs_data_done
vold_swap_state
wfd.dummy.enable
wifi.direct.interface
wifi.interface
wifi.tethering.interface
wlan.driver.status
wlan.wfd.security.image

getprop命令是Android系统中的一个工具,用于获取系统属性值。其源码位于system/core/toolbox/getprop.c文件中。 下面是getprop源码中的主要函数: ```c int main(int argc, char** argv) { // 读取命令行参数 parse_args(argc, argv); // 打开系统属性文件 int fd = open(PROP_FILENAME, O_RDONLY | O_CLOEXEC); if (fd < 0) { error_exit("could not open '%s': %s", PROP_FILENAME, strerror(errno)); } // 读取系统属性文件,并输出指定属性的值 char buffer[PROP_VALUE_MAX]; while (ReadPropertyLine(fd, buffer)) { if (match_prefix(buffer, g_prop_name)) { printf("%s\n", get_value(buffer)); close(fd); return 0; } } // 没有找到指定属性 close(fd); return 1; } ``` 该函数首先调用`parse_args`函数解析命令行参数,然后打开系统属性文件,逐行读取属性值并查找指定属性。如果找到了指定属性,则输出其值并返回0。如果没有找到指定属性,则返回1。 ReadPropertyLine函数用于读取属性文件中的每一行,其实现如下: ```c static bool ReadPropertyLine(int fd, char* buffer) { char* p = buffer; while (true) { if (read(fd, p, 1) != 1) { return false; } if (*p == '\n') { *p = '\0'; return true; } if (++p - buffer >= PROP_LINE_MAX) { error_exit("line too long in property file"); } } } ``` 该函数从指定文件描述符中读取一个字符,并将其存储到缓冲区中。如果读取到换行符,则将其替换为字符串结束符号,并返回true。如果缓冲区已满,则调用`error_exit`函数退出程序。 match_prefix函数用于检查属性是否以指定的前缀开头,其实现如下: ```c static bool match_prefix(const char* buffer, const char* prefix) { return strncmp(buffer, prefix, strlen(prefix)) == 0; } ``` 如果属性以指定前缀开头,则返回true。 get_value函数用于获取属性值,其实现如下: ```c static char* get_value(char* buffer) { char* value = strchr(buffer, '='); if (value == NULL) { error_exit("badly formed property line"); } // 返回属性值 return value + 1; } ``` 该函数在属性行中查找等号(=),并返回等号后面的字符串作为属性值。 以上就是getprop命令的源码实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值