Modern mobile development and deep customization of the operating system require a specialist to have an accurate understanding of exactly what hardware and software version he is working with. Often the standard About Phone screen is not enough because the developer needs specific build IDs, debug key hashes, or access to hidden system properties. Without this data, it is impossible to correctly configure the environment in Android Studio, test application compatibility, or diagnose low-level failures.
In the operating system Android there are many levels of access to information, from simple user settings to hidden engineering menus and the command line. It is important to distinguish which identifier you need: a unique device number (IMEI), a firmware build identifier (Build ID), or a network interface MAC address. An error in choosing a parameter can lead to incorrect operation of debugging scripts or the inability to authorize the device in the developer console.
In this material we will analyze in detail all the available ways to obtain critical technical information. We will touch on both standard methods through the graphical interface, as well as advanced techniques for using Android Debug Bridge and system commands. This guide will help you quickly find the necessary lines of code and parameters needed to work professionally with the platform.
Basic identifiers in the settings menu
The first and most obvious place where a developer can find primary information about the system is the standard settings menu. However, the path to it may differ depending on the manufacturer's shell. To gain access to the main data, you need to go to section Settings โ About phone (or Settings โ About Phone). This is where fundamental parameters are located, such as the device model, operating system version and security patch level.
Particular attention should be paid to the field, which is often hidden by default or requires additional actions to display complete technical information. In stock Android this is usually hidden behind several taps on the "Build number" field. It is important for the developer to understand that simply having an Android version (for example, 13 or 14) does not give the full picture. Build Number contains information about a specific firmware version, which is critical when testing bugs, since different builds of the same OS version may have different drivers.
Also in this section you can often find information about the status of the bootloader and the state of the device. If you work with custom ROMs or test applications with high access rights, you need to know whether Bootloaderis unlocked. In some interfaces, for example in Xiaomi MIUI or OnePlus OxygenOS, this information can be placed in a separate submenu or displayed only after developer mode is turned on.
โ ๏ธ Attention: Shell interfaces are constantly changing. If you cannot find the item "Build number" or "Kernel version" in the specified location, use the search in the settings by entering the keyword "Build" or "Assembly".
To quickly access hidden functions, you often need to activate developer mode. This is done by clicking repeatedly (usually 7 times) on the build number. After activation, a new section will appear in the settings menu System โ For developers, where key debugging tools are concentrated, including selecting a USB configuration and enabling USB debugging.
Technical details: Build ID and Fingerprints
For application developers, especially For those involved in analytics or crash reporting, this is a critical parameter. This is a unique string that uniquely identifies a specific operating system build. It is used by Google Play servers, Firebase Crashlytics and other services for statistics and distribution of updates. Build Fingerprint. This is a unique string that uniquely identifies a specific operating system build. It is used by Google Play servers, Firebase Crashlytics and other services for statistics and distribution of updates.
You can find this parameter not only in the menu, but also through system properties. The line fingerprint contains information about the brand, product, device, platform, OS version and build date. Understanding the structure of this line helps to quickly determine at what stage of testing the device is and whether it is modified.
Below is a table with a breakdown of the main identifiers that you can find in system logs and error reports:
| Parameter | Description | Where used |
|---|---|---|
ro.build.id |
Short assembly ID (for example, TP1A.220905.001) | Firmware version determination |
ro.build.fingerprint |
Full unique assembly fingerprint | Analytics, SafetyNet, anti-fraud |
ro.product.device |
Device codename | Search ROM, XDA, repositories |
ro.build.version.sdk |
API Level (numeric value of the Android version) | Application compatibility (minSdk) |
It is important to note that which device code name (for example guacamole for OnePlus 7 Pro or starlte for Samsung Galaxy S9) is the most accurate model identifier for searching for specific drivers and kernels in developer communities. A marketing name (for example, โGalaxy S9โ) often combines several different hardware revisions, which may have different code names.
Using ADB to obtain system information
For professional work with Android it is impossible to do without using Android Debug Bridge (ADB). This is a universal command line tool that allows you to communicate with the device directly, bypassing the GUI. By connecting the device to the computer and making sure that USB debugging is enabled, you have access to all system properties.
The main command to obtain all available information about the assembly is to query the build.prop or use the utility getprop. Executing the command adb shell getprop will display a huge list of all system properties. To avoid getting confused in the data stream, it is better to use filtering. For example, the command adb shell getprop | grep build will filter only lines related to the assembly.
Full list of useful ADB commands for the developer
adb shell dumpsys battery (battery status)|adb shell wm size (screen resolution)|adb shell input text"hello" (text input)|adb shell screencap -p /sdcard/screen.png (screenshot)
If you need to find out the specific path to application files or package data, use the command dumpsys. It provides detailed information about the system state, running services and windows. For example, adb shell dumpsys window windows will show which application is currently active and what its coordinates are on the screen, which is useful when debugging the UI.
To obtain a unique device identifier (Android ID), which is often used for licensing applications, you can run an SQL-like query through ADB:
adb shell settings get secure android_id
This ID is reset when the device is completely reset (Factory Reset), unlike IMEI, which is โhardwiredโ into the hardware. Developers need to clearly distinguish between these concepts, since using Android ID for persistent user IDs can be a mistake if the user decides to clear the data.
Hidden engineering menus and codes
Deep inside the Android system, especially on devices with processors MediaTek, Qualcomm or Exynos, there are special engineering hidden menu. They are designed for factory calibration and testing, but often contain information not available in the standard interface. They are accessed through a set of special USSD codes in the Phone application.
One โโof the most famous codes is ##4636##. Entering this combination opens the "Testing" menu, where you can see detailed battery information, usage statistics and, important for network application developers, Wi-Fi and cellular network information. Here you can see the MAC address, IP address, signal strength and connection type.
Other useful codes may vary depending on the manufacturer:
- ๐ฑ
*#06#โ displays the IMEI and serial number (works on almost all devices). - ๐ง
##3646633##โengineering menu for MediaTek (MTK) processors. - ๐ก
##197328640##โ service mode for Samsung devices. - ๐
##4636##โ testing menu (Stock Android, Xiaomi, Pixel).
โ ๏ธ Attention: Be extremely careful in engineering menus. Changing parameters in the Connectivity or Hardware Testing sections may result in loss of connection or incorrect operation of phone modules. Change only those values โโthat you are sure of.
Searching for MAC addresses and network identifiers
Developing network applications or setting up access filters by MAC address requires accurate knowledge of the physical address of the network interface. In modern versions of Android (starting from 6.0 and especially 10+), the privacy policy has become stricter, and applications are prohibited from obtaining the real Wi-Fi MAC address without special permissions. However, for a developer who has access to the device, this information is open.
You can find the MAC address in the menu Settings โ About phone โ Status or in Wi-Fi settings. But for a developer, a more convenient way is to use the terminal or ADB. The command ip link show or ifconfig (if it is in the system) will display a list of all interfaces and their addresses.
It is important to distinguish between the Wi-Fi MAC address and the Bluetooth MAC address, so as these are different physical modules. It is also worth considering the "MAC Address Randomization" feature, which is enabled by default in Android 10 and higher when connecting to Wi-Fi networks. This means that the device will use a random address for each connection, which can be confusing when testing server authorization.
When testing network functions, disable MAC address randomization in the specific Wi-Fi network settings by selecting the "Use device MAC address" option so that the server sees a stable ID.
To obtain the MAC address via ADB, use the following command, which will filter the desired interface:
adb shell ip addr show wlan0 | grep link/ether
The result will be a line containing the required address in the format XX:XX:XX:XX:XX:XX. This is the most reliable way to get up-to-date information, since the settings menus can sometimes hide details depending on the shell version.
Log analysis and debugging in real time
The final stage of searching for information about the system state is log analysis. Logcat is a powerful tool that records all system and application messages in real time. For a developer, this is the main source of information about what is happening "under the hood" right now.
To find specific error messages or system events, use filters. The command adb logcat outputs a stream of data that can be overwhelming. Add a tag or priority to cut out the excess. For example, adb logcat -s MyTag will show only messages with the tag "MyTag".
In the logs you can find information about what permissions the application requests, what Exceptions occur and how the system reacts to user actions. This is an indispensable tool for finding the reasons why the application crashes or is unstable.
โ๏ธ Checklist for preparing the device for debugging
When analyzing logs, pay attention to the timestamps. They allow you to synchronize user actions with system events. If you're looking for where to find information about a specific crash, sorting by when the error occurred is the most effective method.
Frequently Asked Questions (FAQ)
Where can I find an Android ID and how is it different from Google Advertising ID?
Android ID (settings get secure android_id) is a unique 64-bit number generated upon first boot devices. It is reset during Factory Reset. Google Advertising ID (GAID) is an identifier for advertising purposes that the user can reset at any time in Google settings. For application analytics, a bunch of IDs are often used, but Android ID is considered more stable to identify the device until the user decides to reset it.
How to find the exact processor model and amount of RAM through ADB?
Use the command adb shell cat /proc/cpuinfo to get information about the processor (model, cores, frequency). For memory information, use the command adb shell cat /proc/meminfo. You can also get a general summary with the command adb shell getprop | grep ro.hardware and ro.build.characteristics.
Why canโt I find the IMEI on a tablet without a SIM card?
IMEI (International Mobile Equipment Identity) is the identifier of the cellular communication module. If a device (tablet or smart watch) does not have a slot for a SIM card and a GSM/LTE module, then it cannot have an IMEI. In such devices, the main unique identifier is the Serial Number or Android ID.
Is it possible to change the Build Prop without root access?
On standard, non-rooted devices, direct editing of the file /system/build.prop is impossible due to access restrictions to the system partition. Changing these values โโis only possible by temporary methods (through magic packages in Magisk, if you have root) or on emulators. For the average user, changing these parameters unnecessarily is not recommended, as it may lead to a โbootlapโ (cyclic reboot).