Idea log android studio где находится
Перейти к содержимому

Idea log android studio где находится

  • автор:

Logcat

Наверное, самый базовый инструмент, который используют Android разработчики и QA специалисты при работе с Android.

В ходе написания кода разработчики выводят в консоль промежуточные результаты работы приложения в виде текстовых строк. Обычно здесь указывается информация о том, в какой момент и что делает приложение. За вывод этих данных отвечает встроенный журнал событий — Logcat.

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

Если вы впервые слышите про Logcat и не понимаете, как читать из него данные, самый простой выход — скачать Android Studio, включить “Режим разработчика” на своем тестовом телефоне и подключить по USB девайс к вашему ПК. В Android Studio снизу вы увидите вкладку Logcat, которую надо будет открыть, а потом выбрать девайс и приложение, которое вы тестируете.

Приятный бонус заключается в том, что Logcat можно настроить под задачу: это позволяет делать вкладка “Уровень логгирования”, где можно отслеживать, например, только ошибки. А также можно выводить информацию в журнал по ключевым словам с помощью регулярных выражений.

Стоит упомянуть, что здесь вам также пригодятся знания adb, ведь события из Logcat можно быстро собрать, прописав в консоли “adb logcat”. Приятный бонус!

Однако есть небольшой нюанс: как вы, вероятно, знаете, приложение может быть собранно в друх видах:
“debug” (для тестирования и разработки) и “release” (для релизов в маркет и поставки приложения конечному пользователю).
Важно учитывать, что если приложение находится в “release” сборке, то Logcat не будет иметь доступ к процессу приложения (в соответствии с требованиями безопасности маркетплейса), если не установлены специальные флаги, позволяющие это обойти. В связи с чем и журнал пользовательских логов для такого приложения будет недоступен.

Подводя итог, можно сказать, что Logcat — это самый полезный повседневный инструмент. Logcat поможет понять, когда в приложении что-то идет не так. Весь ход выполнения программы отражен в логах и вам как QA инженеру не обязательно знать языки программирования, чтобы понять, что бизнес требования не соответствуют ожидаемому поведению приложения. Чем больше вы будете знать свое приложение, тем больше профита будет приносить чтение логов. А по стэку ошибки вы сможете “ставить диагноз” эффективнее и давать больше полезной информации в баг репорте.

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

Logcat

LogCat

В Android SDK входит набор инструментов, предназначенных для отладки. Самый важный инструмент при отладке — это LogCat (очень красивое название, которое можно перевести как Логичный Кот). Он отображает сообщения логов (журнал логов), рассылаемые при помощи различных методов.

В студии версии Electric Eel обновили Logcat. Все старые примеры работают, но появились дополнительные возможности.

Рассмотрим на примере стандартное применение Logcat. Очень часто программисту нужно вывести куда-то промежуточные результаты, чтобы понять, почему программа не работает. Особо хитрые временно размещают на экране текстовую метку и выводят туда сообщение при помощи метода textView.setText(«Здесь был Васька»). Но есть способ лучше. В Android есть специальный класс android.util.Log для подобных случаев.

Класс android.util.Log позволяет разбивать сообщения по категориям в зависимости от важности. Для разбивки по категориям используются специальные методы, которые легко запомнить по первым буквам, указывающие на категорию:

  • Log.e() — ошибки (error)
  • Log.w() — предупреждения (warning)
  • Log.i() — информация (info)
  • Log.d() — отладка (degub)
  • Log.v() — подробности (verbose)
  • Log.wtf() — очень серьёзная ошибка! (What a Terrible Failure!, работает начиная с Android 2.2)
  • Log.meow() — когда жрать дадут? (MEOW!) Недокументированный метод, используйте на свой страх и риск. Работает не на всех устройствах

В первом параметре метода используется строка, называемая тегом. Обычно принято объявлять глобальную статическую строковую переменную TAG в начале кода:

   private val TAG = "MyApp" 
private static final String TAG = "MyApp";

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

   private val TAG = this.javaClass.simpleName 
private static final String TAG = this.getClass().getSimpleName();

Далее уже в любом месте вашей программы вы вызываете нужный метод журналирования с этим тегом:

 Log.i(TAG, "Это моё сообщение для записи в журнале"); 

Пользователи не видят журнал логов. Вы, как разработчик, можете увидеть его через программу LogCat, доступный в Android Studio.

Напишем простой пример с кнопкой.

 package ru.alexanderklimov.flamingo import android.os.Bundle import android.util.Log import android.widget.Button import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() < private val TAG = this.javaClass.simpleName override fun onCreate(savedInstanceState: Bundle?) < super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button: Button = findViewById(R.id.button) button.setOnClickListener < Log.i(TAG, "Кот нажал на кнопку") >> > 

Запускаем программу и в студии открываем вкладку Logcat:

Logcat

Вы увидите несколько строк с технической информацией.

 --------- beginning of system --------- beginning of main --------------- PROCESS STARTED (25918) for package ru.alexanderklimov.flamingo --------------- 2023-05-24 16:31:08.294 25918-25961 OpenGLRenderer . 

Если нажать на кнопку, то появится новая информация — наш приготовленный текст.

 2023-05-24 16:51:57.482 25918-25918 MainActivity ru.alexanderklimov.flamingo I Кот нажал на кнопку 

Обратите внимание, что по умолчанию в Logcat установлен фильтр package:mine . Это позволяет отсечь множество системных сообщений, которые вам не нужны. Вы можете удалить фильтр и увидеть все эти сообщения. Убедившись, что они вам действительно не нужны, верните фильтр обратно.

Фильтры можно настраивать по своему вкусу. Например, если у вас много категорий логов, то можете выбрать нужный. Просто начинайте вводить текст, подсказки будут вам помогать при вводе текста. Например, добавим ещё один фильтр.

 package:mine level:info 

Для нашего примера особо ничего не изменилось. Дело в том, что категория info включает в себя все остальные категории. Фильтр level:warn будет показывать только категории Warning и Error.

Кроме показа сообщений о своём приложении через фильтр package:mine можно установить фильтры для других приложений: package:package-ID (указать идентификатор)

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

 package:mine tag:MainActivity 

Можно убрать лишние записи через знак минуса. Например, уберём тэг OpenGLRenderer:

 package:mine -tag:OpenGLRenderer 

Все логи имеют временную метку. Можно использовать фильтр age с указанием интервала.

  • age:30s — логи за последние 30 секунд
  • age:2m — логи за последние 2 минуты
  • age:1h — логи за последний час
  • age:2d — логи за 2 дня

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

History logcat

Слева в списке фильтров есть значок звёзды — вы можете поместить любимые фильтры в Избранное.

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

В левой части Logcat есть различные значки. Один из них отвечает за внешний вид журнала логов: можно выбрать вариант Standard View или Compact View. Либо вы можете настроить под себя, выбрав Modify Views, тогда у вас откроется диалоговое окно с настройками.

Можно создавать несколько вкладок Logcat, нажимая на значок +.

Далее идёт текст к старой версии Logcat. Возможны некоторые разночтения с новой версией, но в целом всё работает.

Полный вид сообщения выглядит следующим образом.

03-09 20:44:14.460 3851-3879 / ru.alexanderklimov.cat I/OpenGLRenderer : Initialized EGL, version 1.4

  • 03-09 20:44:14.460 Date/Time
  • 3851-3879 Process & Thread IDs
  • ru.alexanderklimov.cat Package name
  • I/OpenGLRenderer Tag
  • Initialized EGL, version 1.4 Message

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

Logcat Header

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

Типы сообщений можно раскрасить разными цветами через настройки File | Settings | Editor | Colors Scheme | Android Logcat.

Для отслеживания сообщений с заданным текстом введите в поле поиска нужную строку и нажмите Enter.

Также активно используйте варианты из других выпадающих списков. Например, выбирайте свой пакет из второй колонки, а в последней выбирайте Show only selected application. Для более точной настройки используйте Edit Fiter Configuration.

LogCat

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

LogCat также можно запустить из командной строки:

adb logcat

Параметры командной строки смотрите в документации.

Быстрое отключение журналирования

Настоятельно рекомендуется удалять все вызовы LogCat в готовых приложениях. Если проект очень большой и вызовы журналирования разбросаны по всем местам кода, то ручное удаление (или комментирование) становится утомительным занятием. Многие разработчики используют следующую хитрость — создают обёртку вокруг вызова методов LogCat.

 public static final boolean isDebug = false; public final String TAG = "MyLogger"; public void MyLogger(String statement) < if (isDebug) < Log.v(TAG, statement); >> 

Теперь остаётся только присвоить нужное значение переменной isDebug перед созданием готового apk-файла для распространения.

Способ устарел. В 17-й версии Android Build Tools появился класс BuildConfig, содержащий статическое поле DEBUG. Можно проверить следующим образом:

 if (BuildConfig.DEBUG) < // Режим отладки, ведём логи >

Способ для продвинутых — например, требуется релиз с выводом в лог, или наоборот — debug с выключенным выводом. В этом случае можно создать собственный параметр и добавить его в секцию buildType gradle-файла:

 buildTypes < release < // Здесь настройки релиза buildConfigField "boolean", "USE_LOG", "false" >debug < buildConfigField "boolean", "USE_LOG", "true" >// «Релиз с логами» наследуем от обычного релиза releaseWithLog.initWith(buildTypes.release) releaseWithLog < buildConfigField "boolean", "USE_LOG", "true" >> 

В этом случае конфигурация releaseWithLog будет являться релизной сборкой с ведением логов. Естественно, в коде слегка поменяется проверка:

 if (BuildConfig.USE_LOG) < // Здесь используем логи >

LogCat на устройстве

Попался в сети пример для просмотра сообщений LogCat на устройстве. С примером не разбирался, оставлю здесь на память.

Разметка для элемента списка:

Добавляем разрешение в манифест:

 package ru.alexanderklimov.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import android.app.AlertDialog; import android.app.ListActivity; import android.content.Context; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class TestActivity extends ListActivity < private LogStringadapter adapter = null; private ArrayListlogarray = null; private LogReaderTask logReaderTask = null; @Override public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); logarray = new ArrayList(); adapter = new LogStringadapter(this, R.id.txtLogString, logarray); setListAdapter(adapter); logReaderTask = new LogReaderTask(); logReaderTask.execute(); > @Override protected void onDestroy() < logReaderTask.stopTask(); super.onDestroy(); >@Override protected void onListItemClick(ListView l, View v, int position, long id) < super.onListItemClick(l, v, position, id); final AlertDialog.Builder builder = new AlertDialog.Builder( TestActivity.this); String text = ((String) ((TextView) v).getText()); builder.setMessage(text); builder.show(); >private int getLogColor(String type) < int color = Color.BLUE; if (type.equals("D")) < color = Color.rgb(0, 0, 200); >else if (type.equals("W")) < color = Color.rgb(128, 0, 0); >else if (type.equals("E")) < color = Color.rgb(255, 0, 0); ; >else if (type.equals("I")) < color = Color.rgb(0, 128, 0); ; >return color; > private class LogStringadapter extends ArrayAdapter  < private Listobjects = null; public LogStringadapter(Context context, int textviewid, List objects) < super(context, textviewid, objects); this.objects = objects; >@Override public int getCount() < return ((null != objects) ? objects.size() : 0); >@Override public long getItemId(int position) < return position; >@Override public String getItem(int position) < return ((null != objects) ? objects.get(position) : null); >public View getView(int position, View convertView, ViewGroup parent) < View view = convertView; if (null == view) < LayoutInflater vi = (LayoutInflater) TestActivity.this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.logitem, null); >String data = objects.get(position); if (null != data) < TextView textview = (TextView) view .findViewById(R.id.txtLogString); String type = data.substring(0, 1); String line = data.substring(2); textview.setText(line); textview.setTextColor(getLogColor(type)); >return view; > > private class LogReaderTask extends AsyncTask < private final String[] LOGCAT_CMD = new String[] < "logcat" >; private final int BUFFER_SIZE = 1024; private boolean isRunning = true; private Process logprocess = null; private BufferedReader reader = null; private String[] line = null; @Override protected Void doInBackground(Void. params) < try < logprocess = Runtime.getRuntime().exec(LOGCAT_CMD); >catch (IOException e) < e.printStackTrace(); isRunning = false; >try < reader = new BufferedReader(new InputStreamReader( logprocess.getInputStream()), BUFFER_SIZE); >catch (IllegalArgumentException e) < e.printStackTrace(); isRunning = false; >line = new String[1]; try < while (isRunning) < line[0] = reader.readLine(); publishProgress(line); >> catch (IOException e) < e.printStackTrace(); isRunning = false; >return null; > @Override protected void onCancelled() < super.onCancelled(); >@Override protected void onPreExecute() < super.onPreExecute(); >@Override protected void onPostExecute(Void result) < super.onPostExecute(result); >@Override protected void onProgressUpdate(String. values) < super.onProgressUpdate(values); adapter.add(values[0]); >public void stopTask() < isRunning = false; logprocess.destroy(); >> > 

Список фишек Android Studio для ускорения разработки

Привет! Меня зовут Стефан, я занимаюсь Android-разработкой в KTS.

Android-разработчики каждый день сталкиваются с своим основным инструментом — Android Studio.

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

❗️ Обратите внимание: большинство советов универсальны и не завязаны именно на AS. Их могут использовать бэкендеры в PyCharm, фронтендеры на WebStorm, иосеры на AppCode.

Опытные разработчики, скорее всего, знают о некоторых из этих возможностей:

  • Хоткеи
    • Общие действия
    • Навигация
    • Навигация по вкладкам
    • Работа с кодом
    • Работа с GIT

    Хоткеи

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

    Важно понимать, что хоткеи зависят от раскладки студии (keymap). Я просто покажу вам, как настроить каждый, а на любое сочетание клавиш найдётся свой любитель.

    ❗️ Обратите внимание: хоткеи различаются в зависимости от OS, поэтому важнее знать, где их посмотреть и настроить. Это делается в этом окне:

    Preferences → вводим в поиск “keymap”

    Общие действия

    Открыть настройки студии

    Открыть недавние файлы

    Сохранить изменения в файлах

    Вставка с учетом буфера обмена

    Оптимизировать импорты

    Удаляет неиспользуемые импорты, сортирует импорты в соответствии code-style проекта.

    Установить его можно в настройках студии:
    Preferences → Editor → Code Style → Выбираем конкретный язык → Шестерёнка ⚙️ возле поля Scheme → Import Scheme

    Собрать проект и запустить на устройстве

    Собрать проект и запустить в debug-режиме на устройстве

    Зааттачить debugger к уже запущенному процессу

    Просто собрать проект

    Закрыть текущую вкладку с файлом:

    Закрыть активное окно с инструментами

    Позволяет закрыть активное окно, аналогично клику на кнопку «свернуть» в окне. Я, к примеру, так закрываю Logcat:

    Навигация

    Навигация по изменениям в индексе Git

    Позволяет навигироваться на те строчки кода, которые попали в индекс Git в рамках файла. Также помимо навигации показывает дифф:

    Навигация по методам в файле

    Навигация по файлам

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

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

    Позволяет искать по названиям файлов, классов, действиям, Git — по commit-хэшу, названиям веток, тэгам и commit message:

    Навигация по вкладкам

    На предыдущую вкладку

    На следующую вкладку

    Показать файл в…

    Очень мощный шорткат, использую его в KMM/KMP проектах, позволяет:

    • Показать файл в:
      • ProjectView: в виде Project, Packages, Android и разных Scop проекта
    • Показать структуру файла
    • Navigation bar
    • Открыть в Finder/Проводнике
    • Показать структуру проекта

    Работа с кодом

    Отформатировать код

    Отформатировать файл:

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

    Поменять строчки кода местами

    Меняет строчки кода местами. Удобно, когда нужно поменять параметры функции/метода/конструктора.

    Поменять выражения местами:

    В отличие от свапа строчек местами, этот хоткей позволяет менять местами тела целых методов, объявления классов и top-lvl переменных и функций, параметров функции/метода/конструктора — но делает это умно и сам подставляет запятые в нужных местах. Также нельзя выйти за пределы сигнатуры метода, если меняете параметры метода местами.

    Посмотреть быстрое объявление класса/метода/переменной

    Добавить/удалить каретку

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

    Переместить каретку к следующему/предыдущему слову:

    Выделить слово

    Переместить каретку к началу/концу строки:

    Выделить строку:

    Расширить выделение текста

    Клонировать каретку над/под текущей кареткой:

    Позволяет клонировать каретку над строчками выше/ниже текущей каретки. Это тоже удобно при копировании/перемещении параметров.

    Работа с GIT

    Rollback изменений (в этом примере будем использовать Git):

    Позволяет откатить изменения в индексе Git.

    Можно использовать как в файлах исходного кода, так и целиком на файлах в индексе VCS, которые находятся во вкладке Git → LocalChanges

    Подтянуть изменения из удалённого репозитория

    Сделать коммит

    Запушить коммиты

    Key Promoter X

    В предыдущей главе я рассказал только о незначительной части хоткеев, которые можно установить в студии. Кто-то может возразить: «Что-то слишком их много, тяжело выучить все и запомнить пальцами будет тяжело». На что я могу вам ответить: «Используйте Key Promoter X».

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

    Найти плагин легко. Нужно ввести Key Promoter X в Preferences → Plugins → Marketplace:

    После установки перезапускаем студию и пользуемся!

    Подсказки выглядят так:

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

    Подсказка появилась, когда я попытался навигировать в объявление метода через контекстное меню ПКМ-ом по методу:

    Также можно посмотреть общую статистику пропущенных хоткеев:

    Шаблоны кода

    При разработке встречается много бойлерплейта/однотипного кода, например ViewModel-и или Fragment. Чтобы автоматизировать написание таких мест, ребята из hh.ru сделали очень приятный инструмент: набор плагинов для работы с Android Studio

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

    Перед использованием плагинов сначала их нужно собрать (ручками ��) и этими же ручками подключить к Android Studio.

    Подсветка вложенных скобок

    В коде порой могут встречаться сложные вложенные конструкции, которые обрамляются либо обычными ()-скобками, либо фигурными <>. То, что этих скобок на единицу текста стало очень много, означает две вещи:

    1. Надо отрефакторить этот код
    2. Использовать плагин Rainbow Brackets, хотя одно другому не мешает 🙂

    Найти его очень просто, достаточно ввести Rainbow Brackets в Preferences → Plugins → Marketplace:

    Плагин очень простой. Всё, что он делает — подсвечивает разными цветами скобочки, что делает код более читаемым.

    Пример без Rainbow Brackets и с Rainbow Brackets:

    Rainbow Brackets можно настроить под себя:

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

    Подсветка логов

    Недавно Google представила в свежей версии Android Studio новый Logcat, который, на мой взгляд, удобней, чем старый.

    Раз уж в предыдущей главе мы заговорили о подсветке — кроме скобок, в студии ещё можно подсвечивать и логи в Logcat! Студия поддерживает это из коробки.

    Настраивается в Preferences → Editor → Color Scheme → Android Logcat:

    Список настроек очень обширен, настраивать можно как:

    Присмотритесь: на этом фото задана обводка фиолетовым цветом для Warning (жёлтый текст) и полоска в скролле справа, на которой видно риски для Waring (голубая) и Debug (белая)

    • стиль текста: жирный и курсив
    • цвет текста для каждого уровня логов
    • цвет фона
    • добавлять полоски в скролле сбоку, чтобы можно было видеть по скроллу где и с каким уровнем сообщения
    • даже добавлять эффекты, обводку текста определенным цветом:

    ADB Idea

    При работе с вашим приложением на устройстве AS под капотом использует ADB (Android Debug Bridge), от установки приложения и вплоть до вывода логов в Logcat.

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

    Найти его можно, введя в ADB Idea в Preferences → Plugins → Marketplace.

    • Деинсталлировать приложение
    • Убивать процесс приложения
    • Запускать приложение
    • Перезапускать ранее запущенное приложение
    • Очищать данные приложения
    • Очищать данные приложения и затем перезапускать
    • Запускать приложение с дебаггером
    • Перезапускать приложение с дебаггером
    • Предоставлять/отзывать permissions
    • Включить/отключить WiFi
    • Включить/отключить мобильные данные

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

    • Через вкладку Tools сверху → ADB Idea.

    • Через хоткей
    • Через Touchbar на Mac, команды просто выводятся на него:

    Multirun

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

    По умолчанию конфигурация собирает проект из app-модуля и запускает на устройстве, но там также могут быть тесты, Compose Preview и т.п. Что, если нам понадобится запускать сразу несколько конфигураций? Для решения этой проблемы есть плагин Multirun, который позволяет сразу запускать множество конфигураций одним кликом, а также группировать конфигурации.

    Я в основном использую сценарий с запуском приложения под разные конфигурации в KMM — Android, iOS, Desktop:

    Как настроить Multirun конфигурацию:

    1. Run → Edit Configurations.
    2. Найдите и добавьте новую конфигурацию Multirun
    3. Добавьте другие конфигурации запуска в конфигурацию Multirun
    4. Выбираем нужные нам варианты
    5. Можно запускать!

    Git Hooks

    Скорее всего, свои задачи вы делаете в отдельных ветках, и вам приходится добавлять к commit message название ветки. Это тоже можно автоматизировать! Для этого потребуется Git hooks.

    Git Hook — это скрипт, который выполняется до или после различных событий Git: commit, push и receive.

    Git Hook могут лежать в двух местах:

    • под Git: мы можем сами настраивать директорию с Git Hook в нашем проекте. Как это можно сделать:
    • при помощи команды в терминале: git config core.hooksPath .githooks
    • при помощи Gradle Task
    val changeGitHooksDir by tasks.registering(Exec::class) < group = "git" description = "Changing githooks dir to .githooks" fun ExecSpec.executeStringCommand(command: String) < val splitted = command.split(" ") commandLine(*splitted.toTypedArray()) >fun execute(command: String) < exec < executeStringCommand(command) >> executeStringCommand("git config core.hooksPath .githooks") > tasks.getByPath(“”).dependsOn(changeGitHooksDir) 

    В данном случае мы расположим Git Hook в корне директории/.githooks. Вариант с Gradle Task более предпочтителен, потому что нет гарантии, что разработчики будут выполнять команду в терминале: git config core.hooksPath .githooks

    • вне Git: корень директории/.git/hooks (там же еще лежат и примеры от Git

    Git Hook, добавляющий название ветки к commit message в квадратных скобках []:

    #!/bin/sh COMMIT_MSG_FILE=$1 COMMIT_SOURCE=$2 SHA1=$3 BRANCHES_TO_SKIP=(main dev) BRANCH_NAME=$(git symbolic-ref --short HEAD) BRANCH_EXCLUDED=$(printf "%s\n" "$" | grep -c "^$BRANCH_NAME$") TRIMMED=$(echo $BRANCH_NAME | sed -e 's:^\([^-]*-[^-]*\)-.*:\1:' -e \ 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/') PREFIX="[$TRIMMED]" COMMIT_MSG=$(cat $COMMIT_MSG_FILE) if [ -n "$BRANCH_NAME" ] && ! [[ $COMMIT_MSG == "$PREFIX"* ]] && ! [[ $BRANCH_EXCLUDED -eq 1 ]]; then sed -i.bak -e "1s/^/$PREFIX /" $COMMIT_MSG_FILE fi 

    Так вы выполните commit на MYFEATURE-10 с сообщением «My commit». На выходе получите: [MYFEATURE-10] My commit

    Ещё в Git Hook можно прогонять перед коммитом, например, Detekt с автоисправлением и проверкой кода на соответствие code-style.

    Чтобы студия использовала Git Hook, в окне Commit Changes при коммите в разделе Before Commit нужно поставить галочку Run Git Hooks:

    Заключение

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

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

    ❗️ Хотел бы обратить внимание, что не нужно выполнять все пункты разом. Главное, применяйте эти рекомендации периодически, возвращаясь к статье — и со временем увидите прогресс. Особенно в сравнении с теми, кто не автоматизирует свою работу… Вы, кстати, можете посоветовать им эту статью ��

    Тема автоматизации — весьма обширная, и улучшать работу, внезапно, можно не только в Android Studio. Если статья вам понравится, в следующий раз я постараюсь разобрать более глубокие и общие фишки, которые подходят не только пользователями AS.

    Другие статьи по Android-разработке для начинающих:

    • Статья про OAuth, из которой узнаете, на какие моменты стоит обратить внимание, какие способы реализации выбрать
    • Но это (не)точно: чего ждать мобильным разработчикам в 2023-м году

    Другие статьи по Android-разработке для продвинутых:

    • Этапы работы во фреймворке Jetpack Compose, который упрощает написание и обновление визуального интерфейса приложения
    • Реализуем режим edge-to-edge, используя знания Window Inset
    • KMM глазами iOS-разработчика

    Как пользоваться Android Studio

    Как пользоваться Android Studio

    Арина Мурашева

    Арина Мурашева Эксперт в Java, Kotlin, Android, SQL, проектировании информационных систем.

    Android-разработчица такси Maxim и ментор курса «Android-разработчик» Арина Мурашева подробно рассказывает, как установить и использовать Android Studio и как собирать и отлаживать приложения.

    Освойте профессию «Android-разработчик»

    Для чего используется Android Studio?

    Android Studio — это IDE (интегрированная среда разработки) для работы с платформой Android. Она позволяет разрабатывать приложения для смартфонов, планшетов, часов, телевизоров и других устройств на этой ОС. Я использую Android Studio, потому что это официальная среда разработки, которую поддерживает Google. Она основана на IntelliJ IDEA от компании JetBrains, чьи продукты я люблю и использую еще со студенческих времен. В Android Studio те же горячие клавиши и интерфейс, что и в других продуктах JetBrains, поэтому для меня эта среда самая привычная и удобная.

    Установка Android Studio

    16 месяцев
    Android-разработчик
    Запускайте приложения и игры для Android
    4 391 ₽/мес 7 983 ₽/мес

    Group 1321314280 (3)

    1. Установка Java SDK

    Установите Java SDK независимо от того, планируете вы разрабатывать на Java или Kotlin. Для этого перейдите на официальный сайт Oracle в раздел Downloads и скачайте нужную версию Java SDK. Для разных проектов могут понадобиться разные версии, но если вы не знаете, какая нужна, — скачивайте последнюю.

    2. Установка и настройка Android Studio

    В отличие от многих инструментов разработки, за Android Studio не нужно платить. Чтобы скачать Android Studio, перейдите на официальный сайт для разработчиков Android и нажмите Download, согласитесь с условиями использования и нажмите Download Android Studio. После завершения скачивания запустите установочный файл и начните процесс установки. Сначала выберите путь установки Android Studio и Android SDK. Оставьте пути по умолчанию или выберите свои. Установка Android StudioЕсли у вас уже установлена старая версия Android Studio, то первое окно установщика будет выглядеть как на скриншоте ниже. При этом процесс установки будет немного отличаться, однако в этой статье рассматривается только первичная установка Android Studio. повторная установка Android StudioПосле этого несколько раз нажмите Next, оставляя все параметры по умолчанию, пока не начнется установка. После завершения установки Android Studio должна запуститься автоматически. Если нет, то ярлык программы вы сможете найти в меню «Пуск» или на рабочем столе. При первом запуске Android Studio нужно будет ее настроить. Сначала студия спросит, нужно ли импортировать настройки с прошлой версии. Так как это первая установка студии, то сохраненных настроек у вас нет. Оставьте второй вариант и нажмите OK. Импорт в Android StudioПосле этого завершите настройку и скачайте необходимые компоненты с помощью Setup Wizard, который открывается после нажатия OK в предыдущем окне. начало установки Android StudioНажмите Next и перейдите к выбору типа установки компонентов Android Studio. выбор типа Android StudioЕсли вам не нужна кастомная настройка компонентов, выберите Standard и нажмите Next. После этого установщик сообщит, что необходимо загрузить несколько компонентов для завершения установки. Нажмите Finish и подождите, пока все компоненты загрузятся и распакуются. После завершения этого процесса снова станет доступна кнопка Finish. Нажмите на нее, после чего появится экран приветствия Android Studio. приветствие в Android Studio

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

    Как использовать Android Studio

    Работа в Android Studio похожа на работу в большинстве современных IDE. Однако, как и везде, здесь есть свои нюансы. Далее мы разберем основы работы в Android Studio. Для начала необходимо создать проект в Android Studio. На приветственном экране нажмите Create New Project, после этого вы увидите экран с шаблонами устройств и Activity (это класс, в котором реализуют логику экрана приложения). Для начала можно выбрать Phone and Tablet (телефоны и планшеты) и No Activity либо Empty Activity. Разница в том, что в первом случае вам нужно будет реализовать первую Activity с нуля, а во втором студия самостоятельно создаст готовый редактируемый шаблон. После выбора нажмите Next и увидите окно настроек будущего проекта. Название проекта (Name) в Android Studio может быть любым и даже содержать пробелы. А вот имя пакета (Package Name) должно быть уникальным, если вы собираетесь опубликовать приложение в Google Play. Что еще можно выбрать: расположение проекта (Save Location), язык (Language), который вы собираетесь использовать (Java или Kotlin), и минимальную поддерживаемую SDK (Minimum SDK). Минимальная поддерживаемая SDK — это самая ранняя версия операционной системы Android, в которой приложение может работать. Если вы меняете расположение файлов проекта, то не забудьте создать папку, которая будет содержать ваш проект. Обратите внимание, что в названии не должно быть пробелов. Язык здесь можно выбрать любой, потому что в проекте доступны и Java, и Kotlin. А вот минимальную поддерживаемую Android SDK выбирайте внимательно. Студия подсказывает, какое количество устройств на сегодняшний день поддерживают ту или иную SDK. Старайтесь выбрать минимальное значение, чтобы как можно больше устройств могли успешно работать с вашим приложением в Android Studio. Но учтите, что чем ниже минимальная SDK, тем больше трудностей будет возникать при разработке.

    Структура проекта Android

    структура проекта в Android Studio

    Если в предыдущем шаге вы выбрали шаблон Empty Activity, то при создании проекта студия сгенерирует и структуру файлов проекта. Так выглядит пустой, только что созданный проект в Android Studio. Он содержит 2 корневые папки: app и Gradle Scripts. Папка app включает 3 подпапки: manifests (содержит файлы конфигураций приложения), java (содержит исходный код приложения) и res (содержит файлы ресурсов — картинок, стилей, размерностей и т.д.). AndroidManifest.xml в папке manifests содержит информацию о пакетах и компонентах приложения. Этот файл важен для работы приложения Android, так как именно в нем прописаны разрешения приложения на использование компонентов системы Android. Также в нем определяется, как будут запускаться компоненты приложения.

    Читайте также Кто такой Android-разработчик?

    1. Папка drawable содержит файлы с изображениями.
    2. В папке layout нужно располагать xml-файлы, используемые для создания интерфейса приложения.
    3. Папка mipmap хранит значки приложения.
    4. Папка values хранит xml-файлы со значениями строк, цветов, тем, стилей.

    Папка Gradle Scripts содержит скрипты для автоматизации сборки проекта.

    Папка .idea не видна на скриншоте, но если изменить конфигурацию Android на Project, то она появится. Эта папка нужна для настройки метаданных проекта в Android Studio.

    Редактор xml

    Для редактирования xml-файлов в Android Studio встроен удобный инструмент. Он позволяет не только редактировать код xml-файлов, но и видеть изменения в режиме реального времени с помощью визуального представления. В этом же визуальном представлении можно редактировать xml-файлы.

    Чтобы посмотреть работу этого редактора, откройте файл activity_main.xml, сгенерированный Android Studio. Кстати, если ваш проект уже разросся и искать файлы неудобно, то нажмите клавишу Shift быстро два раза, и откроется окно поиска по файлам проекта. Начните вводить туда название нужного файла, а затем выберите его из списка. Как видно на анимации, необязательно вводить слова полностью — достаточно первых букв.

    По умолчанию открывается только редактор кода.

    редактор кода Android Studio

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

    Gradle

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

    Хочу поделиться лайфхаком, который выручал меня не раз. Если проект перестал собираться по непонятной причине, скорее всего, это связано с gradle. В таком случае в меню выберите Build, а затем опцию Clear Project.

    Сборка и отладка приложения

    После того как вы добавили первую функциональность в свое приложение, начните отлаживать его (запускать и проверять работоспособность всех функций). Лучше делать это на устройстве Android.

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

    Чтобы включить параметры разработчика, в настройках своего телефона найдите пункт «Номер сборки» (обычно находится в «Сведениях об устройстве») и нажмите на него быстро семь раз. Далее перейдите в параметры разработчика и включите отладку по USB.

    После этого подключите телефон через USB к компьютеру и увидите название своего устройства в верхней панели Android Studio — у меня это Samsung. Обратите внимание, на телефоне могут появиться уведомления, где нужно разрешить отладку с данного компьютера.

    выбор устройства в Android Studio для запуска приложения

    Затем нажмите на кнопку Run (зеленый треугольник), и приложение запустится на вашем телефоне.

    Если приложение «упало» (завершило работу, когда не должно было) или возникли какие-то другие ошибки — данные вы увидите на вкладке Logcat (внизу).

    панель logcat в Android Studio

    В панели настроек Logcat можно выбрать устройство, на котором производится отладка, отлаживаемый процесс и поставить фильтр на сообщения, которые хотите видеть в Logcat. Обычно сообщения об ошибках и так заметны — они выделяются красным, — но если хотите видеть только их, то поставьте фильтр Error.

    фильтр logcat в Android Studio

    Отладка приложения на виртуальных устройствах

    Устройств на Android так много, что невозможно протестировать код на каждом из них. Здесь на помощь приходят виртуальные устройства, доступные для скачивания из Android Studio.

    Чтобы создать виртуальное устройство, откройте AVD Manager (Android Virtual Device Manager) и начните создание желаемого устройства.

    запуск avd manager в Android Studio

    Для создания нового устройства нажмите кнопку Create Virtual Device. Затем выберите устройство (модель телефона).

    После нажмите Next и переходите к выбору системы Android, которая будет установлена на устройство. Если ранее вы не устанавливали ни одной эмулированной системы, то ее нужно будет скачать. У меня уже скачан Android Q.

    После скачивания нажмите Next, затем Finish, и создание виртуального устройства завершено.

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

    Главное — практика

    По-настоящему освоить Android Studio получится только самостоятельно в процессе практики. Дополнительно рекомендую изучить горячие клавиши в Android Studio (как двойное нажатие Shift для поиска по файлам).

    Android-разработчик

    Освойте программирование на Java и Kotlin, мобильную разработку и UX/UI, разработайте свое приложение для Android. Центр карьеры поможет с резюме и подготовкой к собеседованию. Программа подойдет для новичков

Добавить комментарий

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