Pull to refresh

Использование терминала при разработке под Андроид

Java *Perfect code *Development of mobile applications *Development for Android *
Translation
Original author: César Ferreira

image


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


Моя цель в этой статье — поделиться с вами тем, как я использую терминал при разработке под Android.


iTerm2


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


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


oh-my-zsh


Когда вы запускаете терминал, он запускает оболочку под названием Bash. Bash на сегодняшний день является самой популярной оболочкой и поставляется с почти каждой операционной системой на базе UNIX. Однако есть альтернативы Bash, которые делают использование терминала более быстрым и удобным для разработчиков.


По умолчанию oh-my-zsh поставляется с плагином, который предоставляет множество полезных функций.


Автозаполнение


Zsh-autosuggestions — это быстрые/ненавязчивые предложения для вставки в zsh. Он предлагает команды по мере ввода на основе истории команд:


image


Обратный умный поиск


Вы можете нажать Control + R, чтобы выполнить обратный умный поиск в истории команд. Начните вводить команду, и оболочка будет автозаполнена с ранее введенными командами.


Затем вы можете либо нажать Enter, чтобы выполнить предложенную команду, либо используйте стрелки влево/вправо, чтобы отредактировать команду, или продолжайте нажимать Control + R для переключения между другими возможными командами.


image


DryRun


Вы наткнулись на классную библиотеку github, но что вам нужно сделать, чтобы протестить ее на вашем телефоне?


  • Нажать кнопку Скачать zip
  • Извлечь zip-файл
  • Открыть Android Studio
  • Импортировать скачанный проект
  • Sync gradle
  • Запустить проект
  • Выбрать устройство
  • Опробовать
  • Удалить папку проекта и zip-файл, когда вам это более не требуется.

Или...


Вы можете использовать dryrun:


dryrun REMOTE_GIT_URL

image


Билдим проект быстрее/без сети


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


Сборка на полной скорости:


./gradlew assembleDevelopDebug --offline

Выполнение ваших модульных тестов на полной скорости:


./gradlew test --offline

В качестве альтернативы, в Android Studio вы можете сделать gradle build полностью офлайн, активировав эту опцию:


Settings -> Build, Execution, Deployment -> Build tools -> Gradle


image


alfi


Как Android-разработчик, вы, вероятно, используете Android Studio с Gradle. Одним из замечательных преимуществ является управление зависимостями, которое автоматически загружает артефакты из репозитория и делает их доступными для вашего приложения. В принципе, вы просто добавляете одну строку в файл build.gradle, и ваша библиотека включена. Довольно легко, правда?


Но вы точно знаете эту строку?


Для этого существует ALFI:


  1. Введите: alfi NAME_OF_THE_LIBRARY
  2. Скопируйте нужную библиотеку
  3. Вставьте в build.gradle

Не требуется взаимодействие с пользовательским интерфейсом и до 20 результатов сразу!


alfi picasso

image


Понимание gradle задач


Если вы запустите ./gradlew tasks, вы получите список доступных функций gradle. То, что не указано в списке, это короткие версии команд, так что вот небольшой список допущений, которые вы можете сделать,


  • iDD == installDevelopmentDebug
  • aDD == assembleDevelopmentDebug
  • cC == connectedCheck
  • etc.

Вы можете начать делать следующим образом:


./gradlew :App:iDD 

Так гораздо компактнее.


Android Rocket Launcher


Это gradle плагин, который добавляет задачи к вашим модулям Android для установки и запуска всех вариантов, поэтому нет необходимости запускать ./gradlew installDebug и переходить на телефон, находить приложение среди 50 приложений, которые вы установили, и запускать нужное.


image


Все, что вам нужно сделать, это добавить 2 строки в build.gradle


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


Вывод юнит-тестов на консоль


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


android {
  ...
  testOptions.unitTests.all {
    testLogging {
      events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
      outputs.upToDateWhen { false }
      showStandardStreams = true
    }
  }
}

Теперь, когда вы запускаете свои тесты, они выводят что-то вроде этого:


image


Удобные logcats


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


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


pidcat github.cesarferreira.helloworld

image


Итог


  • Установите iterm2, более функциональный терминал, чем стандартный
  • Используйте оболочку oh-my-zsh для автозаполнения
  • Не забывайте про компактные команды ./gradlew iDD
  • Выполняйте команды быстрее, используя флаг --offline
  • Не открывайте приложение на телефоне вручную после установки, используйте этот плагин для автоматизации процесса
  • Присоедините процесс отладки без перезапуска приложения
  • Наслаждайтесь более удобным вывод logcat с pidcat.
Tags:
Hubs:
Total votes 21: ↑19 and ↓2 +17
Views 17K
Comments Comments 7