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.

Комментарии (7)


  1. x893
    25.08.2017 08:43

    То есть программировать не надо?


    1. velkonost Автор
      25.08.2017 16:01

      Почему же? В статье об этом не сказано. Пока что разработка неразлучна с программированием :-)


  1. agent10
    25.08.2017 09:28

    Мне лично понравилось только dryrun. Действительно удобно.

    По-моему мнению всё остальное делается в самой AS из коробки:
    1) Обычный Run также запускает приложения сразу
    2) Есть Attach debugger to Android process
    3) Логи также выводятся по конкретному приложению, если указать «Show only selected application»
    И будет даже быстрее по горячим клавишам, чем переключаться в консоль и набирать команды…

    Вот по флагу -offline не очень понял. Если все зависимости загружены и не указано версии как x.x.+ то всё и так будет быстро, разве нет?


    1. velkonost Автор
      25.08.2017 16:07

      По-моему мнению всё остальное делается в самой AS из коробки:


      Может быть. Но на вкус и цвет… Мне вот лично удобней пользоваться плагинами, которые перечислены в статье. Поэтому я и решил ее перевести — вдруг еще кому понравится.

      Если все зависимости загружены и не указано версии как x.x.+ то всё и так будет быстро, разве нет?

      Я этот момент не отслеживал, но, возможно, вы правы. Тогда флаг --offline можете воспринимать как альтернативу вашему способу.


  1. Pinsky
    25.08.2017 13:15
    +1

    Не думал, что использование разработчиком терминала теперь фишка.


    1. velkonost Автор
      25.08.2017 16:02

      Для кого-то да, а для кого-то нет. К тому же, в статье не учат пользоваться терминалом с нуля, а лишь рассказывается о некоторых плагинах/библиотеках, которые облегчат разработку под Андроид.


    1. fly_style
      26.08.2017 16:42

      Не троллинга, а любопытства ради — разработчики на C# под Windows используют консоль или нет?