Как посмотреть ошибки android

Приготовьте отладчик! Пишем приложение с ошибками, затем учимся их находить и дебажить

https://gbcdn.mrgcdn.ru/uploads/post/2735/og_image/ce05da5c8c8f97a3bf7713b7cbaf3802.png

Иногда в приложении встречаются ошибки, которые нельзя увидеть даже после запуска. Например, код компилируется, проект запускается, но результат далёк от желаемого: приложение падает или вдруг появляется какая-то ошибка (баг). В таких случаях приходится «запасаться логами», «брать в руки отладчик» и искать ошибки.

Часто процесс поиска и исправления бага состоит из трёх шагов:

  1. Воспроизведение ошибки — вы понимаете, какие действия нужно сделать в приложении, чтобы повторить ошибку.
  2. Поиск места ошибки — определяете класс и метод, в котором ошибка происходит.
  3. Исправление ошибки.

Если приложение не падает и чтение логов ничего не даёт, то найти точное место ошибки в коде помогает дебаггер (отладчик) — инструмент среды разработки.

    Чтобы посмотреть на логи и воспользоваться дебаггером, давайте напишем простое тестовое (и заведомо неправильное) приложение, которое даст нам все возможности для поиска ошибок.

    Это будет приложение, которое сравнивает два числа. Если числа равны, то будет выводиться результат «Равно», и наоборот. Начнём с простых шагов:

  1. Открываем Android Studio. 
  2. Создаём проект с шаблоном Empty Activity. 
  3. Выбираем язык Java, так как его, как правило, знают больше людей, чем Kotlin. 

Нам автоматически откроются две вкладки: activity_main.xml и MainActivity.java. Сначала нарисуем макет: просто замените всё, что есть в activity_main.xml, на код ниже:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">
 
  <EditText
     android:id="@+id/first_number_et"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:ems="10"
     android:gravity="center"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toTopOf="parent" />
 
  <EditText
     android:id="@+id/second_number_et"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:ems="10"
     android:gravity="center"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/first_number_et" />
 
  <Button
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Равно?"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/second_number_et" />
 
  <TextView
     android:id="@+id/answer_tv"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text=""
     android:textSize="32sp"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/button" />
</androidx.constraintlayout.widget.ConstraintLayout>

Можете запустить проект и посмотреть, что получилось:

Теперь оживим наше приложение. Скопируйте в MainActivity этот код:

public class MainActivity extends AppCompatActivity {
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 
     final Button button = (Button) findViewById(R.id.button);
     final EditText first = (EditText) findViewById(R.id.first_number_et);
     final EditText second = (EditText) findViewById(R.id.second_number_et);
     final TextView answer = (TextView) findViewById(R.id.answer_tv);
 
     button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Integer firstInt = Integer.parseInt(first.getText().toString());
           Integer secondInt = Integer.parseInt(second.getText().toString());
           if (firstInt == secondInt) {
              answer.setText("Равно");
           } else {
              answer.setText("Равно");
           }
        }
     });
  }
}

В этом коде всё просто: 

  1. Находим поля ввода, поле с текстом и кнопку.
  2. Вешаем на кнопку слушатель нажатий.
  3. По нажатию на кнопку получаем числа из полей ввода и сравниваем их.
  4. В зависимости от результата выводим «Равно» или «Не равно».

Запустим приложение и введём буквы вместо чисел:

Нажмём на кнопку, и приложение упадёт! Время читать логи. Открываем внизу слева вкладку «6: Logcat» и видим:

Читать логи просто: нужно найти красный текст и прочитать сообщение системы. В нашем случае это java.lang.NumberFormatException: For input string: «f». Указан тип ошибки NumberFormatException, который говорит, что возникла какая-то проблема с форматированием числа. И дополнение: For input string: «f». Введено “f”. Уже можно догадаться, что программа ждёт число, а мы передаём ей символ. Далее в красном тексте видно и ссылку на проблемную строку: at com.example.appdebugging.MainActivity$1.onClick(MainActivity.java:26). Проблема в методе onClick класса MainActivity, строка 24. Можно просто кликнуть по ссылке и перейти на указанную строку:

int firstInt = Integer.parseInt(first.getText().toString());

Конечно, метод parseInt может принимать только числовые значения, но никак не буквенные! Даже в его описании это сказано — и мы можем увидеть, какой тип ошибки этот метод выбрасывает (NumberFormatException).

Здесь мы привели один из примеров. Типов ошибок может быть огромное количество, все мы рассматривать не будем. Но все ошибки в Logcat’е указываются по похожему принципу: 

  • красный текст;
  • тип ошибки — в нашем случае это NumberFormatException;
  • пояснение — у нас это For input string: «f»;
  • ссылка на строку, на которой произошла ошибка — здесь видим MainActivity.java:26. 

Исправим эту ошибку и обезопасим себя от некорректного ввода. Добавим в наши поля ввода android:inputType=»number», а остальной код оставим без изменений:

...
<EditText
  android:id="@+id/first_number_et"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:ems="10"
  android:gravity="center"
  android:inputType="number"
  app:layout_constraintLeft_toLeftOf="parent"
  app:layout_constraintRight_toRightOf="parent"
  app:layout_constraintTop_toTopOf="parent" />
 
<EditText
  android:id="@+id/second_number_et"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:ems="10"
  android:gravity="center"
  android:inputType="number"
  app:layout_constraintLeft_toLeftOf="parent"
  app:layout_constraintRight_toRightOf="parent"
  app:layout_constraintTop_toBottomOf="@+id/first_number_et" />
...

    Теперь можем вводить только числа. Проверим, как работает равенство: введём одинаковые числа в оба поля. Всё в порядке:

На равенство проверили. Введём разные числа: 

Тоже равно. То есть приложение работает, ничего не падает, но результат не совсем тот, который требуется. Наверняка вы и без дебаггинга догадались, в чём ошибка, потому что приложение очень простое, всего несколько строк кода. Но такие же проблемы возникают в приложениях и на миллион строк. Поэтому пройдём по уже известным нам этапам дебаггинга:

  1. Воспроизведём ошибку: да, ошибка воспроизводится стабильно с любыми двумя разными числами.
  2. Подумаем, где может быть ошибка: наверняка там, где сравниваются числа. Туда и будем смотреть.
  3. Исправим ошибку: сначала найдём её с помощью дебаггера, а когда поймём, в чём проблема, — будем исправлять.

И здесь на помощь приходит отладчик. Для начала поставим точки останова сразу в трёх местах:

    Чтобы поставить или снять точку останова, достаточно кликнуть левой кнопкой мыши справа от номера строки или поставить курсор на нужную строку, а затем нажать CTRL+F8. Почему мы хотим остановить программу именно там? Чтобы посмотреть, правильные ли числа сравниваются, а затем определить, в какую ветку в нашем ветвлении заходит программа дальше. Запускаем программу с помощью сочетания клавиш SHIFT+F9 или нажимаем на кнопку с жучком:

  

    Появится дополнительное окно, в котором нужно выбрать ваш девайс и приложение:

Вы в режиме дебага. Обратите внимание на две вещи:

  1. Точки останова теперь помечены галочками. Это значит, что вы находитесь на экране, где стоят эти точки, и что дебаггер готов к работе.
  2. Открылось окно дебага внизу: вкладка «5: Debug». В нём будет отображаться необходимая вам информация.

    Введём неравные числа и нажмём кнопку «РАВНО?». Программа остановилась на первой точке:

Давайте разбираться:

  1. Сразу подсвечивается синим строка, где программа остановлена: в окне кода на 28-й строке и в левом окне отладчика (там даже можно увидеть, какой метод вызван, — onClick).
  2. В правом, основном окне отладчика, всё гораздо интереснее. Здесь можно увидеть инстансы наших вью (answer, first, second), в конце которых серым текстом даже отображаются их id. Но интереснее всего посмотреть на firstInt и secondInt. Там записаны значения, которые мы сейчас будем сравнивать.

Как видим, значения именно такие, какие мы и ввели. Значит, проблема не в получении чисел из полей. Давайте двигаться дальше — нам нужно посмотреть, в правильную ли ветку мы заходим. Для этого можно нажать F8 (перейти на следующую строку выполнения кода). А если следующая точка останова далеко или в другом классе, можно нажать F9 — программа просто возобновит работу и остановится на следующей точке. В интерфейсе эти кнопки находятся здесь:

Остановить дебаггер, если он больше не нужен, можно через CTRL+F2 или кнопку «Стоп»:

    В нашем случае неважно, какую кнопку нажимать (F9 или F8). Мы сразу переходим к следующей точке останова программы:

Ветка правильная, то есть логика программы верна, числа firstInt и secondInt не изменились. Зато мы сразу видим, что подпись некорректная! Вот в чём была ошибка. Исправим подпись и проверим программу ещё раз.

    Мы уже починили два бага: падение приложения с помощью логов и некорректную логику (с помощью отладчика). Хеппи пас (happy path) пройден. То есть основная функциональность при корректных данных работает. Но нам надо проверить не только хеппи пас — пользователь может ввести что угодно. И программа может нормально работать в большинстве случаев, но вести себя странно в специфических состояниях. Давайте введём числа побольше и посмотрим, что будет:

Не сработало — программа хочет сказать, что 1000 не равна 1000, но это абсурд. Запускаем приложение в режиме отладки. Точка останова уже есть. Смотрим в отладчик:

Числа одинаковые, что могло пойти не так? Обращаем внимание на тип переменной — Integer. Так вот в чём проблема! Это не примитивный тип данных, а ссылочный. Ссылочные типы нельзя сравнивать через ==, потому что будут сравниваться ссылки объектов, а не они сами. Но для Integer в Java есть нюанс: Integer может кешироваться до 127, и если мы вводим по единице в оба поля числа до 127, то фактически сравниваем просто int. А если вводим больше, то получаем два разных объекта. Адреса у объектов не совпадают, а именно так Java сравнивает их.

Есть два решения проблемы:

  1. Изменить тип Integer на примитив int.
  2. Сравнивать как объекты.

    Не рекомендуется менять тип этих полей в реальном приложении: числа могут приходить извне, и тип лучше оставлять прежним. Изменим то, как мы сравниваем числа:

if (firstInt.equals(secondInt)) {
  answer.setText("Равно");
} else {
  answer.setText("Не равно");
}

Проверяем:

Всё работает. Наконец-то! Хотя… Давайте посмотрим, что будет, если пользователь ничего не введёт, но нажмёт на кнопку? Приложение опять упало… Смотрим в логи:

Опять NumberFormatException, при этом строка пустая. Давайте поставим точку останова на 26-й строке и заглянем с помощью отладчика глубже.

Нажмём F8 — и перейдём в глубины операционной системы:

    Интересно! Давайте обернём код в try/catch и посмотрим ошибке в лицо. Если что, поправим приложение. Выделяем код внутри метода onClick() и нажимаем Ctrl+Alt+T:

Выбираем try / catch, среда разработки сама допишет код. Поставим точку останова. Получим:

Запускаем приложение и ловим ошибку:

Действительно, как и в логах, — NumberFormatException. Метод parseInt выбрасывает исключение, если в него передать пустую строку. Как обрабатывать такую проблему — решать исключительно вам. Два самых простых способа:

  1. Проверять получаемые строки first.getText().toString() и second.getText().toString() на пустые значения. И если хоть одно значение пустое — говорить об этом пользователю и не вызывать метод parseInt.
  2. Или использовать уже готовую конструкцию try / catch:

Теперь-то точно всё в порядке! Хотя профессиональным тестировщикам это приложение никто не отдавал: поищете ещё ошибки? :)

Время на прочтение
8 мин

Количество просмотров 57K

Краткая инструкция по чтению и разбору логов мобильных устройств на Android и iOS, а также необходимые инструменты для Windows и MacOS.

Статья подготовлена red_mad_robot и «Альфа-Банком» на основе доклада Senior QA red_mad_robot Ольги Никитиной «Инструменты для снятия логов с Android / iOS устройств. Чтение и разбор» на митапе «QАчественное общение» при поддержке red_mad_robot.

Уровни логирования и что они означают

Для начала разберёмся с логами. Это текстовые файлы, в которых записываются все действия пользователя. Например, какие кнопки он нажимает в приложении и как на это оно реагирует в ответ.

Записи в логах формируются в хронологическом порядке. Самая свежая — внизу.

Есть два вида логов:

  • Crash logs — файл, в котором хранятся записи только об ошибках экстренного завершения программы — по-простому, когда приложение крашнулось.

  • Logs — простые логи, или журнал событий. Это файл, в котором хранятся системные записи и ответы устройства на действие пользователя.

Логи на мобильных устройствах бывают нескольких уровней:

  • ERROR,

  • WARN,

  • INFO,

  • DEBUG,

  • VERBOSE.

Они представлены по уровню важности — от самого высокого к самому низкому, — и каждый следующий уровень включает в себя предыдущий. Например, VERBOSE содержит в себе логи всех остальных.

Примечание: уровни более применимы к логам на Android, потому что именно там такое разделение встречается чаще.

Рассмотрим подробнее каждый уровень.

Error (ERROR)

На этом уровне информируются ошибки работы системы.

Записи этого уровня требуют быстрого вмешательства разработчика — на такие ошибки нужно реагировать максимально быстро.

Как пример, такая запись в логе:

“ SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length ”

Это ошибка, в которой говорится, что строковый элемент span не может быть пустым.

Или вот:

“ [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008] ] ”

Эта системная ошибка сообщает, что происходит утечка памяти при взаимодействии с каким-то элементом или приложением.

Warning (WARN)

На этом уровне отображаются записи, сообщающие о каком-то неожиданном поведении, требующем внимания, или о ситуации, которая незнакома системе.

Например, сообщение ниже — запись из тестового приложения:

“ [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 16 failed: -2147483648 “

Мы пытаемся декодировать запись в какой-то формат, но его нет. Ошибка сообщает о неуспешной попытке настройки видеоплеера в нужном формате.

Ещё пример:

“ BroadcastQueue: Permission Denial: broadcasting Intent ”

Эта системная ошибка говорит о сбое в работе одного из виджетов на устройстве.

Info (INFO)

На этот уровень приходят записи информационного характера, например о работе системы.

Допустим, такое сообщение об уровне заряда батареи на устройстве:

“ APwBatteryMonitor: screen off start battery: 100 ”

А это сообщение говорит о том, что экран устройства был выключен:

“ HwBatteryService: intent = Intent { act=android.intent.action.SCREEN_OFF flg=0x58200010 } ” 

Ещё в логи этого уровня входят запросы от клиента на сервер: хедеры, тело запросов, которые отправляет клиент, и ответы сервера.

“ okhttp.OkHttpClient: <— 200 https://domainname/api/v1/smth/deals (1691ms)

okhttp.OkHttpClient: server: nginx/1.15.9

okhttp.OkHttpClient: date: Thu, 23 Sep 2021 19:41:17 GMT

okhttp.OkHttpClient: content-type: application/json

okhttp.OkHttpClient: vary: Accept-Encoding

okhttp.OkHttpClient: strict-transport-security: max-age=15724800; includeSubDomains

okhttp.OkHttpClient: {«key»:{«key»:value,»name»:»»},»key»:value,»key»:value}

okhttp.OkHttpClient: <— END HTTP ”

Такие записи могут помочь вам в понимании какого-то бага или в разборе задачи при условии, что вы не можете перехватить трафик или не знаете, какие запросы отправляются на бэкенд.

Debug (DEBUG)

Это уровень сообщений, в которых передаётся информация о процессах отладки или шагах работы крупных процессов.

Например, в записи ниже сказано, что пользователь нажимал на кнопку уменьшения или увеличения громкости:

“ MediaSessionService: dispatchVolumeKeyEvent ”

Сначала мы видим запись о самом факте нажатия на кнопку, далее оно расшифровывается подробнее:

{ action=ACTION_DOWN, keyCode=KEYCODE_VOLUME_UP }

Ещё пример: если ваше приложение использует сокет-сессию, то на уровне DEBUG мы можем увидеть, когда сессия начинается и заканчивается:

“ b$b: WebSocket connected ”

Verbose (VERBOSE)

Сообщения такого уровня уточняют или раскрывают действия.

Например, у нас есть служба управления окнами на экране приложения. И на уровне Verbose мы можем увидеть подробности её работы.

Открытие окна:

WindowManager: addWindow

Закрытие окна:

WindowManager: Removing Window

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

GnssLocationProvider: reportLocation Location […] 

А меняя звук на устройстве, мы увидим, как растёт или падает значение:

AudioManager: getStreamVolume  streamType: 3 volume: 10

Каждое нажатие, то есть изменение звука, будет отражаться новым сообщением.

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

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

Инструменты для снятия логов: Android

Расскажем о трёх способах.

Первый  Logcat в составе Android Studio, самый известный и широко используемый.

Для снятия логов нам необходимо перевести устройство в режим разработчика/отладки. Для этого нужно:

  • найти в настройках номер нашего билда или ОС (в зависимости от устройства),

  • около десяти раз нажать на эту информацию,

  • при появлении сообщения о том, не хотим ли мы перевести устройство в режим разработчика, нажать «Ок».

Примечание: алгоритм может отличаться в зависимости от производителя устройства, потому что у многих из них свои надстройки на ОС Android.

Дальше подключаем устройство по USB к ПК и устанавливаем Android Studio.
Следующие шаги на скрине:

  1. Выбираем вкладку Logcat (переходим к сообщениям в реальном времени).

  2. В окошке выбираем телефон, с которого снимаем логи.

  3. На этой вкладке выбираем логи определённого приложения. Если нужно снять вообще все логи со всех приложений и системы, эту вкладку стоит не трогать. Рядом с ней можно выбрать уровень логирования (вкладка Verbose на скрине).

  4. В поле поиска, где мы можем фильтровать выдачу, разрешено писать что угодно — от названия пакета до частей вроде fatal.

На скрине видно логи с подключенного устройства.

Второй способ — выгрузка логов с самого устройства. Кроме режима разработчика нам нужно подключить устройство к ПК через USB и установить ADB — Android Debug Bridge.

Открываем терминал и пишем две команды.

Первая — adb devices — показывает подключённые устройства, которые видит ADB. В терминале выглядит так:

Название устройства — 7BKDU18504001505

Название устройства — 7BKDU18504001505

Вводим вторую команду — adb -s название устройства logcat, — которая запускает утилиту Logcat для конкретного устройства. В терминале в реальном времени будут поступать логи.

Как их читать?

  1. В первом столбце — дата и время поступления записи.

  2. Во втором — обозначения уровней логирования. Например, D — это Debug.

  3. В третьем показываются названия инструмента, утилиты, пакета, от которых поступает сообщение, а также расшифровка того, что вообще происходит.

Третий инструмент — SDK Platform Tools. Процесс его установки практически аналогичен предыдущим двум:

  • переводим телефон в режим разработчика,

  • подключаем к ПК по USB,

  • скачиваем на ПК папку SDK PT (под свою ОС),

  • открываем папку SDK PT в терминале.

Теперь пишем команду ./adb logcat –v threadtime > ./android-debug.log.

В терминале это выглядит так:

Прерываем выполнение команды (например, на Mac это Control+C). Лог добавляется в папку.

Открываем:

В первом столбце — дата и время, во втором — уровни логов, в третьем — указание на то, от какой части системы поступают данные, лог и его расшифровка/подробности

В первом столбце — дата и время, во втором — уровни логов, в третьем — указание на то, от какой части системы поступают данные, лог и его расшифровка/подробности

Очень похоже на предыдущий терминал, но файл обновляется, пока в терминале действует команда.

Инструменты снятия логов: iOS

В первую очередь нас интересует xCode — интегрированная среда разработки (IDE), в которую встроен нужный нам инструмент Simulator.

Как использовать инструмент:

  1. Устанавливаем xCode.

  2. В системной строке нажимаем xCode → Open Developer Tools → Simulator.

  3. Устанавливаем приложение.

  4. В самом симуляторе выбираем Debug → Open System Log.

Мы будем видеть логи в реальном времени:

Подобное оформление логов мы уже где-то видели, но построение информации в выдаче немного отличается. Есть дата и время (1) и данные (2) о том, с какого устройства снята информация: имя компьютера, элемент системы, с которого пришло сообщение, и его расшифровка.

Но первый способ работает только с симуляторами. Если необходимо снимать логи с реального устройства, в этом может помочь раздел Devices and Simulators.

Записи можно отфильтровать по конкретному процессу (вашему приложению):

  1. Устанавливаем xCode.

  2. Подключаем устройство к ПК по USB.

  3. Открываем xCode → Windows → Devices and Simulators.

Дальше нажимаем у устройства Open Console и видим панель с названием устройства, информацией о модели и ОС:

1 — все приложения, которые установлены на устройстве, 2 — версия устройства, 3 — пакет приложения устройства

1 — все приложения, которые установлены на устройстве, 2 — версия устройства, 3 — пакет приложения устройства

Логи поступают в реальном времени, но их удобно отслеживать:

У нас есть три столбца:

  1. «Время» — время поступления сообщения.

  2. «Процесс» — с какой части системы/приложения пришло сообщение.

  3. «Сообщение» — описание события, сервисная информация.

В инструменте есть поиск для фильтрации выдачи. Ещё есть полезная кнопка «Приостановить» — она останавливает поток логов.

А вот утилита iMazing поможет снимать iOS-логи для тех, у кого установлен Windows. Приложение платное, но часть функциональности доступна бесплатно. Например, за снятие логов устройства платить не нужно.

В меню выбираем «Показать консоль устройства». В открывшемся окне приходят записи логов в реальном времени со всего устройства.

1 — дата и время получения сообщения; 2 — имя телефона, информация, с какой части устройства пришло сообщение, и описание; 3 — поисковая строка для фильтрации выдачи

1 — дата и время получения сообщения; 2 — имя телефона, информация, с какой части устройства пришло сообщение, и описание; 3 — поисковая строка для фильтрации выдачи

Ещё одно важное достоинство iMazing — возможность сохранять логи (разумеется, по кнопке «Сохранить»).


Статья подготовлена red_mad_robot и «Альфа-Банком» на основе доклада Senior QA red_mad_robot Ольги Никитиной «Инструменты для снятия логов с Android / iOS устройств. Чтение и разбор» на митапе «QАчественное общение» при поддержке red_mad_robot.

Давайте подробнее рассмотрим как проверить Android на ошибки в работе самой операционной системы, а так же внутренних модулей. Статья является логичным продолжением Как проверить б/у телефон Android перед покупкой.

Данная статья подходит для всех брендов, выпускающих телефоны на Android 13/12/11/10: Samsung, Xiaomi, Redmi, Poco, Huawei, Honor, Lenovo, Tecno, Realme и др. Мы не несем ответственности за ваши действия.

Внимание! Вы можете задать свой вопрос специалисту в конце статьи.

Программы для проверки Андроид гаджетов на ошибки и проблемы

Современные мобильные устройства имеют много датчиков и технологий. Если из них хоть одна функционирует неправильно, то от планшета или смартфона портится все впечатления.

Для проверки правильного функционирования устройства Андроид существуют приложения. Даже если проблемы с Андроид девайсом не наблюдаются, все равно стоит проверить, действительно ли функционирует он исправно.

Google Device Assist

Как проверить Android на ошибки

Увеличить

Вначале следует использовать утилиту Google Device Assist из Гугл Плей Сторе. Для смартфонов Moto или Nexus скачать и инсталлировать apk файл необходимо вручную. Софт Google Device Assist не только проверяет гаджет на возможные проблемы. Приложение дает новичкам рекомендации и советы по использованию устройства.

Test Your Android

Как проверить Android на ошибки

Увеличить

Из названия понятно, что утилита тестирует девайс на системе Андроид. Test Your Android отличается красочным интерфейсом и возможностью тестировать почти все системы устройства, начиная сенсорным экраном и заканчивая бортовым компасом. Еще можно перейти в раздел «Информация» (Information) для получения подробной информации о гаджете.

Как проверить Android на ошибкиНужна помощь?

Не знаешь как решить проблему в работе своего гаджета и нужен совет специалиста? На вопросы отвечает Алексей, мастер по ремонту смартфонов и планшетов в сервисном центре.Напиши мне »

Phone Doctor Plus

Как проверить Android на ошибки

Увеличить

Для вашего гаджета утилита станет настоящим доктором. Phone Doctor Plus осуществляет анализ всех параметров системы. Проверять можно состояние аппаратных средств, таких как батарея или центральный процессор. Еще утилита дает несколько хороших советов, как правильно работать с девайсом, чтобы повысить время функционирования батареи.

Читайте На Android Play Market ошибка 403

Device Test

Как проверить Android на ошибки

Увеличить

Программа отображает довольно подробную информацию про GPS и акселерометр. Софт зеленой галочкой помечает оборудованный в гаджет датчик, а красным крестом отмечает, если данная особенность не предоставляется.

Fix Dead Pixels

Как проверить Android на ошибки

Увеличить

Если на дисплее планшета или смартфона наблюдаются проблемы с пикселями, то можно использовать утилиту Fix Dead Pixels для их решения. Программа использует разные цвета фона, чтобы идентифицировать проблемные пиксели. Еще утилита обновляет проблемные места экрана и быстро проверяет весь экран.

Wifi Anаlyzer

При помощи приложения можно проверить наличие и работоспособность модуля Wi-Fi. Выполняется всесторонний тест, все проверяется досконально. Wifi Analyzer определяет надежность всех компонентов данного интерфейса на гаджете, их чувствительность, настройки, избирательность в выборе сигнала.

Elixir 2

Утилита подойдет для пользователей, которых больше интересует «железо». Elixir 2 является целой исследовательской лабораторией по проверке физических компонентов гаджета.

Наиболее частые ошибки

Нехватка памяти

Ошибкой это нельзя назвать. Это ограничение возможностей гаджета. На старых и новых устройствах внутренняя память может резко закончиться. Проблема решается очень просто.

При использовании таких приложений, как VK, Instagram, появляется кэш, который они в большом количестве быстро накапливают. Для решения проблемы выполняем инструкцию:

  • Переходим в «Настройки», выбираем раздел «Приложения».
  • Зачатую вверху отображаются приложения, которые занимают самое большое количество памяти. Нажимаем на них.
  • Выбираем раздел «Очистить кэш».

Как проверить Android на ошибки

Увеличить

Подобная очистка позволяет освободить несколько гигабайт места. Еще можно в приложении полностью стереть данные, но впоследствии придется авторизоваться заново.

Из-за переполненной памяти возникают ошибки с разными номерами. К примеру, ошибка 919, которая означает, что из-за недостатка места приложение не может включиться.

Читайте Как увеличить память на Android

На некоторых гаджетах часть приложений можно перенести на карту памяти. Таким образом будет освобождено еще больше места. Это выполняется в том же разделе в настройках. Лучше чаще следить за наличием на устройстве свободного места, чтобы оно без тормозов и исправно работало.

Ошибка аутентификации Wi-Fi

Еще одна очень распространенная неполадка на Андроид. Причина проблемы редко лежит в девайсе. Часто ее причиной становится роутер, который с вашим планшетом или смартфоном не совместим. Проблема решается быстро.

Первый метод заключается в проверке правильности введенного пароля. Процесс аутентификации состоит в проверке ключа безопасности. Необходимо попробовать удалить проблемную сеть, а потом снова ввести пароль.

Читайте Android не подключается к WiFi

На Android телефоне постоянно выскакивает ошибка приложения

Есть с паролем все нормально, а сеть Wi-Fi не хочет подключаться, то следует проверить настройки роутера. Возможно, что его тип шифрования данных более старый, чем используемый на устройстве Андроид, или гаджет не поддерживает какой-то сетевой стандарт.

Этот метод заключается в проверке настроек роутера:

  • Запускаем браузер. Вводим в адресной строке «192.168.0.1» или «192.168.1.1».
  • В отобразившемся окне следует ввести логин и пароль. Зачастую это admin и admin. Если другие настройки, то вводим их.
  • Теперь находим настройки безопасность Wi-Fi. Там нужно задать смешанный тип шифрования или установить значение «WPA-PSK/WPA2-PSK2 mixed» сетевой аутентификации.

После выполнения инструкции должны исчезнуть все проблемы с Wi-Fi.

Ошибка синтаксиса

Данная ошибка состоит в том, что файл, устанавливающий определенную программу, неправильный или неправильно был запущен. Еще сбой мог произойти при установке, что приводит к ошибке синтаксиса.

Это довольно легко исправить. Следует убедиться, что скачанный файл имеет apk формат. Файлы именно с таким форматом являются на Андроид инсталляторами. Затем этот скачанный файл удаляем и загружаем заново, после чего переустанавливаем. Еще можно попробовать закачать файл с иного сайта, чтобы убрать ошибку.

Ошибка загрузки

Происходят такие ошибки на старых гаджетах, на новых подобная проблема уже не проявляется. Проблема заключается в сбое стандартного менеджера загрузок, из-за чего трудно становится что-либо загрузить из интернета.

Для исправления ошибки нужно инсталлировать новый менеджер загрузок. Для этих целей отлично подойдет ES Проводник. Встроенный в него менеджер загрузок имеет хороший функционал.

Android-клавиатура AOSP

Данная клавиатура не самая лучшая. Еще она на некоторых прошивках не очень хорошо оптимизирована, из-за чего ошибки и происходят. Решить их просто:

  • Отключаем голосовой ввод в настройках клавиатуры.
  • Выполняем сброс настроек, стираем данные приложения и кэш.
  • Скачиваем с Гугл Плей Маркет любую другую клавиатуру.

Ошибки с аккаунтами Google

Такие ошибки бывают двух категорий: аккаунт не хочет добавляться или не хочет синхронизироваться. Первая ошибка постепенно уходит в прошлое, а вторая присутствует на старых и новых гаджетах. Исправить ошибки можно по следующей инструкции:

  • Проверяем стабильность и качество подключения к интернету. Wi-Fi или мобильная сеть должны нормально функционировать, иначе в них может состоять причина.
  • Если уже добавлен аккаунт, но синхронизации нет, достаточно его просто отключить. Затем перезагружаем гаджет и заходим снова.
  • Когда аккаунт отказывается подключаться, следует проверить правильность логина и пароля.
  • Отключаем в настройках аккаунта двухэтапную синхронизацию.
  • Включаем автоматическую синхронизацию и передачу информации в фоновом режиме. После этого перезагружаем устройство.

Как проверить Android на ошибки

Увеличить

Читайте На Android не включается синхронизация аккаунта Google

Вирус Netalpha

Это новая проблема для пользователей системы Андроид. Вирус Netalpha затрудняет работу с гаджетом и не дает удалить себя. Проблема очень серьезная, так как существует только два решения, из которых одно весьма радикальное:

  • Сбрасываем систему к заводским параметрам. Как это выполнить, рассмотрим ниже.
  • Если имеются рут права, то можно скачать Lucky Partner для удаления злополучной программы.

Читайте Как проверить Android на вирусы через компьютер (ПК)

Android.process.acore

Выделяют следующие причины ошибки:

  • Остановлена работа какой-то системной программы.
  • Отсутствуют необходимые системные файлы.
  • На гаджете имеется сразу несколько приложений, выполняющие почти идентичные функции. С системными приложениями они некорректно синхронизируются.

Как проверить Android на ошибки

Увеличить

Трудности в решении проблемы зависят от причин ее появления. Зачастую она решается путем удаления через настройки девайса всех контактов. Если перед этим вы все контакты синхронизируете с Гугл, то ничего вообще не потеряете.

Существует метод по сбросу настроек всех приложений при помощи соответствующего раздела меню. Это довольно часто избавляет от проблемы, причем никакую информацию вы не потеряете. Если на гаджете установлены приложения для оптимизации работы Wi-Fi, то следует их удалить. Часто именно в них кроется причина.

Неверный пакетный файл

Данная ошибка часто появляется во время обновления каких-либо приложений. Если проблема случилась при обновлении, то требуется у этого приложения очистить кэш.

Еще можно попробовать скачать вручную apk файл программы и заново ее установить. Если ничего не помогает, то удаляем Гугл аккаунт, перезагружаем девайс и добавляем аккаунт заново.

Читайте Android «Ошибка при синтаксическом анализе пакета»

Способ решения любых ошибок

Метод позволяет исправить любую неполадку. К нему прибегать нужно в последнюю очередь. Способ заключается в возвращении гаджета Андроид к заводским настройкам. Выполнение полной перезагрузки системы удалит всю пользовательскую информацию, поэтому наиболее важные файлы следует предварительно сохранить в облачных сервисах или на карте памяти.

Выполняем такие шаги:

  • Открываем настройки.
  • Выбираем раздел «Сброс и восстановление». На разных гаджетах он по-разному называется и располагается или в пункте «Система», или в меню настроек.
  • Нажимаем «Сброс».

Как проверить Android на ошибки

Увеличить

После этого устройство Андроид будет возвращено к заводским параметрам, а все проблемы исчезнут.

Мастер Николай

АвторМастер Николай

Инженер по ремонту мобильной и компьютерной техники в специализированном сервисном центре, г. Москва. Непрерывный опыт работы с 2010 года.
Есть вопросы? Задавайте в комментариях к статье. Отвечать стараюсь максимально быстро вам на указанную почту. Каждый случай индивидуален и поэтому очень важно, чтобы вы максимально расписали свою проблему и какая у вас модель устройства.

Android является самой распространенной ОС смартфонов. Однако ни одно программное средство не застраховано от ошибок. Предлагаем ознакомиться с ПО для проверки корректности работы ОС, а также порядком решения самых распространенных проблем.

ошибки на андроиде

Чем проверить андроид-устройства на ошибки

У современных мобильных девайсов много различных датчиков, которые соединяются в сложную систему. Если хоть какая-то часть начинает функционировать некорректно, то гаджет, соответственно, тоже работает не так, как нужно.

Проверку функционирования устройств на операционной системе Андроид можно осуществлять с помощью специально приложений.

Их рекомендуется периодически запускать вне зависимости от наличия или отсутствия явных дефектов. Ниже мы предлагаем список самых популярных программ, которые помогут проверить и выявить неисправности на вашем телефоне.

Assistant for Android

Assistant for Android – наипростейшая и полезная программа для оптимизации вашего Андроид смартфона. Вам нужно скачать в Play Маркет последнюю версию и запустить. Данная программа не только проверит устройство на вероятные ошибки, но и даст новичкам ряд полезных рекомендаций по использованию. Как видно ниже в интерфейсе можно выполнять ряд задач:

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

Интерфейс Assistant for Android

Test Your Android

Название говорит о том, что приложение создано для тестирования девайса с операционной системой Android. Имеет красивый интерфейс и сможет провести проверку практически всех систем устройства – от сенсора экрана до компаса. Также есть раздел, где доступны для просмотра данные об устройстве.

Test Your Android

Phone Doctor Plus

Эта программа полностью анализирует всю систему, включая каждый параметр. С ее помощью можно протестировать аппаратные средства – батарею, центральный процессор. Также утилита сможет дать советы по правильному использованию девайса, чтобы батарея смогла прослужить дольше.

Phone Doctor Plus

Device Test

Приложение Device Test для отображения подробной информации по акселерометру и GPS. Зеленая галочка пометит датчик, если он есть в гаджете. При отсутствии особенности будет отметка в виде красного креста.

Device Test

Fix Dead Pixels

Утилита поможет решить проблему с пикселями на дисплее. При запуске Fix Dead Pixels используются различные фоновые цвета, которые помогут оперативно найти проблемные пиксели. Еще приложение сможет проверить экран и обновить места с погрешностями.

Fix Dead Pixels

Wifi Anаlyzer

Программа Wifi Anаlyzer поможет проверить, как работает модуль Wi-Fi. Она запускает всесторонние тесты, поэтому проверка происходит тщательно. Изучается надежность каждого компонента этого интерфейса, а также чувствительность и все возможные настройки.

Wifi Anаlyzer

Elixir 2

ПО Elixir 2 разработано для проверки «железа». Это целая исследовательская лаборатория, созданная для проверки физических составляющих устройства.

Elixir 2

Самые распространенные ошибки

В связи с широким использованием ОС Андроид на смартфонах различных брендов сформировался список часто возникающих сбоев. Мы подготовили краткий обзор проблем и способов их решения.

Нехватка памяти

К ошибкам не относится, но является главной причиной их появления. Проблема возникает на смартфонах и планшетах вне зависимости от года их выпуска, бренда и модели. Если мало памяти, может появиться ошибка 919 при попытке запуска программы.

Имейте в виду, что мы говорим о нехватке оперативной памяти. Её можно освободить закрыв ненужные приложения запущенные в текущий момент. А чистка кеша очистит внутреннюю память на смартфоне или SD карте.

Нехватка возникает из-за переполненного кэша в результате использования социальных сетей. Например при просмотре картинок они могу сохраняться как в кеше так и загружаться на телефон. Для освобождения места в этом случае нужно:

  • Из «Настроек» перейти в «Приложения».
  • Зайти в программу.
  • В настройках выбрать «Очистить кэш».

Очистка кеша на аднроиде

Для справки:

  1. Во многих версиях ОС сверху располагаются утилиты, занимающие наибольший объем памяти.
  2. При выполнении этой процедуры для всех приложений можно освободить до нескольких Гб памяти.

Если места все равно не хватает, получить еще немного свободных Мб можно при выборе вместо «Очистить кэш» пункта «Стереть данные». Минус способа – необходимость повторной идентификации.

При наличии карты можно перенести часть ПО на нее.

Ошибка аутентификации при попытке подключения к Wi-Fi

Возникает из-за несовместимости роутера, реже заключается в неисправности гаджета. В первом случае нужно сначала проверить корректность вводимого пароля. Если ошибка не исчезла, проблема может крыться в проверке ключа безопасности. Поможет удаление сети из списка Wi-Fi соединений и повторное создание подключения с корректным ключом.

удаление сети из списка Wi-Fi соединений на андроиде

Ошибка беспроводной сети Wi-Fi

При корректном пароле отсутствие подключения к сети Wi-Fi можно устранить путем обновления настроек роутера. В первую очередь стоит уделить внимание типу шифрования данных. Он должен соответствовать используемому девайсом. Однако устройство может не поддерживать определенный сетевой стандарт.

Для проверки настроек роутера:

  1. В браузере в адресной строке «192.168.0.1» либо «192.168.1.1». Это путь к роутеру.
  2. Ввести логин с паролем. По умолчанию выставляют «admin» в обоих полях.
  3. Переходим в «Настройки безопасности Wi-Fi».
  4. «Тип шифрования» выставить «Смешанный», либо для «Сетевой аутентификации» — «WPA-PSK/WPA2-PSK2 mixed».
  5. Сохранить изменения.

Настройки безопасности Wi-Fi роутера

Ошибка синтаксиса

Причина – файл, отвечающий за установку программы, некорректный либо неправильно запущен. Также проблема может быть вызвана сбоем в процессе установки утилиты.

Для исправления:

  • Скачать инсталлятор. Файл должен иметь формат apk.
  • Установить повторно программу.

Если проблема сохранилась, скачайте инсталлятор с другого сайта. Не исключена возможность загрузки на сайт установочного файла с ошибкой администратором. Самое лучшее решение – загружать официальные версии из Play Маркет, Gett Apps и других источников. Там выпускают обновления для программ и ошибки синтаксиса встречаются реже.

Ошибка загрузки

Типичная ошибка для старых моделей смартфонов, возникающая по причине сбоя менеджера загрузок в стандартной сборке файлового менеджера. Порядок действий:

  • Удалить старый файловый менеджер.
  • Загрузить установочный файл.
  • Установить новый менеджер.

Рекомендуем выбрать ES или Mi Проводник – утилиту с хорошим функционалом, простым интерфейсом.

Android-клавиатура AOSP

Вид клавиатуры не славится хорошей работой. В старых версиях прошивок клавиатура плохо оптимизирована. Для устранения ошибок:

  • Зайти в «Клавиатуры» и дальше в «Настройки».
  • Отключить голосовой ввод.
  • Зайти в приложение через «Настройки» и «Приложения».
  • Выбрать «Стереть кэш» и «Удалить данные».
  • Зайти в Play Market.
  • Скачать иной вид клавиатуры. Можно самый популярный вариант – Microsoft SwiftKey
  • Установить ее.

изменение текущей клавиатуры на андроиде

Ошибки с аккаунтами Google

Делятся на 2 категории. Первая – отсутствие возможности добавления аккаунта, вторая – ошибка синхронизации. Если в новых моделях первая проблема практически не возникает, то вторая встречается в гаджетах вне зависимости от года выпуска.

Порядок исправления:

  • Подключиться к интернету. Подключение должно быть стабильным и качественным.
  • При несинхронизации нужно отключить аккаунт, перезагрузить устройство и зайти снова.
  • При отказе подключения проверить корректность логина и пароля.
  • Отключить для аккаунта 2-этапную синхронизацию.
  • Выставить в настройках аккаунта автоматическую синхронизацию. Выставить передачу данных в фоновом режиме. Выполнить перезагрузку смартфона.

Вирус Netalpha

Удалить вирус не получается. Вредоносная программа снижает производительность и усложняет работу смартфона. Для устранения проблемы:

  • Выполнить сброс до заводских настроек.
  • При наличии root-прав скачать и установить Lucky Partner.

Android.process.acore

Может возникнуть из-за:

  1. Остановки одной из системных программ.
  2. Отсутствии на устройстве одного из требуемых для корректной работы ОС системного файла.
  3. Наличие нескольких программ с аналогичным функционалом, которые с системными утилитами неправильно синхронизируются.

Ошибка устраняется в зависимости от установления причины ее возникновения. Есть ряд способов решения проблемы:

  1. Синхронизация контактов с Google. Удаление через «Настройки» всех номеров. Восстановление через Google списка контактов.
  2. Сброс настроек приложений.
  3. Удаление утилит, направленных на улучшение работы Wi-Fi.

Неверный пакетный файл

Возникает после проведения обновления приложения. Однако не редко появляется непосредственно при установке. Тогда нужно через «Настройки» данного приложения «Очистить кэш» и заново запустить процесс.

Очистка кеша на аднроиде

Другой метод – повторная установка приложения. Для этого потребуется самостоятельно скачать инсталляционный файл.

Третий метод – удаление google-аккаунта. После этого нужно перезагрузить телефон и повторно добавить аккаунт.

Способ решения любых ошибок

Радикальный метод, позволяющий устранить практически любой сбой. Использовать стоит только в крайних случаях, поскольку в процессе сброса до заводских настроек вся информация владельца будет удалена.

Порядок действий:

  • Зайти в «настройки» гаджета.
  • Перейти в «Сброс и восстановление».

В зависимости от модели название раздела может звучать по-другому, также разнится и его местонахождение. Например, в некоторых устройствах функция доступна из меню «Система».

  • Нажать кнопку «Сброс».
  • Дождаться окончания процесса.
  • Справка
  • Центр правил

В Play Console можно посмотреть информацию о сбоях и ошибках ANR в ваших приложениях. Она поступает с устройств Android, владельцы которых разрешили автоматически отправлять данные об использовании и диагностике.

Как найти данные

  1. Откройте Play Console.
  2. Выберите приложение.
  3. В меню слева выберите Качество > Android Vitals > Сбои и ошибки ANR.
  4. Используйте фильтры в центре экрана для поиска и диагностики неполадок. Чтобы получить подробную информацию о сбое или ошибке ANR, нажмите Подробнее () рядом с нужной строкой.

Примечание. Если во время тестирования приложения перед запуском была обнаружена проблема, то после выбора кластера будет показан отдельный раздел. В нем вы увидите информацию об устройстве и данные logcat с него, подробные сведения о сбое и видео с ошибкой. Это поможет вам устранить неполадку.

Сбои

На этой странице представлены сбои, которые влияют на показатель «Доля сбоев». Сбои группируются по кластерам, чтобы легче было выявлять общие причины.

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

Чтобы улучшить показатель доли сбоев, в первую очередь устраняйте проблемы, затронувшие наибольшее число пользователей.

Рекомендации по диагностике и устранению сбоев можно найти на сайте для разработчиков Android.

Примечание. Доля сбоев в активном режиме – один из основных показателей Android Vitals, то есть важнейших технических показателей. Он влияет на параметры видимости приложения в Google Play.

Сбои, связанные с SDK

Иногда неполадки в приложении могут быть вызваны работой SDK. В таком случае выявить и устранить их бывает проблематично, так как они возникают в коде, к которому у вас нет доступа.

Если у сбоя есть отметка «Потенциально связано с SDK» на обзорной странице Android Vitals (Качество > Android Vitals > Общие сведения) и вам кажется, что он вызван неполадкой в коде SDK, вы можете поделиться информацией с поставщиком SDK, чтобы быстрее решить проблему. Отчет о сбое будет содержать название приложения, полную трассировку стека и другие сопутствующие сведения. Поставщики SDK могут просматривать информацию о сбоях, которой вы поделились, в Google Play SDK Console.

Они также могут давать разработчикам приложений рекомендации по устранению сбоев, связанных с их SDK, в разделе «Примечания от поставщика SDK» на обзорной странице Android Vitals (Качество > Android Vitals > Общие сведения). Предоставленная информация поможет выявить основную причину проблемы и способы решения. При появлении примечания к сбою, затронувшему приложение, вам придет уведомление об этом в разделе входящих сообщений в Play Console.

Вы можете помочь нам понять, полезно ли примечание, нажав на значок «Нравится» или «Не нравится» внизу страницы.

Узнать больше о доступных SDK можно на сайте Google Play SDK Index.

Ошибки ANR («Приложение не отвечает»)

Когда приложение не отвечает, открывается диалоговое окно, предлагающее пользователю подождать или закрыть приложение. Такие проблемы называются ошибками ANR. Сведения об ошибках ANR на устройствах с Android 10 и более ранними версиями доступны только в Play Console.

На этой странице представлены ошибки ANR, которые влияют на показатель «Доля ошибок ANR». Ошибки ANR группируются по кластерам, чтобы легче было выявлять общие причины.

Если вы хотите посмотреть кластеры для ошибок ANR в активном режиме, используйте фильтр Видимость проблемы.

Чтобы улучшить показатель доли ошибок ANR, в первую очередь устраняйте проблемы, затронувшие наибольшее число пользователей.

Рекомендации по диагностике и устранению ошибок ANR можно найти на сайте для разработчиков Android.

Примечание. Доля сбоев в активном режиме – один из основных показателей Android Vitals, то есть важнейших технических показателей. Он влияет на параметры видимости приложения в Google Play.

Материалы по теме

Узнать больше об обзорной странице Android Vitals можно в статье о том, как отслеживать производительность приложения с помощью Android Vitals.

Эта информация оказалась полезной?

Как можно улучшить эту статью?

Понравилась статья? Поделить с друзьями:
  • Как посмотреть ошибки асика
  • Как посмотреть номер ошибки на опель астра н
  • Как посмотреть ошибки автономки эберспехер
  • Как посмотреть отчет об ошибках windows 10
  • Как посмотреть ошибки абс через елм 327