ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку
logo

Решение проблемы: System.out.println не работает в Android

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

В Android способом отправки сообщений в журнал отладки не является System.out.println. Вместо этого следует использовать методы класса Log, например:

Java
Скопировать код
Log.d("YourTag", "Сообщение для отладки"); // Кто выпустил Отладочку на свободу?

Тег YourTag позволяет систематизировать логи, он может быть заменен на что-то более конкретное. Также доступны Log.e(), Log.i(), Log.v() и Log.w(), распознаваемые как сообщения о ошибках, информационные сообщения, подробные логи и предупреждения соответственно.

Вместо System.out.println

В стандартных приложениях на Java System.out.println() используется для вывода текста в консоль. Однако в Android приложениях предпочтительным является использование инструмента Logcat для логирования.

Как правильно логировать

  • Запись ошибок: Log.e("Tag", "Сообщение об ошибке");
  • Запись предупреждений: Log.w("Tag", "Сообщение с предупреждением");
  • Запись информационных сообщений: Log.i("Tag", "Информационное сообщение");

    Важно: предпочтительно использовать лог-теги единообразно в виде static final String – это поможет организовать логи.

Про инструменты просмотра

Как в Eclipse IDE, так и в Android Studio существует просмотрщик Logcat, позволяющий просматривать и фильтровать записи. В командной строке для этого можно воспользоваться командой adb logcat.

Визуализация

Пример использования System.out.println в Android:

Java
Скопировать код
System.out.println("Привет, мир!"); // Очевидное решение в Java

Представьте себе разницу:

Markdown
Скопировать код
Консольное приложение Java    Приложение Android
        (Чашка)                  (Лееее, не чашка?)
          🥛 <-- Магия                  🥛 <-- Требуется больше магии
       💧💧💧                       🕳🕳🕳

Суть такова: Использовать System.out.println в Android приложении — все равно что пытаться наполнить решето водой. В консольном Java приложении это работает (Превосходно!), но в Android – нет (Да, это шутка!).

Как стоит сделать:

Java
Скопировать код
Log.d("MyApp", "Привет, мир!"); // "Привет, мир!" в Android через отладочный журнал
Markdown
Скопировать код
Приложение Android (Да, это чашка для Logcat!)
     📱 <-- Вот куда идут отладочные сообщения
    💧💧💧

Особые случаи и "устаревшие" решения

Если ваш код или экстернальные библиотеки заточены под System.out.println, не стоит волноваться. Можно использовать механизм отражения и перенаправить System.out на Log в Android.

Зеленый путь: ефективное логирование

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

Просеивая логи: идентификация и фильтрация

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

Полезные материалы

  1. Log | Android Developers — официальная документация по классу Log.
  2. Why doesn't "System.out.println" work in Android? – Stack Overflow — обсуждение на форуме Stack Overflow, где разъясняются особенности использования System.out.println в Android.
  3. Android logging – Tutorial — детальный туториал по логированию в Android с использованием Logcat, предоставленный Vogella.
  4. Tutorial | DigitalOcean — практическое руководство по сравнению системы логирования Android Log с System.out.println.
  5. Logger | Android Developers — документация по java.util.logging.Logger от разработчиков Android.