Известные проблемы с Android Studio и плагином Android Gradle

На этой странице отслеживаются известные проблемы, связанные с обновлением функций Android Studio Otter 3 и плагином Android Gradle версии 8.13.2. Если вы столкнулись с проблемой, не указанной здесь, пожалуйста, сообщите об ошибке .

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

Известные проблемы с Android Studio

В этом разделе описаны известные проблемы, существующие в последней стабильной версии Android Studio.

Kotlin 2.0: Лямбда-выражения не могут быть разрешены в инспекторе макета.

При использовании Kotlin 2.0 лямбда-выражения не могут быть разрешены, и инспектор макета не может перейти к исходному коду лямбда-выражения обычным способом.

Временное решение : Добавьте указанную ниже опцию компилятора в качестве временного решения, пока эта проблема не будет исправлена:

kotlin {
  compilerOptions {
    freeCompilerArgs.add("-Xlambdas=class")
  }
}

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

В Android Studio Ladybug Feature Drop Canary 9 была обнаружена проблема, из-за которой информация о конфигурации запуска удалялась из проектов, открытых в этой версии. Если вы когда-либо открывали свой проект в этой версии, и запуск приложения приводит к ошибке «загрузка артефактов сборки», убедитесь, что в активной конфигурации запуска в разделе «Перед запуском» присутствует шаг «Gradle-aware Make». Для этого перейдите в «Конфигурации запуска/отладки» > «Редактировать конфигурации» , выберите активную конфигурацию запуска и убедитесь, что в разделе «Перед запуском» присутствует шаг «Gradle-aware Make». К сожалению, Android Studio не может автоматически исправить эту проблему, поскольку некоторые конфигурации запуска могли быть намеренно настроены без шага «Gradle-aware Make».

Функция «Применить изменения и перезапустить активность» не перезапускает активность на устройствах или эмуляторах с API уровня 35.

При развертывании изменений кода на устройстве с API 35 с помощью функции «Применить изменения и перезапустить приложение» приложение не перезапускается, и вы не увидите результатов изменений. Однако, если вы перезапустите приложение, вы увидите результаты изменений кода. Наша команда активно занимается расследованием этой проблемы.

В окне помощника Firebase отображается сообщение об ошибке.

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

Не удается выделить отдельный элемент представления с помощью инспектора компоновки.

Возможность изолировать представление с помощью встроенного инспектора макета временно недоступна. Мы работаем над устранением этой проблемы в будущей версии.

Не все узлы композиции можно проверить с помощью инспектора компоновки.

Если вы заметили, что не все узлы Compose доступны для просмотра при использовании инспектора макета , это, вероятно, связано с ошибкой, исправленной в версии Compose 1.5.0-alpha04. Если вы столкнулись с этой проблемой, убедитесь, что вы обновили Compose до версии 1.5.0-alpha04 или выше.

Ошибка при отображении предварительного просмотра композиции.

Начиная с Android Studio Chipmunk, если в панели проблем вы видите java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner или java.lang.ClassNotFoundException: androidx.savedstate.R$id , убедитесь, что в вашем модуле добавлена ​​зависимость debugImplementation для androidx.lifecycle:lifecycle-viewmodel-savedstate .

Если в панели проблем вы видите java.lang.NoSuchFieldError: view_tree_lifecycle_owner , убедитесь, что в вашем модуле добавлена ​​зависимость debugImplementation для androidx.lifecycle:lifecycle-runtime .

Если в панели проблем вы видите java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer или java.lang.NoClassDefFoundError: androidx/customview/poolingcontainer/PoolingContainerListener , убедитесь, что в вашем модуле добавлена ​​зависимость debugImplementation для androidx.customview:customview-poolingcontainer .

Ошибка при использовании разных паролей для ключа и хранилища ключей.

Начиная с версии 4.2, Android Studio теперь работает на JDK 11. Это обновление приводит к изменению базового поведения, связанного с ключами подписи.

При переходе в раздел «Сборка» > «Создать подписанный пакет/APK» и попытке настроить подпись приложения для пакета приложения или APK-файла, ввод разных паролей для ключа и хранилища ключей может привести к следующей ошибке:

Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores

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

После установки версии 4.2 Android Studio не запускается.

Studio пытается импортировать предыдущие файлы .vmoptions и очистить их для работы со сборщиком мусора, используемым JDK 11. Если этот процесс завершается неудачей, IDE может не запускаться для некоторых пользователей, которые задали пользовательские параметры виртуальной машины в файле .vmoptions .

Для решения этой проблемы рекомендуется закомментировать пользовательские параметры в файле .vmoptions (используя символ «#»). Файл .vmoptions можно найти в следующих местах:

Windows

C:\Users\YourUserName\AppData\ [Local|Roaming] \Google\AndroidStudio4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudio4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudio4.2/studio64.vmoptions

Если после применения этого обходного решения Studio по-прежнему не запускается, см. раздел «Studio не запускается после обновления» ниже.

Приложения, использующие Database Inspector, аварийно завершают работу на эмуляторе Android 11.

Приложения, использующие инспектор баз данных, могут аварийно завершать работу при запуске на эмуляторе Android 11, при этом в logcat может появиться ошибка следующего вида:

 Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

Для решения этой проблемы обновите эмулятор Android 11 до версии 9 или выше, перейдя в меню Инструменты > Менеджер SDK . На вкладке «Платформы SDK» установите флажок « Показать сведения о пакете» и выберите версию 9 или выше эмулятора Android 11.

Студия не запускается после обновления

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

Для Android Studio 4.1 и более поздних версий:

  • Windows: %APPDATA%\Google\AndroidStudio <version>
    Пример: C:\Users\ your_user_name \AppData\Roaming\Google\AndroidStudio4.1

  • macOS: ~/Library/Application Support/Google/AndroidStudio <version>
    Пример: ~/Library/Application Support/Google/AndroidStudio4.1

  • Linux: ~/.config/Google/AndroidStudio <version> и ~/.local/share/Google/AndroidStudio <version>
    Пример: ~/.config/Google/AndroidStudio4.1 и ~/.local/share/Google/AndroidStudio4.1

Для Android Studio 4.0 и более ранних версий:

  • Windows: %HOMEPATH%\.AndroidStudio <version> \config
    Пример: C:\Users\ your_user_name \.AndroidStudio3.6\config

  • macOS: ~/Library/Preferences/AndroidStudio <version>
    Пример: ~/Library/Preferences/AndroidStudio3.6

  • Linux: ~/.AndroidStudio <version> /config
    Пример: ~/.AndroidStudio3.6/config

Обратите внимание, что для версий Android Studio Canary и Beta каталог конфигурации — PreviewX.Y , а не XY для <version> . Например, в сборках Android Studio 4.1 Canary используется каталог AndroidStudioPreview4.1 , а не каталог AndroidStudio4.1 , который используется для версий Release Candidate и Stable.

Проблема компиляции в многоплатформенных проектах Kotlin.

В коде Kotlin MPP могут возникать ошибки компиляции из-за отсутствующих символов. Обновление вашего плагина Kotlin до версии 1.4 должно решить эту проблему.

Конфликты сопоставления клавиш в Linux

В Linux некоторые сочетания клавиш конфликтуют со стандартными сочетаниями клавиш Linux и популярными оконными менеджерами, такими как KDE и GNOME. Эти конфликтующие сочетания клавиш могут работать некорректно в Android Studio.

Более подробную информацию об этой проблеме (включая возможные обходные пути) можно найти в системе отслеживания ошибок IntelliJ .

Мелкий текст пользовательского интерфейса в ChromeOS

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

  1. Откройте окно настроек , нажав «Файл» > «Настройки».
  2. Перейдите в раздел «Внешний вид и поведение» > «Внешний вид» .
  3. Выберите «Использовать пользовательский шрифт» .
  4. Увеличьте размер шрифта.
  5. В окне настроек перейдите в раздел Редактор > Шрифт .
  6. Увеличьте размер шрифта.
  7. Нажмите ОК .

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

В этом разделе описаны известные проблемы, связанные с редактором кода.

Зависание ввода с клавиатуры — проблемы с "iBus" в Linux.

Известны некоторые проблемы взаимодействия между демоном iBus в Linux и Android Studio. В некоторых сценариях IDE перестаёт реагировать на ввод с клавиатуры или начинает вводить случайные символы. Эта ошибка вызвана отсутствием синхронизации между iBus и XLib + AWT и уже была сообщена разработчикам JetBrains и iBus . В настоящее время существует три способа решения этой проблемы:

  • Решение 1: Принудительно переведите iBus в синхронный режим. Перед запуском Android Studio выполните в командной строке следующую команду:
    $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
  • Обходной путь 2: Отключение ввода iBus в Android Studio. Чтобы отключить ввод iBus только для Android Studio, выполните следующую команду в командной строке:
    $ XMODIFIERS= ./bin/studio
    Этот обходной путь отключает методы ввода только для Android Studio, а не для других запущенных приложений. Обратите внимание, что если вы перезапустите демон во время работы Android Studio (например, запустив ibus-daemon -rd ), вы фактически отключите методы ввода для всех остальных приложений, а также можете вызвать сбой JVM Android Studio с ошибкой сегментации.
  • Обходной путь 3: Дважды проверьте сочетания клавиш, чтобы убедиться, что сочетание клавиш для ввода «Далее» не установлено на Control+Space, поскольку это также сочетание клавиш для автозавершения кода в Android Studio. В Ubuntu 14.04 (Trusty) сочетание клавиш Super+Space установлено по умолчанию, но настройки из предыдущих версий могут быть сохранены. Чтобы проверить сочетания клавиш, запустите ibus-setup в командной строке, чтобы открыть окно настроек IBus. В разделе «Сочетания клавиш» проверьте метод ввода «Далее» . Если он установлен на Control+Space, измените его на Super+Space или другое сочетание клавиш по вашему выбору.

Конфигурация проекта

В этом разделе описаны известные проблемы, связанные с конфигурацией проекта и синхронизацией Gradle.

Синхронизация Gradle завершилась с ошибкой: Broken Pipe

Проблема в том, что демон Gradle пытается использовать IPv4 вместо IPv6.

Ошибки "узел не аутентифицирован" при синхронизации Gradle или SDK Manager.

Основная причина этих ошибок — отсутствие сертификата в каталоге $JAVA_HOME/jre/lib/certificates/cacerts . Для устранения этих ошибок выполните следующие действия:

  • Если вы используете прокси-сервер, попробуйте подключиться напрямую. Если прямое подключение работает, то для подключения через прокси-сервер вам может потребоваться использовать keytool для добавления сертификата прокси-сервера в файл cacerts.
  • Переустановите поддерживаемую, неизмененную версию JDK. Известна проблема, затрагивающая пользователей Ubuntu, которая приводит к пустому файлу /etc/ssl/certs/java/cacerts . Чтобы обойти эту проблему, выполните следующую команду в командной строке:
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

Развертывание

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

[Только для Mac OS] Инкрементальные обновления не применяются из-за проблемы с отслеживанием файлов Gradle в проектах, сохраненных в /System/Volumes/Data

Проблема Gradle 18149 затрагивает версии плагинов Gradle для Android 7.0 и выше, поскольку они требуют Gradle версии 7.0 и выше . Начиная с Gradle 7.0, отслеживание изменений файлов включено по умолчанию. Если вы работаете на Mac OS и ваш проект сохранен в /System/Volumes/Data , отслеживание изменений файлов в Gradle не будет корректно отслеживать изменения файлов. Это приведет к тому, что система сборки не увидит никаких изменений файлов и, следовательно, не обновит APK-файлы. В этом случае код инкрементального развертывания ничего не будет делать, поскольку локальное состояние APK совпадает с состоянием на устройстве.

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

Эмулятор Android HAXM на macOS High Sierra

Для оптимальной совместимости и стабильности эмулятора Android на macOS High Sierra (10.13) требуется HAXM 6.2.1+. Однако установка расширений ядра, таких как HAXM, в macOS 10.13 более сложная. Необходимо вручную разрешить установку самого расширения ядра следующим образом:

  1. Для начала попробуйте установить последнюю версию HAXM из менеджера SDK .
  2. В macOS перейдите в «Системные настройки» > «Безопасность и конфиденциальность» .
  3. Если вы видите предупреждение о том, что загрузка системного программного обеспечения от разработчика "Intel Corporation Apps" заблокирована , нажмите " Разрешить ":

Для получения дополнительной информации и обходных решений см. эту веб-страницу Apple и сообщение об ошибке № 62395878 .

Применить изменения

В этом разделе описаны известные проблемы, связанные с применением изменений .

Новое название приложения не применено

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

Проблема в среде выполнения Android приводит к ошибке.

Если вы используете устройство под управлением Android 8.0 или 8.1, при попытке применить определенные типы изменений (особенно если вы используете Kotlin) вы можете столкнуться с сообщением "VERIFICATION_ERROR". Это сообщение вызвано проблемой в среде выполнения Android, которая исправлена ​​в Android 9.0 и выше. Хотя эта проблема приводит к сбою применения изменений, вы все еще можете запустить приложение. значок «Запуск» Чтобы увидеть изменения, снова откройте приложение. Однако мы рекомендуем обновить устройство до Android 9.0 или более поздней версии.

Отладка и тестирование

В этом разделе описаны известные проблемы, связанные с отладкой и тестированием вашего приложения.

При запуске из Android Studio JUnit проверяет наличие отсутствующих ресурсов в classpath.

Если в ваших Java-модулях есть определенные папки с ресурсами, то эти ресурсы не будут найдены при запуске тестов из IDE. Запуск тестов с помощью Gradle из командной строки будет работать. Выполнение задачи check Gradle из IDE также будет работать. Подробнее см. проблему 64887 .

Эта проблема возникает из-за того, что начиная с IntelliJ 13, которая требует наличия только одной папки в качестве пути к классам, сборщик IntelliJ копирует все ресурсы в эту папку сборки, но Gradle не копирует эти ресурсы.

  • Обходной путь 1: Запустите задачу check Gradle из IDE, а не запускайте модульный тест.
  • Обходной путь 2: Обновите скрипт сборки, чтобы он вручную копировал ресурсы в папку сборки. Подробнее см. комментарий #13 .

Запуск JUnit-тестов может привести к двойной компиляции кода.

При создании нового проекта конфигурация шаблона JUnit может быть создана с помощью двух шагов «перед запуском»: Make и Make с поддержкой Gradle. Затем эта конфигурация распространяется на все созданные конфигурации запуска JUnit.

  • Чтобы исправить проблему для текущего проекта, нажмите «Запуск» > «Изменить конфигурации» и измените конфигурацию JUnit по умолчанию, включив в нее только шаг Make, поддерживающий Gradle.
  • Чтобы исправить эту проблему для всех будущих проектов, нажмите Файл > Закрыть проект . Вы должны увидеть приветственный экран. Затем нажмите Настроить > Настройки проекта по умолчанию > Конфигурации запуска и измените конфигурацию JUnit, чтобы она включала только шаг Make с поддержкой Gradle.

Некоторые конфигурации тестового запуска не работают.

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

  • Конфигурации запуска Gradle (с иконкой в ​​виде логотипа Gradle) не работают.
  • Настройки запуска JUnit (значок которых не содержит зелёного логотипа Android) не применяются к инструментальным тестам, которые нельзя запустить на локальной JVM.
Android Studio также запоминает конфигурацию запуска, созданную в данном контексте (например, при щелчке правой кнопкой мыши по определенному классу или методу), и в будущем не будет предлагать запуск в другой конфигурации. Чтобы исправить это, щелкните «Запуск» > «Изменить конфигурации» и удалите неправильно созданные конфигурации.

Добавление точек останова Java при отладке нативного кода

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

Выход из нативного отладчика

При использовании автоматического или двойного отладчика для отладки кода Java и нативного кода, если вы переходите к выполнению нативной функции из вашего кода Java (например, отладчик приостанавливает выполнение на строке вашего кода Java, которая вызывает нативную функцию, и вы нажимаете кнопку «Шаг внутрь»), если вы переходите к выполнению нативной функции из вашего кода Java, отладчик приостанавливает выполнение на строке вашего кода Java, которая вызывает нативную функцию, и вы нажимаете кнопку «Шаг внутрь». Если вы хотите вернуться к своему Java-коду, нажмите «Возобновить программу». (вместо Step Out) или Перешагнуть). Обработка вашего приложения по-прежнему будет приостановлена, поэтому нажмите «Возобновить программу». Чтобы возобновить выполнение, перейдите во вкладку your-module -java . Для получения дополнительной информации см. проблему 224385 .

Нативный отладчик зависает при загрузке библиотек.

При первом использовании нативного отладчика после обновления до Android Studio 4.2 и выше, он может перестать отвечать при загрузке библиотек с устройства Android. Эта проблема является устойчивой и сохраняется даже после остановки и перезапуска отладчика. Для решения этой проблемы удалите кэш LLDB по адресу $USER/.lldb/module-cache/ .

Встроенный отладчик завершается с ошибкой "Процесс отладчика завершился с кодом выхода 127".

Эта ошибка возникает на платформах Linux при запуске нативного отладчика. Она указывает на то, что одна из библиотек, необходимых для работы нативного отладчика, не установлена ​​в локальной системе. Название отсутствующей библиотеки может быть уже указано в файле idea.log . Если нет, вы можете использовать терминал, чтобы перейти в каталог установки Android Studio и выполнить команду bin/lldb/bin/LLDBFrontend --version чтобы узнать, какие библиотеки отсутствуют. Как правило, отсутствующей библиотекой является ncurses5 , поскольку в некоторых последних дистрибутивах Linux уже обновлена ​​до ncurses6 .

Профайлеры

В этом разделе описаны известные проблемы, связанные с программами профилирования.

Профилировщик собственной памяти: профилирование недоступно при запуске приложения.

Функция профилирования собственной памяти в настоящее время недоступна при запуске приложения. Эта опция будет доступна в одном из следующих релизов.

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

Ошибки тайм-аута в профилировщике ЦП

При выборе конфигураций « Примеры методов Java» или «Трассировка методов Java» в профилировщике ЦП Android Studio могут возникать ошибки «Не удалось остановить запись». Часто это ошибки тайм-аута, особенно если в файле idea.log отображается следующее сообщение об ошибке:

Wait for ART trace file timed out

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

Если у вас возникают проблемы с таймаутом при использовании профилировщика, пожалуйста, сообщите об ошибке , указав марку/модель вашего устройства (устройств) и все соответствующие записи из файлов idea.log и logcat.

Исключение ADB при отладке или профилировании

При использовании Platform Tools 29.0.3 нативная отладка и профилировщики Android Studio могут работать некорректно, и в файле idea.log при выборе Help > Show Log могут отображаться ошибки типа "AdbCommandRejectedException" или "Failed to connect port". Обновление Platform Tools до версии 29.0.4 или выше устраняет обе проблемы.

Для обновления инструментов платформы выполните следующие действия:

  1. Откройте менеджер SDK в Android Studio, выбрав Инструменты > Менеджер SDK или нажав Менеджер SDK. на панели инструментов.
  2. Установите флажок рядом с пунктом «Android SDK Platform-Tools» , чтобы отобразилась галочка. Значок загрузки. должно отображаться в левой колонке.
  3. Нажмите «Применить» или «ОК» .

Плагин препятствует работе окна вывода результатов сборки.

Использование плагина CMake simple highlighter предотвращает отображение содержимого в окне «Вывод сборки». Сборка выполняется, и вкладка «Вывод сборки» появляется, но никакой вывод не печатается ( проблема #204791544 ).

Порядок установки предотвращает запуск.

Установка более новой версии Android Studio перед установкой более старой может помешать запуску последней. Например, если вы сначала установите тестовую версию Android Studio, а затем попытаетесь установить и запустить стабильную версию, она может не запуститься. В таких случаях необходимо очистить кэш, чтобы запустить стабильную (более старую) версию. На macOS для очистки кэша удалите каталог Library/ApplicationSupport/Google/AndroidStudio version_number . На Windows для очистки кэша используйте очистку диска .

Программа Espresso Test Recorder не работает с Compose.

Инструмент записи тестов Espresso не работает с проектами, включающими Compose. Чтобы создать тесты пользовательского интерфейса для проектов, включающих Compose, см. раздел «Тестирование макета Compose» .

Конфликты сочетаний клавиш Logcat с неанглийскими раскладками клавиатуры.

Если вы используете неанглийскую раскладку клавиатуры, стандартное сочетание клавиш Logcat может конфликтовать с этой раскладкой и не позволять вам вводить определенные символы при редактировании текста в Android Studio. Чтобы обойти эту проблему, удалите или переназначьте конфликтующее сочетание клавиш Logcat. Чтобы отредактировать сочетания клавиш Logcat в Android Studio, перейдите в Android Studio > Настройки > Сочетания клавиш и найдите Logcat в списке сочетаний клавиш. Для получения дополнительной информации см. проблему #263475910 .

Эта проблема будет решена путем удаления ярлыка Logcat в Android Studio Electric Eel Patch 1.

Известные проблемы с плагином Android Gradle.

В этом разделе описаны известные проблемы, существующие в последней стабильной версии плагина Android Gradle.

Не все зависимости библиотек с динамическими функциями проходят проверку синтаксиса.

При запуске lint с checkDependencies = true из модуля приложения зависимости динамических библиотек не проверяются, если они не являются зависимостями самого приложения ( проблема #191977888 ). В качестве обходного пути задачу lint можно запустить для этих библиотек.

Подписной файл, названный символами возврата каретки.

Подписание JAR-файлов (схема v1) не поддерживает имена файлов, содержащие символы возврата каретки ( проблема #63885809 ).

Изменение результатов вариантов во время сборки может не сработать.

Использование API вариантов для управления результатами вариантов не работает с новым плагином. Однако он по-прежнему работает для простых задач, таких как изменение имени APK во время сборки, как показано ниже:

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

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

Функция manifestOutputFile больше недоступна.

Метод processManifest.manifestOutputFile() больше недоступен, и при его вызове вы получите следующую ошибку:

A problem occurred configuring project ':myapp'.
   Could not get unknown property 'manifestOutputFile' for task
   ':myapp:processDebugManifest' of type
   com.android.build.gradle.tasks.ProcessManifest.

Вместо вызова manifestOutputFile() для получения файла манифеста для каждого варианта, вы можете вызвать метод processManifest.manifestOutputDirectory() который вернет путь к каталогу, содержащему все сгенерированные манифесты. Затем вы можете найти нужный манифест и применить к нему свою логику. В приведенном ниже примере код версии в манифесте изменяется динамически:

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {
            // Stores the path to the maifest.
            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            // Stores the contents of the manifest.
            def manifestContent = file(manifestPath).getText()
            // Changes the version code in the stored text.
            manifestContent = manifestContent.replace('android:versionCode="1"',
                    String.format('android:versionCode="%s"', generatedCode))
            // Overwrites the manifest with the new text.
            file(manifestPath).write(manifestContent)
        }
    }
}

Проблемы с поддержкой AIDL в AGP 7.3.0 и Kotlin 1.7.x

Использование AGP 7.3.0 с KAPT в Kotlin 1.7.x приводит к удалению наборов исходных файлов AIDL для конкретных вариантов сборки. Вы по-прежнему можете использовать другие наборы исходных файлов AIDL, включая наборы для main/ , типов сборки, вариантов продукта и комбинаций вариантов продукта. Если вам необходимо использовать наборы исходных файлов AIDL, специфичные для вариантов, продолжайте использовать Kotlin 1.6.21.

Исправлены известные проблемы

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

Исправлено в Android Studio 2021.1.1

  • Отсутствует вывод команды lint : при установке параметра LINT в stdout UP-TO-DATE текстовый вывод команды lint не отображается ( проблема #191897708 ). Исправлено в AGP 7.1.0-alpha05.
  • Проблемы с модульным тестированием проекта приложения, использующего плагин Hilt : путь к классам для модульных тестов содержит неинструментированные классы приложения, что означает, что Hilt не инструментирует классы приложения для обработки внедрения зависимостей при запуске модульных тестов ( проблема #213534628 ). Исправлено в AGP 7.1.1.

Исправлено в Android Studio 2020.3.1

  • Исключения Lint в проектах Kotlin: в проектах Kotlin, где установлено checkDependencies = true могут возникать исключения или ошибки, связанные с нулевым указателем ( проблема #158777858 ).

Исправлено в Android Studio 4.2

  • IDE зависает на macOS Big Sur: Android Studio 4.1 может зависнуть при открытии диалогового окна.

Исправлено в Android Studio 4.1

  • Перезапуск для применения настроек памяти из предыдущей версии IDE: После обновления Android Studio необходимо перезапустить Android Studio, чтобы применить все настройки памяти, перенесенные из более ранней версии IDE.
  • Класс манифеста с пользовательскими строками разрешений больше не генерируется по умолчанию: если вы хотите сгенерировать класс, установите android.generateManifestClass = true .

Исправлено в Android Studio 3.6

  • Ошибка установки APK в LineageOS : развертывание вашего приложения на устройствах, работающих под управлением определенных версий LineageOS или CyanogenMod, может завершиться неудачей и вызвать исключение INSTALL_PARSE_FAILED_NOT_APK .

    В Android Studio 3.6 Beta 1 и более поздних версиях IDE обрабатывает это исключение, выполняя полную установку приложения при развертывании на устройствах LineageOS или CyanogenMod, что может привести к увеличению времени развертывания.

Исправлено в Android Studio 3.5.2

  • Неправильный стиль XML-кода : При редактировании XML-кода IDE применила некорректный стиль кода, если вы выбрали пункт «Код > Переформатировать код» в строке меню.

Исправлено в Android Studio 3.3.1

  • Ошибки нехватки памяти при сканировании проектов на C++ : Когда Gradle сканирует проект, содержащий код C++ в нескольких местах на одном диске, сканирование включает все каталоги, расположенные ниже первого общего каталога. Сканирование большого количества каталогов и файлов может привести к ошибкам нехватки памяти.

    Для получения более подробной информации по этому вопросу ознакомьтесь с описанием ошибки , связанной с данной проблемой.