Как стать автором
Обновить
101.97
KTS
Создаем цифровые продукты для бизнеса

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

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров11K

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

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

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

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

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

Хоткеи 

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

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

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

Preferences → вводим в поиск “keymap”
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 (белая)
Присмотритесь: на этом фото задана обводка фиолетовым цветом для 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

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(“<build>”).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" "${BRANCHES_TO_SKIP[@]}" | 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-разработке для начинающих:

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

Теги:
Хабы:
Всего голосов 25: ↑24 и ↓1+23
Комментарии9

Публикации

Информация

Сайт
kts.tech
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия