我正在寻找一种最简单的方法,可以从Android adb和Android ADK本身获取唯一的Android设备标识符。
例如,当我使用adb 'devices'命令时,连接设备的序列号会输出到屏幕上。但我尚未找到在Android sdk中获取相同序列号的方法。
我不关心使用哪种唯一标识符,只要能够轻松地从adb和android sdk中检索出来即可。对设备进行Root将不是一个选项。
我正在寻找一种最简单的方法,可以从Android adb和Android ADK本身获取唯一的Android设备标识符。
例如,当我使用adb 'devices'命令时,连接设备的序列号会输出到屏幕上。但我尚未找到在Android sdk中获取相同序列号的方法。
我不关心使用哪种唯一标识符,只要能够轻松地从adb和android sdk中检索出来即可。对设备进行Root将不是一个选项。
你可能想要使用ANDROID_ID。
以下是通过adb shell查询其值的方法:
settings get secure android_id
或通过查询设置内容提供程序:
content query --uri content://settings/secure/android_id --projection value
adb shell 'settings get secure android_id'
,意思是获取Android设备的安全ID。 - ccpizza使用adb就是那么简单。
adb devices -l
Android将与设备相关的所有信息存储在一个或多个SQLite数据库中。这些数据库可以在/data/data/文件夹中找到。要从adb读取这些数据库,您需要root权限。
Android ID可在/data/data/com.android.providers.settings/databases/settings.db中找到。
因此,要在adb中使用,请使用此命令。
adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select value from secure where name = 'android_id'"
你必须在adb中作为root用户运行adb。
adb shell
开始一个会话),并且发现与在主机命令行中使用adb
命令(例如adb shell pm list packages
)得到的结果不同。我需要确认shell会话中设备的序列号与adb devices
中的序列号是否相同。事实证明它们是相同的,所以我必须在其他地方寻找为什么我的命令无法正常工作的原因。 - undefinedadb devices
List of devices attached
YOGAA1BBB412 device
从之前的输出中,您需要设备ID号码(例如:YOGAA1BBB412
)。要获取设备ID,我使用以下adb命令:
adb -s YOGAA1BBB412 shell getprop | grep product.model
[ro.product.model]: [Lenovo YT3-X90F]
adb devices
默认会显示这个。感谢您的帮助。 - Joshua Pinter-l
标志来获得长输出。 - Joshua Pinter请运行以下命令,确保您的设备已连接。
adb devices -l
之后,您可以运行以下命令获取该设备的Android ID。
adb shell content query --uri content://settings/secure --where "name=\'android_id\'"
adb shell settings get secure android_id
这个命令返回ANDROID_ID,但它可能与代码级别接收到的ANDROID_ID不同。应用程序可以使用不同的min API级别,从adb shell获取的值可能不匹配。adb shell getprop net.hostname
在Android 8.0及以上版本中,由于Android隐私政策的更改,此属性返回null。因此,ANDROID_ID不再是唯一设备ID比较的可靠方法。使用 getprop net.hostname
命令,该命令包含一个Android唯一标识符,后面跟着关键字android-<64位十六进制字符串>
例如:
[net.hostname]: [android-a487e0560d669e4a]
id
。该命令基本上提供了关于手机的所有信息。adb -s <YOUR-DEVICE-ID> shell getprop