Android getprop参数如何查看与使用?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 参数 正文

getprop 是 Android 系统中一个非常核心和常用的命令行工具,用于读取和设置系统属性,这些属性在 Android 系统的启动、运行和配置中扮演着至关重要的角色。

android getprop参数
(图片来源网络,侵删)

核心概念:什么是系统属性?

系统属性是键值对形式的配置信息,存储在内存中,它们在整个 Android 系统中广泛使用,用于:

  • 系统配置ro.build.version.release 存储 Android 版本号。
  • 硬件信息ro.product.model 存储设备型号。
  • 服务控制ctl.startctl.stop 用于启动和停止系统服务。
  • 进程间通信:不同的系统服务和应用可以通过属性来传递信息。

属性分为两种类型:

  1. 持久属性:以 ro. (read-only) 开头,这些属性在系统启动时从 default.propbuild.prop 等文件中读取,一旦设置就不能被修改,它们定义了系统的核心特征。
  2. 非持久属性:以其他前缀开头(如 persist., net., debug. 等),这些属性可以在运行时被修改,但通常只有 persist. 前缀的属性会在设备重启后保留(它们会被写入 /data/property 目录下的文件中)。

getprop 命令的基本语法和参数

getprop 命令非常灵活,可以在 ADB shell 或设备本身的终端中直接使用。

查看所有属性

这是最常用的功能之一,可以列出系统中几乎所有的属性。

android getprop参数
(图片来源网络,侵删)

语法:

getprop

说明:

  • 执行此命令后,你会看到一个格式化的列表,每一行通常显示为:[key]: [value]
  • 属性列表非常长,包含系统所有服务的状态和配置,在终端中,你可能需要使用 moreless 命令来分页查看:
    getprop | more

    或者

    getprop | less

示例输出片段:

[debug.signed_kernel_boot_image]: [true]
[dalvik.vm.stack-trace-file]: /data/anr/traces.txt
[dev.bootcomplete]: [1]
[dhcp.wlan0.dns1]: [8.8.8.8]
[dhcp.wlan0.dns2]: [8.8.4.4]
[dhcp.wlan0.gateway]: [192.168.1.1]
[dhcp.wlan0.ipaddress]: [192.168.1.10]
[dhcp.wlan0.leasetime]: [86400]
[dhcp.wlan0.masklength]: [24]
[init.svc.bootanim]: [running]
[init.svc.console]: [running]
[init.svc.vold]: [running]
[net.dns1]: [8.8.8.8]
[net.dns2]: [8.8.4.4]
[net.hostname]: [user-device]
[net.ppp.ppp0.dns1]: [8.8.8.8]
[net.ppp.ppp0.dns2]: [8.8.4.4]
[ro.adb.secure]: [1]
[ro.build.date]: [Wed Aug 10 10:15:23 CST 2025]
[ro.build.date.utc]: [1660168523]
[ro.build.fingerprint]: [samsung/a52qxx/a52q:12/SP1A.210812.016/S918BXXU2AVL4:user/release-keys]
[ro.build.id]: [SP1A.210812.016]
[ro.build.version.release]: [12]
[ro.build.version.sdk]: [31]
[ro.product.brand]: [samsung]
[ro.product.device]: [a52qxx]
[ro.product.manufacturer]: [samsung]
[ro.product.model]: [SM-A526B]
[ro.product.name]: [a52qxx]
[ro.serialno]: [R58M40B8LX]
[ro.setupwizard.mode]: [OPTIONAL]
...

查看单个属性

当你知道具体的属性键时,可以使用此命令来快速获取其值。

语法:

getprop <key>

说明:

  • 如果属性存在,命令会直接返回其值。
  • 如果属性不存在,命令会返回空字符串,并且没有错误提示。

示例:

# 查看 Android 版本
getprop ro.build.version.release
# 输出: 12
# 查看设备型号
getprop ro.product.model
# 输出: SM-A526B
# 查看 ADB 是否安全模式(1为是,0为否)
getprop ro.adb.secure
# 输出: 1

设置属性

getprop 也可以用来设置属性,但通常不推荐普通用户随意修改,因为这可能会影响系统稳定性。

语法:

setprop <key> <value>

说明:

  • 这个命令会立即在内存中设置属性的值。
  • 对于 ro. (只读) 属性,此命令会失败。
  • 对于 persist. 属性,修改后会立即生效,并且在下次重启后也会保留。
  • 对于其他普通属性,修改会立即生效,但重启后会恢复为默认值。

示例:

# 设置一个自定义属性(重启后会丢失)
setprop my.custom.property "hello world"
# 查看刚刚设置的属性
getprop my.custom.property
# 输出: hello world
# 修改一个持久属性,使其在重启后生效
setprop persist.sys.timezone "America/New_York"

常用且重要的系统属性列表

以下是一些开发者和技术爱好者经常关注的属性:

属性键 说明 示例值
ro.build.version.release Android 大版本号 12, 13, 14
ro.build.version.sdk Android SDK 版本号 31, 32, 33, 34
ro.build.version.security 安全补丁级别 2025-08-05
ro.product.model 设备型号 Pixel 7 Pro, SM-G998B
ro.product.brand 设备品牌 google, samsung
ro.product.device 设备代号 panther, a52qxx
ro.build.fingerprint 系统指纹,唯一标识一个系统编译 google/panther/panther:13/TQ3A.230901.001/20251001193049:user/release-keys
ro.serialno 设备序列号 R58M40B8LX
ro.bootmode 启动模式 normal, recovery, sideload, factory
ro.debuggable 是否可调试 1 (是), 0 (否)
ro.adb.secure ADB 安全模式,决定是否需要 root 才能进行 ADB 连接 1 (是), 0 (否)
ro.build.date 系统编译日期 Wed Aug 10 10:15:23 CST 2025
service.adb.tcp.port ADB TCP 连接端口,设置为 5555 后可通过网络连接 5555
persist.sys.timezone 系统时区 Asia/Shanghai
net.hostname 设备主机名 user-device

实践场景和技巧

场景1:如何通过 ADB 使用 getprop

在电脑上,你需要先安装 Android SDK Platform Tools,然后使用 adb shell 命令进入设备的 shell 环境。

# 1. 连接设备并进入 shell
adb shell
# 2. 在 shell 内部执行 getprop
getprop ro.build.version.release
# 或者直接在电脑上执行,将命令传递给 shell
adb shell "getprop ro.build.version.release"

场景2:如何查找包含特定关键词的属性?

当属性列表太长时,可以使用 grep 命令来过滤。

# 查找所有与 "build" 相关的属性
getprop | grep "build"
# 查找所有值为 "running" 的属性(通常表示正在运行的服务)
getprop | grep "\[running\]"
# 查找所有 DNS 相关的属性
getprop | grep "dns"

场景3:如何判断设备是否为模拟器?

可以通过检查一系列特定属性来判断设备是真实设备还是模拟器(如 Android Emulator 或 Genymotion)。

# 检查 ro.kernel.qemu 属性是否存在(模拟器通常会有)
if getprop ro.kernel.qemu; then
    echo "This is an emulator."
else
    echo "This is a physical device."
fi
# 其他检查项
# 1. ro.product.model 包含 "sdk_" 或 "vbox86p"
# 2. ro.build.characteristics 包含 "emulator"
# 3. ro.hardware 包含 "goldfish" 或 "ranchu"

重要注意事项

  1. 权限:在非 root 的设备上,普通应用无法直接读取或修改大部分系统属性。getprop 主要供系统应用和具有 READ_PHONE_STATE 等高权限的应用使用,以及供开发者在 ADB shell 中调试。
  2. 稳定性不要随意使用 setprop 修改你不熟悉的属性,特别是 ro. 和核心服务相关的属性,这可能导致系统崩溃或功能异常。
  3. getprop vs adb shell getprop:两者功能相同。adb shell getprop 是将 getprop 命令发送到目标设备上执行,如果你在设备本身的终端(如 Termux)中,直接使用 getprop 即可。
  4. 属性文件:系统属性的初始值来源于多个文件,最重要的包括:
    • /system/default.prop
    • /system/build.prop
    • /vendor/build.prop
    • /product/build.prop
    • /system/etc/prop.default
    • /data/property/* (用于 persist. 属性)
命令 功能 示例
getprop 列出所有系统属性 getprop \| less
getprop <key> 获取单个属性的值 getprop ro.build.version.release
setprop <key> <value> 设置属性的值(谨慎使用) setprop persist.sys.timezone "UTC"
getprop \| grep <keyword> 搜索包含特定关键词的属性 getprop \| grep "dns"

掌握 getprop 是深入理解 Android 系统和进行高级调试的关键技能之一,希望这份详细的解析对你有帮助!

-- 展开阅读全文 --
头像
SmartMat智能瑜伽垫,如何让瑜伽练习更智能高效?
« 上一篇 今天
MacBook Pro 2025参数有哪些升级?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]