# Android Developer Settings

Меню разработчика в Android — это скрытая настройка, которая предоставляет доступ к широкому набору инструментов для тестирования и отладки приложений. Оно позволяет разработчикам и тестировщикам глубже взаимодействовать с системой, проверять производительность устройства, отлаживать ошибки и проверять различные сценарии работы приложения, что существенно облегчает и ускоряет процесс тестирования.

Начиная с Android 4.2, настройки разработчика по умолчанию скрыты. Чтобы их разблокировать, выполните следующие шаги:

* Перейдите в раздел "О телефоне".
* Найдите пункт "Номер сборки" (build number). У разных производителей путь к этому пункту может различаться.
* Быстро нажмите на него 7 раз. После этого появится сообщение, что вы стали разработчиком.
* Теперь пункт "Для разработчиков" будет доступен в корне настроек или в разделе "Расширенные настройки" (в зависимости от производителя).

В зависимости от производителя устройства и версии андроида, могу быть дополнительные пункты или какие-то отсутствовать.

**Общие (General)**:

* Память (**Memory**): отображение статистики памяти, такой как среднее использование памяти, производительность памяти, общий объем доступной памяти, средний объем используемой памяти, объем свободной памяти и объем памяти, используемый приложениями;
* Сделать отчет об ошибке (**Take bug report**): получите копию текущих файлов журнала устройства, чтобы поделиться с кем-нибудь. Когда вы получите уведомление о том, что отчет об ошибке готов, коснитесь его, чтобы поделиться им;
* Демонстрационный режим UI (**System UI demo mode**): упрощает создание чистых скриншотов за счет отображения стандартной предустановленной панели уведомлений, на которой не отображаются уведомления или предупреждения о низком заряде батареи. “Включить демонстрационный режим” (Enable Demo Mode) позволяет вам изменить внешний вид строки состояния с помощью команд демо-режима adb. Или вы можете использовать “Показать демонстрационный режим” (Show Demo Mode), чтобы скрыть уведомления и отобразить предварительно заданную строку состояния;
* Пароль резервного копирования рабочего стола (**Desktop backup password**): устанавливает пароль резервного копирования, чтобы вы могли использовать команды adb для резервного копирования и восстановления приложений и данных устройства под защитой паролем;
* Бодрствовать (**Stay awake**): экран остается включенным каждый раз, когда устройство подключено;
* Включить журнал отслеживания интерфейса хост-контроллера Bluetooth (HCI) (**Enable Bluetooth Host Controller Interface (HCI) snoop log**): фиксирует все пакеты HCI Bluetooth в файле, хранящемся в /sdcard/btsnoop\_hci.log. Вы можете получить пакеты, а затем использовать такую ​​программу, как Wireshark, для анализа и устранения неполадок с информацией.

**Отладка (Debugging)**: Параметры отладки предоставляют способы настройки отладки на устройстве и установления связи между устройством и вашим компьютером для разработки. Включите **отладку по USB**, чтобы ваше устройство Android могло связываться с вашей машиной разработки через Android Debug Bridge (adb). Параметр “Подождать отладчик” (Wait for Debugger) недоступен, пока вы не используете команду “Выбрать приложение для отладки” (Select debug app). Если вы включите “Ожидание отладчика” (Wait for Debugger), выбранное приложение будет ожидать подключения отладчика перед своим выполнением. Другие опции отладки включают следующее:

* Постоянно хранить данные журнала на устройстве (**Store logger data persistently on device**): выберите тип сообщений журнала, которые вы хотите постоянно хранить на устройстве. Параметры отключены, все, все, кроме радио, или только ядро;
* Выберите приложение фиктивного местоположения (**Select mock location app**): используйте этот параметр, чтобы подделать местоположение устройства по GPS. Чтобы использовать эту опцию, загрузите и установите приложение фиктивного местоположения GPS;
* Включить проверку атрибутов представления (**Enable view attribute inspection**): сохраняет информацию об атрибутах представления в переменной-члене mAttributes экземпляра View, чтобы ее можно было использовать для отладки. Вы можете получить доступ к информации об атрибутах через пользовательский интерфейс Layout Inspector (без его включения элемент «Атрибуты» недоступен);
* Включить уровни отладки графического процессора (**Enable GPU debug layers**): включите этот параметр, чтобы разрешить загрузку уровней проверки Vulkan из локального хранилища устройства;

**Сети (Networking)**: Параметры сети позволяют настраивать параметры Wi-Fi и DHCP. Нажмите “Выбрать конфигурацию USB” (Select USB Configuration), чтобы указать, как компьютер будет идентифицировать устройство. Вы можете настроить устройства только для зарядки, для передачи файлов (MTP), для передачи изображений (PTP), для использования вашего мобильного Интернета на ПК (RNDIS) или для передачи аудио или MIDI файлов. Нажмите “Версия Bluetooth AVRCP” (Bluetooth AVRCP version) и выберите версию профиля, которую вы хотите использовать для управления всем аудио / видео оборудованием Bluetooth, к которому у вашего устройства есть доступ. Чтобы точно настроить воспроизведение звука на устройстве есть следующие параметры: Bluetooth Audio Codec, Bluetooth Audio Sample Range, Bluetooth Audio Bits Per sample, Bluetooth Audio Channel Mode, Bluetooth Audio LDAC Codec. В следующем списке описаны другие способы настройки Wi-Fi и DHCP:

* Сертификация беспроводного дисплея (**Wireless display certification**): включает расширенные средства управления конфигурацией и настройки для сертификации беспроводного дисплея в соответствии со спецификациями, изложенными в Спецификации Wi-Fi дисплея Wi-Fi Alliance. Сертификация распространяется на Android 4.4 (уровень API 19) и выше;
* Включить подробное ведение журнала Wi-Fi (**Enable Wi-Fi verbose logging**): увеличивает уровень ведения журнала Wi-Fi для каждой беспроводной сети (SSID), к которой вы подключаетесь, в соответствии с относительной мощностью принимаемого сигнала (RSSI). Дополнительные сведения о журналах см. В разделе [Запись и просмотр журналов с помощью Logcat](https://developer.android.google.cn/studio/debug/am-logcat).
* Агрессивный переход от Wi-Fi к сотовой сети (**Aggressive Wi-Fi to cellular handover**): при низком уровне сигнала Wi-Fi более эффективно переключает соединение для передачи данных в сотовую сеть;

**Ввод (Input)**:

* Показывать касания (Show taps), нужно для отображения мест касаний экрана. Под вашим пальцем или стилусом появляется круг, который следует за вами при перемещении по экрану. Касание работает как указатель, когда вы записываете видео на свое устройство;
* Местоположение указателя (Pointer Location), нужно для отображения местоположения указателя (касания) на устройстве с помощью перекрестия. В верхней части экрана появится полоса для отслеживания координат перекрестия. Когда вы перемещаете указатель, координаты на полосе отслеживают положение перекрестия, а путь указателя отображается на экране;

**Рисование (Drawing)**: Параметры рисования предоставляют визуальные подсказки о пользовательском интерфейсе приложения и о том, как он работает. Включите параметр “Показать границы макета” (Show Layout Bounds), чтобы отображать границы, поля и другие конструкции пользовательского интерфейса вашего приложения на устройстве. Другие опции рисования включают следующее:

* Принудительное направление макета RTL (**Force RTL layout direction**): Принудительное направление макета экрана справа налево (RTL) или слева направо (по умолчанию);
* Масштаб анимации окна (**Window animation scale**): устанавливает скорость воспроизведения анимации окна, чтобы вы могли проверить ее производительность на разных скоростях. Чем меньше масштаб, тем выше скорость;
* Масштаб анимации перехода (**Transition animation scale**): устанавливает скорость воспроизведения анимации перехода, чтобы вы могли проверить ее производительность на разных скоростях. Чем меньше масштаб, тем выше скорость;
* Имитация вторичных дисплеев (**Simulate secondary displays**): создание вторичного дисплея в качестве наложения на устройстве. Это полезно при поддержке дополнительных дисплеев с помощью Presentation API. См. [Дополнительные дисплеи](https://developer.android.google.cn/about/versions/android-4.2#SecondaryDisplays);

**Аппаратное ускорение рендеринга (Hardware accelerated rendering)**: Параметры аппаратного ускорения рендеринга позволяют оптимизировать ваше приложение для целевых аппаратных платформ за счет использования аппаратных опций, таких как графический процессор, аппаратные уровни и сглаживание мультисэмплов (MSAA). Нажмите “Имитировать цветовое пространство” (Simulate color space), чтобы изменить цветовую схему всего пользовательского интерфейса устройства. Варианты относятся к типам дальтонизма. Возможны следующие варианты: Disabled (без моделируемой цветовой схемы), Monochromacy (черный, белый и серый), Deuteranomaly (красно-зеленый), Protanomaly (красно-зеленый) и Tritanomaly (сине-желтый). Протаномалия относится к красно-зеленой цветовой слепоте со слабостью в красных тонах, а дейтераномалия к красно-зеленой дальтонии со слабостью в зеленых тонах. Если вы делаете снимки экрана в смоделированном цветовом пространстве, они выглядят нормально, как если бы вы не меняли цветовую схему. Вот некоторые другие опции:

* Настроить рендеринг ГПУ (**Set GPU renderer**): измените графический движок Open GL по умолчанию на графический движок Open GL Skia;
* Принудительный рендеринг ГПУ (**Force GPU rendering**): заставляет приложения использовать графический процессор для 2D-рисования, если они были написаны без графического рендеринга по умолчанию;
* Показать обновления ГПУ view (**Show GPU view updates**): отображает любой экранный элемент, нарисованный графическим процессором;
* Отладка перерисовки ГПУ (**Debug GPU overdraw**): отображает цветовую кодировку на вашем устройстве, чтобы вы могли визуализировать, сколько раз один и тот же пиксель был отрисован в одном кадре. Визуализация показывает, где ваше приложение может выполнять больше рендеринга, чем необходимо. Дополнительные сведения см. В разделе [Визуализация перерисовки графического процессора](https://developer.android.google.cn/topic/performance/rendering/inspect-gpu-rendering#debug_overdraw);
* Отладка непрямоугольных операций обрезки (**Debug non-rectangular clip operations**): отключает область обрезки на холсте для создания необычных (непрямоугольных) областей холста. Обычно область обрезки предотвращает рисование чего-либо за пределами круглой области обрезки;
* Принудительное сглаживание (F**orce 4x MSAA**): включает мультисэмпловое сглаживание (MSAA) в приложениях Open GL ES 2.0;
* Отключить HW-оверлеи (**Disable HW overlays**): использование аппаратного оверлея позволяет каждому приложению, отображающему что-либо на экране, использовать меньше вычислительной мощности. Без наложения приложение разделяет видеопамять и должно постоянно проверять наличие коллизий и отсечения, чтобы отобразить правильное изображение. Проверка использует большую вычислительную мощность;

**Медиа (Media)**: Включите параметр “Отключить маршрутизацию звука USB” (Disable USB audio routing), чтобы отключить автоматическую маршрутизацию на внешние аудиоустройства, подключенные к компьютеру через порт USB. Автоматическая маршрутизация может мешать работе приложений, поддерживающих USB. В Android 11 и более поздних версиях, когда приложение без разрешения RECORD\_AUDIO использует UsbManager для запроса прямого доступа к USB-аудиоустройству с возможностью захвата звука (например, USB-гарнитуре), появляется предупреждающее сообщение, предлагающее пользователю подтвердить разрешение на использование устройства. Система игнорирует любой параметр «всегда использовать», поэтому пользователь должен подтверждать предупреждение и предоставлять разрешение каждый раз, когда приложение запрашивает доступ. Чтобы избежать такого поведения, ваше приложение должно запросить разрешение RECORD\_AUDIO;

**Мониторинг (Monitoring)**: Параметры мониторинга предоставляют визуальную информацию о производительности приложения, например о длинном потоке (long thread) и операциях с графическим процессором. Нажмите “Профилировать рендеринг графического процессора” (Profile GPU Rendering), а затем “На экране в виде полос” (On screen as bars), чтобы отобразить визуализацию профилирования графического процессора в виде полос. Для получения дополнительной информации см. [Profile GPU rendering](https://developer.android.google.cn/topic/performance/rendering/inspect-gpu-rendering#profile_rendering);

**Приложения (Apps)**: Параметры приложения помогают понять, как ваше приложение работает на целевом устройстве.

* Ограничение фоновых процессов (**Background process limit**), нужно чтобы установить количество процессов, которые могут работать в фоновом режиме одновременно.
* Сбросить ограничение в ShortcutManager (**Reset ShortcutManager rate-limiting**), нужно во время тестирования, чтобы фоновые приложения могли продолжать вызывать shortcut APIs, пока не будет достигнут предел;
* Не сохранять активити (**Don't keep activities**) – все активити, которые перестали отображаться будут выгружены, приложению нужно будет отрисовать их с нуля при повторном открытии. Например: переключиться с одного экрана на другой, затем нажать назад, или свернуть-развернуть приложение. Необходимо для тестирования сценариев корректного восстановления автивити (что пользовательские данные не пропали, или что нет крашей, если приложение забыло восстаносить какой-то элемент, который ожидался и др.)

Также что-то полезное возможно найдется в инженерном меню, чаще это комбинация _\*_#_\*_#4636#_\*#_\* в звонилке, на последних samsung _\*_#0#\*.

Источники:

* [Configure on-device developer options](https://developer.android.com/studio/debug/dev-options)
