Auto format code in Android Studio/Intellij IDEA
Every organization/company has certain rules for code formatting and many times developer forget about these rules and face lot of issues like merge conflicts, Jenkins builds getting failed etc. to solve this you can use a utility MACROS available in all Android Studio and all other IntelliJ products.
Record the macro
- Open any file in the editor.
- From the main menu, select Edit | Macros | Start Macro Recording.
- Press ⌥⌘L to reformat code (Code | Reformat Code ). Then press ⌘S to save all changes (File | Save All ). Android Studio/IntelliJ IDEA will show the performed actions in the status bar.
- Stop recording by selecting Edit | Macros | Stop Macro Recording.
- In the Enter Macro Name dialog, specify the name for the new macro and click OK.
- If the macro is intended for temporary use only, you can leave the name blank.
Play back a macro
- To play back a temporary macro, open the Edit menu, point to Macros, and click Play Back Last Macro.
- To play back a named macro, open the Edit menu, point to Macros, and click the necessary macro name.
Edit macros
- Open the Edit menu, point to Macros, and click Edit Macros.
Bind a keyboard shortcut to a macro
- In the Settings/Preferences dialog ⌘,, select Keymap.
- Expand the Macros node and select the created Reformat and Save macro.
- Right-click the macro and choose Add Keyboard Shortcut in the context menu
- In the Enter Keyboard Shortcut dialog, press ⌘S to be used as the shortcut and click OK.
- Android Studio/IntelliJ IDEA will warn you that the shortcut is assigned to another action. Click Remove to remove the ⌘S shortcut for the File | Save All action. You can always reassign it later if necessary.
- Click OK to apply the changes.
Now, when you press ⌘S, Android Studio/IntelliJ IDEA will invoke the new macro: reformat the current file and save your project.
Как выровнять / отформатировать код в Android Studio?
Есть ли способ/ярлык/встроенная функция, которая может выровнять код для операндов, таких как знаки ‘=’?
Например, существует XAlign for Xcode (https://github.com/qfish/XAlign), позволяющий пользователю выбрать код, который необходимо выровнять, и использовать ярлык для его автоматического выравнивания.
В Android Studio есть функция группы полей, которая может «выравнивать по столбцам», но она не работает для уже написанного кода.
5 ответов
Код отступа в Android Studio:
Windows
Mac:
В Eclipse, который поставляется с Android Studio Bundle, комбинация клавиш для запуска Auto Formatter выглядит следующим образом:
Если вы хотите изменить эту комбинацию, перейдите в меню «Настройки» → «Таблица ключей» и выберите «Пользовательский».
Выравнивание для объявлений переменных работает только для тех, которые находятся за пределами функций. Функция выравнивания в меню «Предпочтения» → «Стиль кода» → «Обтекание и фигурные скобки» → «Группы полей» → «Выровнять по столбцам» не работает для тех, кто находится внутри скобок/фигурных скобок.
Эта функция доступна, но еще не в стабильной версии. Доступен в сборке: 140.1761
На момент написания этого ответа моя текущая сборка «Стабильная версия» была 135.1653844, построена 18 декабря 2014 года.
Code formatting shortcuts in Android Studio for Operation Systems
I have started developing with Android Studio. In Eclipse I was using Ctrl + Shift + F , but in Android Studio it does not work. It will be different.
How can I jump to any method in a .java file? I was using Ctrl + O in Eclipse.
Is it available? What is the shortcut for code formatting?
24 Answers 24
Windows: Ctrl + Alt + L
Linux: Ctrl + Shift + Alt + L
macOS: Option + Command + L
Reference: Key Commands and here are all of the commands for Windows/ Linux users and for Mac users.
As Rohit faced a problem in Ubuntu with the format code shortcut, this is due to the Ctrl + Alt + L key being used to lock the screen in Ubuntu.
I found that Ubuntu handles this keyboard shortcut first. So you should bind the Ctrl + Alt + L keyboard shortcut to something else so that it doesn’t conflict with Ubuntu.
Steps
Go to System Tools → System Settings → Keyboard → Shortcuts tab → System → Lock Screen.
Select the row New Accelerator. , then press any special key with the Alpha key (e.g. Shift + L ). You should’ve successfully changed the keyboard shortcut.
Check if the keyboard shortcut now works in Android Studio.
Alternative method
Ctrl + Alt + Shift + L (to show a dialog)
You can also use Eclipse shortcuts.
- Windows and Linux: Go to menu File → Settings → Keymap
- macOS: Go to menu Preferences → Keymap and choose Eclipse from the drop-down menu.
Using MenuBar
Select code which you want to reformat
Click on Code in the menu bar and select Reformat Code as shown in the image below:
In Android studio 3.5, there is problem with rearranging the xml code, it also rearrange the views as well, so need to use these settings first.
Settings -> Editor -> Code Style -> XML-> Set From -> Predefined Style > Android.
Update for Android Studio 4+
Since Android Studio 4+, you might face issue shortcuts on mac. Shortcuts not working after updating to Android studio 4, in Mac? have an answer for that.
You can also use Eclipse’s keyboard shortcuts: just go to menu Preferences → keymap and choose Eclipse from the dropdown menu.
The actual path is: menu File → Settings → Keymap (under IDE settings)
Check Keyboard Commands given in the Android Studio Tips & Trick documentation:
Just select the code and
on Windows do Ctrl + Alt + L
on Linux do Ctrl + Super + Alt + L
on Mac do CMD + Alt + L
For formatting code in Android Studio on Linux you could instead use Ctrl + Alt + Super + L . You could use this and avoid having to change the system shortcut. ( Super key is the Windows icon key besides the Alt key).
For code formatting in Android Studio:
Ctrl + Alt + L (Windows/Linux)
Option + Cmd + L (Mac)
The user can also use Eclipse’s keyboard shortcuts: just go on menu Setting → Preferences → Keymap and choose Eclipse (or any one you like) from the dropdown menu.
You will have to apply all Eclipse shortcuts with Android Studio before using all those shortcuts.
Now you can use all Eclipse shortcuts in Android Studio.
Have some snapshots here.
Check this. Also you can change it as per your preference.
For auto formatting your Java/XML files in Android Studio, use following commands:
As you are looking for a single point to go with your work as Eclipse did, there is no such built-in functionality in Android Studio, but it gives you the ability to do it through a macro. Follow these steps:
In Android Studio, open any of your source code files.
Press Ctrl + Alt + O This is used to find/optimize unused import.
If a dialog open select «Don’t show it again» and hit Run.
Go to Edit > Macros > Start Macro Recording.
Press Ctrl + Alt + O .
Press Ctrl + Alt + L . This formats your code. ( Shift + Ctrl + Alt + L for Ubuntu).
Press Ctrl + S . This saves your file;)
Go to Edit > Macros > Stop Macro Recording.
Save this created macro with a name, for instance: “Auto Formatting».
Boom, you have now successfully created your macro. Now just add/assign a shortcut to it:
Search in the left bar for Keymap.
In the right hand pane, click in the search bar and type the name of your saved macro («Auto Formatting».)
Double click on your item. There might be two, it doesn’t matter which one you click on.
Список фишек Android Studio для ускорения разработки
Привет! Меня зовут Стефан, я занимаюсь Android-разработкой в KTS.
Android-разработчики каждый день сталкиваются с своим основным инструментом — Android Studio.
Это очень удобный инструмент с большим спектром возможностей, но зачастую разработчики не используют их все. В этой статье я попытаюсь это исправить и расскажу об интересных фишках этой IDE, которые сам использую каждый день. Не обо всех, но зато самых базовых, которые позволят увеличить вашу продуктивность.
❗️ Обратите внимание: большинство советов универсальны и не завязаны именно на AS. Их могут использовать бэкендеры в PyCharm, фронтендеры на WebStorm, иосеры на AppCode.
Опытные разработчики, скорее всего, знают о некоторых из этих возможностей:
Хоткеи
Они же горячие клавиши, которые облегчают жизнь разработчику и любому работающему за клавиатурой человеку. Хоткеев получилось довольно много, поэтому я разделил их по разделам.
Важно понимать, что хоткеи зависят от раскладки студии (keymap). Я просто покажу вам, как настроить каждый, а на любое сочетание клавиш найдётся свой любитель.
❗️ Обратите внимание: хоткеи различаются в зависимости от OS, поэтому важнее знать, где их посмотреть и настроить. Это делается в этом окне:
Общие действия
Удаляет неиспользуемые импорты, сортирует импорты в соответствии code-style проекта.
Установить его можно в настройках студии:
Preferences → Editor → Code Style → Выбираем конкретный язык → Шестерёнка ⚙️ возле поля Scheme → Import Scheme
Позволяет закрыть активное окно, аналогично клику на кнопку «свернуть» в окне. Я, к примеру, так закрываю Logcat:
Навигация
Позволяет навигироваться на те строчки кода, которые попали в индекс Git в рамках файла. Также помимо навигации показывает дифф:
Позволяет навигироваться по последним открытым файлам, как вперёд, так и назад. Так вам не приходится переключать одну руку на мышку/трекпад, руки остаются на клавиатуре
Позволяет искать по названиям файлов, классов, действиям, Git — по commit-хэшу, названиям веток, тэгам и commit message:
Навигация по вкладкам
Очень мощный шорткат, использую его в KMM/KMP проектах, позволяет:
Показать файл в:
ProjectView: в виде Project, Packages, Android и разных Scop проекта
Показать структуру файла
Открыть в Finder/Проводнике
Показать структуру проекта
Работа с кодом
Почти тоже самое, что форматирование кода, только более гибкое, так как появляется контекстное меню, в котором можно задать параметры форматирования:
Меняет строчки кода местами. Удобно, когда нужно поменять параметры функции/метода/конструктора.
В отличие от свапа строчек местами, этот хоткей позволяет менять местами тела целых методов, объявления классов и top-lvl переменных и функций, параметров функции/метода/конструктора — но делает это умно и сам подставляет запятые в нужных местах. Также нельзя выйти за пределы сигнатуры метода, если меняете параметры метода местами.
Позволяет устанавливать несколько кареток текста, что бывает удобно при копировании параметров. Работает следующим образом: зажимаем хоткей и кликаем в нужное место в коде.
Позволяет клонировать каретку над строчками выше/ниже текущей каретки. Это тоже удобно при копировании/перемещении параметров.
Работа с 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.
Подсветка вложенных скобок
В коде порой могут встречаться сложные вложенные конструкции, которые обрамляются либо обычными ()-скобками, либо фигурными <>. То, что этих скобок на единицу текста стало очень много, означает две вещи:
Надо отрефакторить этот код
Использовать плагин Rainbow Brackets, хотя одно другому не мешает 🙂
Найти его очень просто, достаточно ввести Rainbow Brackets в Preferences → Plugins → Marketplace:
Плагин очень простой. Всё, что он делает — подсвечивает разными цветами скобочки, что делает код более читаемым.
Пример без Rainbow Brackets и с Rainbow Brackets:
Rainbow Brackets можно настроить под себя:
Лично я в настройках из коробки ничего не менял, но всегда можно попробовать.
Подсветка логов
Недавно Google представила в свежей версии Android Studio новый Logcat, который, на мой взгляд, удобней, чем старый.
Раз уж в предыдущей главе мы заговорили о подсветке — кроме скобок, в студии ещё можно подсвечивать и логи в Logcat! Студия поддерживает это из коробки.
Настраивается в Preferences → Editor → Color Scheme → Android Logcat:
Список настроек очень обширен, настраивать можно как:
стиль текста: жирный и курсив
цвет текста для каждого уровня логов
добавлять полоски в скролле сбоку, чтобы можно было видеть по скроллу где и с каким уровнем сообщения
даже добавлять эффекты, обводку текста определенным цветом:
ADB Idea
При работе с вашим приложением на устройстве AS под капотом использует ADB (Android Debug Bridge), от установки приложения и вплоть до вывода логов в Logcat.
При отладке приложения бывают случаи, когда его нужно несколько раз переустанавливать на устройстве, стирать его данные, перезапускать, убивать процесс приложения или отзывать permissions. Это можно делать и руками на устройстве, но для автоматизации этих действий уже существует решение — плагин ADB Idea.
Найти его можно, введя в ADB Idea в Preferences → Plugins → Marketplace.
Убивать процесс приложения
Перезапускать ранее запущенное приложение
Очищать данные приложения
Очищать данные приложения и затем перезапускать
Запускать приложение с дебаггером
Перезапускать приложение с дебаггером
Включить/отключить мобильные данные
После установки открыть список команд можно двумя способами:
Через вкладку Tools сверху → ADB Idea.
Через Touchbar на Mac, команды просто выводятся на него:
Multirun
При запуске приложения на устройстве мы обычно используем конфигурацию запуска:
По умолчанию конфигурация собирает проект из app-модуля и запускает на устройстве, но там также могут быть тесты, Compose Preview и т.п. Что, если нам понадобится запускать сразу несколько конфигураций? Для решения этой проблемы есть плагин Multirun, который позволяет сразу запускать множество конфигураций одним кликом, а также группировать конфигурации.
Я в основном использую сценарий с запуском приложения под разные конфигурации в KMM — Android, iOS, Desktop:
Как настроить Multirun конфигурацию:
Run → Edit Configurations.
Найдите и добавьте новую конфигурацию Multirun
Добавьте другие конфигурации запуска в конфигурацию Multirun
Выбираем нужные нам варианты
Git Hooks
Скорее всего, свои задачи вы делаете в отдельных ветках, и вам приходится добавлять к commit message название ветки. Это тоже можно автоматизировать! Для этого потребуется Git hooks.
Git Hook — это скрипт, который выполняется до или после различных событий Git: commit, push и receive.
Git Hook могут лежать в двух местах:
под Git: мы можем сами настраивать директорию с Git Hook в нашем проекте. Как это можно сделать:
при помощи команды в терминале: git config core.hooksPath .githooks
при помощи Gradle Task
В данном случае мы расположим Git Hook в корне директории/.githooks. Вариант с Gradle Task более предпочтителен, потому что нет гарантии, что разработчики будут выполнять команду в терминале: git config core.hooksPath .githooks
вне Git: корень директории/.git/hooks (там же еще лежат и примеры от Git
Git Hook, добавляющий название ветки к commit message в квадратных скобках []:
Так вы выполните 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-разработке
Недавно мы в компании провели вебинар «Model-View-Паттерны» презентационного слоя:
10 марта я продолжу эту тему и на новом вебинаре расскажу про использование паттерна MVI в KMM и пользу этого подхода в современной мобильной разработке:
1️⃣ Удобно шарить бизнес-логику между всеми платформами.
2️⃣ Можно выделять отдельный функционал в фича-модули.
3️⃣ Сам MVI позволяет легко разделять экран на различные состояния и менять их в зависимости от действий пользователя.
4️⃣ MVI очень легко ложится на Jetpack Compose (Android) и SwiftUi (iOS).
Хотите прокачать навыки Android — приходите!
Вебинар пройдёт 10 марта в 18:00
Регистрация открыта по ссылке:
https://vk.cc/clMscc
Получить полезные материалы и записаться на вебинар также можно через нашего бота:
@android_kts_bot