使用ADB获取Android设备上各类信息

[复制链接]
查看632 | 回复6 | 2023-11-22 15:03:38 | 显示全部楼层 |阅读模式

本帖最后由 Hiyase 于 2023-11-22 15:12 编辑

本帖最后由 Hiyase 于 2023-11-22 15:11 编辑

本帖最后由 Hiyase 于 2023-11-22 15:05 编辑

以下信息获取方法都是在设备 Redmi K30 Pro 以及 Crdroid Rom 上进行 如在联发科,华为设备上,可能部分命令无法使用。且不保证所有命令都可以使用

ADB Base command

adb -s [serial/IP:Port] #使用指定的序列号/地址进行连接
adb devices -l #获取已连接的设备, -l 有更细节的参数
adb connect #ip:port 通过无线网络连接

state: authorizing (等待授权) ,device(已连接) no device(无设备) ,offline(未连接/无响应)

usb:                      #有此参数表示该设备通过USB连接
product: lineage_lmi      #设备的产品名称是lineage_lmi,它似乎运行的是LineageOS自定义ROM。
model: Redmi_K30_Pro      #设备的模型名称是Redmi K30 Pro。
device: lmi               #设备的代号
transport_id: 11          #传输ID为11
#由以下三个属性组成:ro.product.name ro.product.model ro.product.device

https://www.cnblogs.com/1996swg/p/9810424.html 要看一下

Get Hardware info


adb shell getprop ro.product.manufacturer #获取设备制造商
adb shell getprop ro.product.model        #获取设备型号 
adb shell getprop ro.product.name         #获取设备产品名称
adb shell getprop ro.product.device       #获取设备代号
adb shell getprop ro.product.board        #获取主板型号

CPU info

adb shell getprop ro.soc.manufacturer #获取soc制造商
adb shell getprop ro.soc.model #获取soc名称

adb shell cat /sys/devices/soc0/vendor #获取soc0的制造商信息
adb shell cat /sys/devices/soc0/family #获取soc0的家族系列
adb shell cat /sys/devices/soc0/chip_name #获取soc0的芯片名称
adb shell cat /sys/devices/system/cpu/possible #获取 cpu 核心数
adb shell cat /proc/stat #获取 cpu 运行状态
adb shell cat /proc/cpuinfo 
adb shell su -c cat '/dev/block/bootdevice/by-name/logfs | grep "Chip"' #芯片,版本,序列号(疑似联发科不可用)

processor: 0/1 表示第几个核。 BogoMIPS:伪MIPS,用于测量CPU速度 Features:表示当前CPU所支持的特性 CPU architecture:7表示arm-v7,8表示arm-v8

More CPU info

adb shell cat /sys/devices/system/cpu/cpufreq/policy[id]/
  • affected_cpus — 这一组policy可调度哪个核心
  • cpuinfo_min_freq — CPU 最小可用频率
  • cpuinfo_max_freq — CPU 最大可用频率
  • scaling_driver — CPUfreq 的驱动程序
  • scaling_available_governors — 列出CPU可用的调度器
  • scaling_available_frequencies — 列出CPU的可用频率
  • scaling_governor — 正在使用的CPUfreq调度器 (可更改)
  • cpuinfo_cur_freq — 显示 CPU 当前的处理频率
  • scaling_min_freq — 当前最小频率 (可更改)
  • scaling_max_freq — 当前最大频率 (可更改)

使用 echo [调度器] > /sys/devices/system/cpu/cpufreq/policy[id]/scaling_governor (root)可以更改调度器 频率同理,但无论更改哪个,必须是可用的

adb shell 'su -c "echo xxx > file"'

possible 可能的CPU核心数 present 展示的CPU核心数 modalias :CPU 类型和 feature uevent :展示(?)信息 (需要Root) 作用不详 ofline online 下线/上线的CPU

Get GPU info

adb shell dumpsys gfxinfo #信息过多需要精简(无用信息)
adb shell dumpsys graphicsstats #应用显卡占用历史信息(无用信息)
adb shell dumpsys SurfaceFlinger |grep GLES #显卡型号及OpenGL版本
adb shell cmd gpu vkjson # vulkan 信息(部分)(未来可能弃用)

/sys/kernel/gpu 目录下,可以修改调度器及频率信息(更改和读取均需要Root) 华为设备可能不在此目录

  • gpu_available_governor — 可用的调度器列表
  • gpu_governor — 当前使用的调度器 (可更改)
  • gpu_freq_table — 支持频率列表
  • gpu_min_clock — 当前最小频率 (可更改)
  • gpu_max_clock — 当前最大频率 (可更改)
  • gpu_busy — 当前占用率
  • gpu_clock — 当前处理频率,单位 Mhz
  • gpu_tmu不知道

上述目录是软链接,真实目录为: /sys/devices/platform/soc/3d00000.qcom,kgsl-3d0/devfreq/3d00000.qcom,kgsl-3d0 但使用真实目录可能会造成不兼容

OpenGL和Vulkan的更多信息只能通过代码实现

from Google: 如果设备包含 Vulkan 驱动程序,则该设备需要声明 FEATURE_VULKAN_HARDWARE_LEVELFEATURE_VULKAN_HARDWARE_VERSION 系统功能

Get Memory info

adb shell cat /proc/meminfo #参数太多,等待理解
adb shell dumpsys procstats #内存占用情况,等待检查更多参数
adb shell dumpsys meminfo -h #等待检查更多参数
adb shell su -c cat '/dev/block/bootdevice/by-name/logfs | grep "DDR Frequency"' #疑似获取内存频率 (疑似联发科不可用)

Get Disk info

adb shell dumpsys diskstats #磁盘状态
adb shell df #目前信息还少,需要其他方案
adb shell dd "if=/dev/block/bootdevice/by-name/recovery of=/sdcard/recovery.img" #备份recovery 到 /sdcard

Get Screen info

adb shell dumpsys display #大量显示相关信息 (需筛选)
adb shell dumpsys SurfaceFlinger #图形合成器信息(包含屏幕信息,等筛选
adb shell getprop ro.sf.lcd_density #疑似获取默认屏幕密度

wm Command

adb shell wm size #显示或更改尺寸
adb shell wm size reset #重置屏幕尺寸
adb shell wm density #显示或更改密度
adb shell wm density reset #重置屏幕密度

Get Battery info

adb shell dumpsys battery -h #等待检查更多参数
adb shell dumpsys batterystats -h #等待检查更多参数
From adb shell dumpsys battery
  AC powered: true              #表示交流电充电 true为正在充电,false为未在充电
  USB powered: false            #表示USB充电,规则同上,省略
  Wireless powered: false       #表示无线充电
  Max charging current: 1742674 #当前充电电流, 这里为 1742674 µA 微安培 换算为 1742.674 mA
  Max charging voltage: 4289539 #当前充电电压, 这里为 4289539 nV 纳伏特 换算为 4.289539 mV
  Charge counter: 2015801       #疑似单位为 µAh 微安时 换算为 2015.801mAh 充满电时为 3622.000mAh 可能是损耗
  status: 2                     #电池状态 1: 未知 2: 正在充电 3: 正在放电 4: (已连接)但未充电 5:已充满 
  health: 2                     #电池健康 1: 未知 2: 良好 3: 过热 4: 已损坏 5: 电压过高。6: 未知故障。7: 温度过低
  present: true                 #true表示已安装电池
  level: 56                     ##当前电池电量
  scale: 100                    ##最大电池电量
  voltage: 4289                 #电池电压
  temperature: 307              #温度,这里是30.7°C
  technology: Li-poly           #电池技术,这里是锂电池

设计电池电量需要实用代码实现,充电信息可能只能使用Root获取

Use root Get Battery info

adb shell su -c cat /sys/class/power_supply/bms/uevent
adb shell su -c cat /sys/class/power_supply/battery/uevent
adb shell su -c cat /sys/class/power_supply/usb/uevent

Get Camera info

adb shell dumpsys media.camera #等待信息筛选

更多信息需要代码实现

Get Network info

adb shell ifconfig #可以使用
adb shell dumpsys wifi #大量无用信息,懒得筛选
adb shell dumpsys telecom #可能有相关信息
adb shell dumpsys telephony.registry #可能有相关信息

目前无进度,使用代码实现,使用root可以使用 iw命令()

Get Bluetooth info

adb shell dumpsys bluetooth_manager #一条命令基本足以

Get Audio info

adb shell dumpsys media.audio_policy

Get OtherDevice info

adb shell dumpsys input #输入设备
adb shell dumpsys sensorservice #传感器

Get System info

adb shell pm list features #系统所支持的特性

Get Build info

adb shell getprop ro.build.version.release        # Android 版本号
adb shell getprop ro.build.version.sdk            # API 版本
adb shell getprop ro.build.version.security_patch # 安全更新的日期
adb shell getprop ro.build.id                     # 构建的版本号
adb shell getprop ro.build.display.id             # 显示的构建版本号
adb shell getprop ro.build.fingerprint            # 构建的指纹
adb shell getprop ro.build.date                   # 构建时间
adb shell getprop ro.build.date.utc               # 以unix时间戳显示的构建时间
adb shell getprop ro.build.tags                   # 构建的标签
adb shell getprop gsm.version.baseband            # 获取基带信息
adb shell uname -a                                # 获取内核版本

Get permission info

adb shell pm list permission-groups #列出所有权限组
adb shell pm list permissions #列出所有权限

Get Users info

adb shell pm list users #列出所有用户
adb shell pm create-user #创建用户
adb shell pm remove-user #删除用户
adb shell pm get-max-users #获取最大用户数
adb shell setprop fw.max_users 10 #设置最大用户数为10 (需要root)
adb shell pm set-user-restriction #设置用户限制
adb shell pm get-max-running-users #获取系统可以运行的最大用户数
adb shell dumpsys activity users #活动中的用户信息

Get Other info

adb shell dumpsys media.player # 编解码器信息
adb shell dumpsys media.extractor # 编解码器信息
adb shell dumpsys account # 获取用户下已登陆账户信息 
adb shell dumpsys webviewupdate #WebView信息

Settings

当命令是setings get 为获取 put 为修改 使用 setprop 可以更改prop内容

adb shell getprop persist.sys.locale              # 设置的语言
adb shell getprop persist.sys.timezone            # 设置的时区
adb shell settings get secure system_locales      # 系统的语言地区信息(?)
adb shell settings get global device_name         # 用户定义的设备名称
adb shell settings get global zram_enabled        # 是否启用zram

Captive Protal

网络验证功能 修改后需要重启网络

adb shell settings get global captive_portal_detection_enabled  # 1为启用 0为禁用
adb shell settings get global captive_portal_use_https          # 是否启用https
adb shell settings get global captive_portal_server             # 验证服务地址
adb shell settings get global captive_portal_http_url
adb shell settings get global captive_portal_https_url

© Licensed under CC BY-NC-SA 4.0

回复

使用道具 举报

WangChong | 2023-11-22 19:53:25 | 显示全部楼层
学习了
回复

使用道具 举报

qwe2079282957 | 2023-11-22 21:12:23 | 显示全部楼层
太齐全了
回复

使用道具 举报

干簧管 | 2023-11-22 23:58:10 | 显示全部楼层
学习
回复

使用道具 举报

lazy | 2023-11-23 08:34:52 | 显示全部楼层
这个有点厉害了,在丰富社区知识层面呀。
回复 支持 反对

使用道具 举报

WT_0213 | 2023-11-23 08:40:06 | 显示全部楼层
这个有点厉害了
回复 支持 反对

使用道具 举报

干簧管 | 2023-11-23 11:37:11 | 显示全部楼层
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则