Как создать сборку и запустить приложение

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

В этом обзоре основное внимание уделяется тому, как использовать Android Studio для создания и запуска приложения для тестирования и отладки. Информацию о том, как использовать Android Studio для создания приложения, чтобы его можно было выпустить для пользователей, см. в разделе Создание приложения для выпуска для пользователей . Более подробную информацию об управлении сборкой и ее настройке с помощью Android Studio или без нее см. в разделе Настройка сборки .

Базовая сборка и запуск

Чтобы создать и запустить приложение, выполните следующие действия:

  1. На панели инструментов выберите свое приложение в меню конфигураций запуска.
  2. В меню целевого устройства выберите устройство, на котором вы хотите запустить приложение.

    Меню целевого устройства.

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

  3. Нажмите «Выполнить». .

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

Контролируйте процесс сборки

Чтобы просмотреть подробную информацию о процессе сборки, выберите «Просмотр» > «Окна инструментов» > «Построить » или нажмите «Построить». в панели окна инструментов. В окне инструмента «Сборка» отображаются задачи, которые Gradle выполняет для сборки вашего приложения, как показано на рисунке 1.

Рисунок 1. Окно инструмента сборки в Android Studio.
  1. Вкладка «Синхронизация»: отображает задачи, которые Gradle выполняет для синхронизации с файлами вашего проекта. Как и на вкладке «Вывод сборки» , если вы столкнулись с ошибкой синхронизации, выберите элементы в дереве, чтобы получить дополнительную информацию об ошибке. Также отображает сводную информацию о влиянии загрузки , чтобы определить, оказывают ли загрузки зависимостей негативное влияние на вашу сборку.
  2. Вкладка «Вывод сборки»: отображает задачи, которые выполняет Gradle, в виде дерева, где каждый узел представляет либо этап сборки, либо группу зависимостей задач. Если вы получаете ошибки во время сборки или компиляции, просмотрите дерево и выберите элемент для чтения вывода ошибки, как показано на рисунке 2.
    Рис. 2. Проверьте вкладку «Вывод сборки» на наличие сообщений об ошибках.
  3. Вкладка «Анализ сборки». Предоставляет информацию об анализе производительности вашей сборки. Дополнительные сведения см. в разделе Устранение неполадок производительности сборки с помощью Build Analyzer .
  4. Перезапуск: повторно выполняет последнее действие сборки. Если вы в последний раз запускали Build > Make Selected Module , он создаст текущий модуль. Если вы в последний раз запускали Build > Make Project , он сгенерирует промежуточные файлы сборки для всех модулей вашего проекта.
  5. Фильтры: фильтрует предупреждения, задачи или и то, и другое, которые были успешно завершены. Это может облегчить поиск проблем в выходных данных.

Если в ваших вариантах сборки используются варианты продукта, Gradle также вызывает задачи для создания этих вариантов продукта. Чтобы просмотреть список всех доступных задач сборки, нажмите «Просмотр» > «Окна инструментов» > Gradle или нажмите Gradle. в панели окна инструментов.

Если в процессе сборки возникает ошибка, Gradle может порекомендовать параметры командной строки, которые помогут вам решить проблему, например --stacktrace или --debug . Чтобы использовать параметры командной строки в процессе сборки:

  1. Откройте диалоговое окно «Настройки» или «Настройки» :
    • В Windows или Linux выберите «Файл» > «Настройки» в строке меню.
    • В macOS выберите Android Studio > «Настройки» в строке меню.
  2. Перейдите в раздел «Сборка, выполнение, развертывание» > «Компилятор» .
  3. В текстовом поле рядом с «Параметры командной строки» введите параметры командной строки.
  4. Нажмите ОК, чтобы сохранить и выйти.

Gradle применит эти параметры командной строки при следующей попытке создания приложения.

Расширенные функции сборки и запуска

Стандартного способа создания и запуска вашего приложения в Android Studio должно быть достаточно для тестирования простого приложения. Однако вы можете использовать эти функции сборки и запуска для более сложных случаев использования:

  • Чтобы развернуть приложение в режиме отладки, нажмите «Отладка». . Запуск приложения в режиме отладки позволяет устанавливать точки останова в коде, проверять переменные и оценивать выражения во время выполнения, а также запускать инструменты отладки. Дополнительные сведения см. в разделе Отладка приложения .

  • Если у вас более крупное и сложное приложение, используйте «Применить изменения» вместо «Выполнить ». . Это экономит время, поскольку вам не придется перезапускать приложение каждый раз, когда вы хотите развернуть изменение. Дополнительные сведения о применении изменений см. в разделе « Поэтапное развертывание с применением изменений» .

  • Если вы используете Jetpack Compose, Live Edit — это экспериментальная функция, которая позволяет обновлять компонуемые объекты в режиме реального времени, не нажимая повторно кнопку «Выполнить». . Это позволяет вам сосредоточиться на написании кода пользовательского интерфейса с минимальными перерывами. Дополнительную информацию см. в разделе Live Edit (экспериментальное) .

  • Если у вас есть приложение с несколькими вариантами или версиями сборки, вы можете выбрать вариант сборки для развертывания с помощью окна инструмента «Варианты сборки» . Дополнительные сведения о запуске определенного варианта сборки см. в разделе Изменение варианта сборки .

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

  • Мы рекомендуем вам использовать Android Studio для нужд разработки, но вы также можете развернуть свое приложение на виртуальном или физическом устройстве из командной строки. Дополнительные сведения см. в разделе Создание приложения из командной строки .

Постепенное развертывание с применением изменений

В Android Studio 3.5 и более поздних версиях функция «Применить изменения» позволяет вносить изменения кода и ресурсов в работающее приложение без перезапуска приложения, а в некоторых случаях и без перезапуска текущего действия. Эта гибкость помогает вам контролировать, какая часть вашего приложения перезапускается, когда вы хотите развернуть и протестировать небольшие инкрементные изменения, сохраняя при этом текущее состояние вашего устройства.

Функция «Применить изменения» использует возможности реализации Android JVMTI , которые поддерживаются на устройствах под управлением Android 8.0 (уровень API 26) или более поздних версий. Дополнительные сведения о том, как работает «Применить изменения», см. в разделе Android Studio Project Marble: Apply Changes .

Требования

Действия «Применить изменения» доступны только при выполнении следующих условий:

  • APK-файл вашего приложения создается с использованием варианта отладочной сборки.
  • Вы развертываете свое приложение на целевом устройстве или эмуляторе под управлением Android 8.0 (уровень API 26) или более поздней версии.

Используйте «Применить изменения»

Используйте следующие параметры, если хотите развернуть изменения на совместимом устройстве:

Применить изменения и перезапустить действие Значок «Применить изменения и перезапустить действие» : пытается применить изменения как в ресурсе, так и в коде, перезапуская действие, но не перезапуская приложение. Как правило, вы можете использовать эту опцию, когда вы изменили код в теле метода или изменили существующий ресурс.

Вы также можете выполнить это действие, нажав Control + Alt + F10 ( Control + Command + Shift + R в macOS).

Применить изменения кода Значок «Применить изменения кода» : пытается применить только изменения вашего кода, ничего не перезапуская. Как правило, вы можете использовать эту опцию, если вы изменили код в теле метода, но не изменили никакие ресурсы. Если вы изменили и код, и ресурсы, вместо этого используйте «Применить изменения» и «Перезапустить действие» .

Вы также можете выполнить это действие, нажав Control + F10 ( Control + Command + R в macOS).

Бегать : развертывает все изменения и перезапускает приложение. Используйте эту опцию, если внесенные вами изменения невозможно применить ни с помощью одной из опций «Применить изменения». Дополнительные сведения о типах изменений, требующих перезапуска приложения, см. в разделе «Ограничения применения изменений» .

Включить резервный запуск для применения изменений

Когда вы нажимаете «Применить изменения и перезапустить действие» или «Применить изменения кода» , Android Studio создает новый APK и определяет, можно ли применить изменения. Если изменения невозможно применить и это приведет к сбою применения изменений, Android Studio предложит вам запустить Значок запуска вместо этого снова используйте свое приложение.

Если вы не хотите получать запрос каждый раз, когда это происходит, вы можете настроить Android Studio на автоматический перезапуск приложения, когда изменения невозможно применить. Чтобы включить это поведение, выполните следующие действия:

  1. Откройте диалоговое окно «Настройки» или «Настройки» :

    • В Windows или Linux выберите в меню «Файл» > «Настройки» .
    • В macOS выберите Android Studio > «Настройки» в меню.
  2. Перейдите к Сборка, Выполнение, Развертывание > Развертывание .

  3. Установите флажки, чтобы включить автоматический резервный запуск для одного или обоих действий «Применить изменения».

  4. Нажмите ОК .

Платформозависимые изменения

Некоторые функции «Применить изменения» зависят от конкретных версий платформы Android. Чтобы применить подобные изменения, ваше приложение должно быть развернуто на устройстве под управлением этой версии Android (или более поздней версии). Например, для добавления метода требуется Android 11 или более поздняя версия.

Ограничения применения изменений

Функция «Применить изменения» предназначена для ускорения процесса развертывания приложения. Однако существуют некоторые ограничения на то, когда его можно использовать.

Изменения кода, требующие перезапуска приложения

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

  • Добавление или удаление поля
  • Удаление метода
  • Изменение сигнатур методов
  • Изменение модификаторов методов или классов
  • Изменение наследования классов
  • Изменение значений в перечислениях
  • Добавление или удаление ресурса
  • Изменение манифеста приложения
  • Изменение собственных библиотек (SO-файлов)
Библиотеки и плагины

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

  • Если библиотека или плагин вносит изменения в манифест вашего приложения, вы не сможете использовать команду «Применить изменения». Вам необходимо перезапустить приложение, чтобы увидеть изменения.
  • Если библиотека или плагин вносит изменения в файлы ресурсов вашего приложения, вы не можете использовать команду «Применить изменения кода». Значок «Применить изменения кода» . Вы должны использовать «Применить изменения» и «Перезапустить действие». Значок «Применить изменения и перезапустить действие» (или перезапустите приложение), чтобы увидеть изменения.

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

Например, Firebase Crashlytics обновляет ресурсы приложения, присваивая им уникальный идентификатор сборки во время каждой сборки, что не позволяет использовать функцию «Применить изменения кода». Значок «Применить изменения кода» и требует перезапуска активности вашего приложения, чтобы увидеть изменения. Отключите это поведение, чтобы использовать «Применить изменения кода» вместе с Crashlytics в отладочных сборках.

Код, который напрямую ссылается на контент в установленном APK

Если ваш код напрямую ссылается на контент из APK-файла вашего приложения, установленного на устройстве, этот код может вызвать сбои или некорректное поведение после нажатия кнопки «Применить изменения кода». Значок «Применить изменения кода» . Такое поведение происходит потому, что при нажатии кнопки «Применить изменения кода» базовый APK на устройстве заменяется во время установки. В этих случаях вы можете нажать «Применить изменения и перезапустить действие». Значок «Применить изменения и перезапустить действие» или «Выполнить» Значок запуска вместо.

Если при использовании «Применить изменения» у вас возникнут другие проблемы, сообщите об ошибке .

Живое редактирование

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

Узнайте больше о Live Edit

Изменить вариант сборки

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

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

  • В меню выберите «Сборка» > «Выбрать вариант сборки» .
  • В меню выберите «Просмотр» > «Окна инструментов» > «Варианты сборки» .
  • Откройте вкладку «Варианты сборки» на панели инструментов.

Для проектов без собственного кода/кода C++ на панели «Варианты сборки» есть два столбца: «Модуль» и «Активный вариант сборки» . Значение Active Build Variant для модуля определяет, какой вариант сборки IDE развертывает на подключенном устройстве, и отображается в редакторе.

Рис. 9. На панели «Варианты сборки» есть два столбца для проектов, не имеющих собственного кода/кода C++.

Чтобы переключиться между вариантами, щелкните ячейку «Активный вариант сборки» для модуля и выберите нужный вариант из списка.

Для проектов с собственным кодом или кодом C++ на панели «Варианты сборки» есть три столбца:

  • Модуль
  • Активный вариант сборки
  • Активный ABI

Значение Active Build Variant для модуля определяет вариант сборки, который IDE развертывает на вашем устройстве и отображается в редакторе. Для собственных модулей значение Active ABI определяет ABI , который использует редактор, но не влияет на то, что развертывается.

Рис. 10. На панели «Варианты сборки» добавлен столбец «Активный ABI» для проектов с собственным кодом/кодом C++.

Чтобы изменить вариант сборки или ABI, щелкните ячейку столбца «Активный вариант сборки» или «Активный ABI» и выберите нужный вариант или ABI из списка. После изменения выбора среда IDE автоматически синхронизирует ваш проект. При изменении любого столбца для модуля приложения или библиотеки изменения применяются ко всем зависимым строкам.

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

Конфликты в диалоговом окне вариантов сборки Android Studio

В диалоговом окне «Варианты сборки Android Studio» вы можете увидеть сообщения об ошибках, указывающие на конфликты между вариантами сборки, например следующие:

Окно «Вариант сборки», отображающее ошибки конфликта вариантов

Эта ошибка не указывает на проблему сборки с Gradle. Это указывает на то, что Android Studio IDE не может разрешать символы между вариантами выбранных модулей.

Например, если у вас есть модуль M1 , который зависит от варианта v1 модуля M2 , но M2 в IDE выбран вариант v2 , у вас есть неразрешенные символы в IDE. Предположим, M1 зависит от класса, который доступен только в v1 ; когда выбран v2 , этот класс неизвестен IDE. Поэтому ему не удается разрешить имя класса и отображаются ошибки в коде модуля M1 .

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

Изменение конфигурации запуска/отладки

Когда вы запускаете приложение в первый раз, Android Studio использует конфигурацию запуска по умолчанию. Конфигурация запуска определяет, следует ли развертывать ваше приложение из APK или пакета приложений Android , а также модуль для запуска, пакет для развертывания, действие для запуска, целевое устройство, настройки эмулятора, параметры Logcat и многое другое.

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

Чтобы изменить конфигурацию запуска/отладки, выберите «Выполнить» > «Редактировать конфигурации» . Дополнительные сведения см. в разделе Создание и редактирование конфигураций запуска/отладки .