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

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

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

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

В этом разделе описаны известные проблемы в Android Studio.

Android Studio Panda 3 несовместима с плагином IntelliJ Develocity 1.2.0

При использовании плагина Develocity IDE версии 1.2.0, начиная с Android Studio Panda 3 Canary 1, запуск завершается со следующей ошибкой (проблема 492439205):

Found interface com.android.tools.idea.gradle.project.build.invoker.GradleBuildInvoker$Request, but class was expected

Разработчики Develocity работают над исправлением для новой версии.

Временное решение. Отключите плагин Develocity IDE версии 1.2.0. Это решит проблему, пока несовместимость не будет устранена в новой версии плагина.

Kotlin 2.0: лямбда-выражения не распознаются в инспекторе макетов

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

Временное решение. Добавьте параметр компилятора, указанный ниже.

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

Запуск конфигурации без Gradle-aware Make в разделе Before launch приводит к ошибке развертывания.

В Android Studio Ladybug Feature Drop Canary 9 была проблема, из-за которой информация о конфигурации запуска удалялась из проектов, открытых в этой версии. Если вы открывали проект в этой версии и при запуске приложения возникает ошибка загрузки артефактов сборки, убедитесь, что в активной конфигурации запуска в разделе "Перед запуском" есть шаг "Сборка с учетом Gradle". Чтобы проверить это, нажмите Run/Debug Configurations (Конфигурации выполнения/отладки) > Edit Configurations (Изменить конфигурации), выберите активную конфигурацию выполнения и убедитесь, что в разделе Before launch (Перед запуском) есть шаг Gradle-aware Make (Сборка с учетом Gradle). К сожалению, Android Studio не может исправить эту проблему автоматически, поскольку некоторые конфигурации запуска могли быть намеренно настроены без шага Gradle-aware Make.

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

Если вы развернете изменения кода на устройстве с API 35, выбрав "Применить изменения и перезапустить Activity", приложение не будет перезапущено и вы не увидите результат изменений. Если вы перезапустите приложение, то увидите, как изменения в коде повлияли на его работу. Наши специалисты уже работают над решением проблемы.

В окне Firebase Assistant появляется сообщение об ошибке

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

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

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

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

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

Ошибка при отрисовке предварительного просмотра Compose

Если вы используете 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. Это обновление меняет принцип работы ключей подписи.

Если вы перейдете в раздел Build (Сборка) > Generate Signed Bundle / APK (Создать подписанный набор App Bundle или APK-файл) и попытаетесь настроить подпись приложения для набора App Bundle или APK-файла, ввод разных паролей для ключа и хранилища ключей может привести к следующей ошибке:

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

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

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

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

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

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

Чтобы устранить эту проблему, обновите эмулятор Android 11 до версии 9 или более поздней. Для этого выберите Tools (Инструменты) > SDK Manager (Менеджер SDK). На вкладке SDK Platforms (Платформы SDK) установите флажок Show Package Details (Показать сведения о пакете) и выберите версию 9 или более позднюю для эмулятора Android 11.

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 – PreviewX.Y, а не X.Y для <version>. Например, в сборках Android Studio 4.1 Canary используется каталог AndroidStudioPreview4.1, а не AndroidStudio4.1, который используется для релиз-кандидатов и стабильных выпусков.

Проблема с компиляцией в мультиплатформенных проектах Kotlin

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

Конфликты привязки клавиш в Linux

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

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

Мелкий текст в интерфейсе ChromeOS

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

  1. Откройте окно Settings (Настройки), нажав File (Файл) > Settings (Настройки).
  2. Перейдите в раздел Appearance & Behavior (Внешний вид и поведение) > Appearance (Внешний вид).
  3. Выберите Использовать собственный шрифт.
  4. Увеличить размер шрифта
  5. В окне Settings (Настройки) выберите Editor (Редактор) > Font (Шрифт).
  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. Проверьте, не назначено ли сочетание клавиш Ctrl + Пробел для переключения на следующий способ ввода, поскольку оно также используется в Android Studio для автозаполнения кода. В Ubuntu 14.04 (Trusty) по умолчанию используется сочетание клавиш Super + Пробел, но настройки предыдущих версий могут сохраняться. Чтобы проверить сочетания клавиш, выполните в командной строке ibus-setup. Откроется окно настроек IBus. В разделе Быстрые клавиши проверьте, что указано в пункте Следующий способ ввода. Если это сочетание клавиш Ctrl + Пробел, измените его на Super + Пробел или другое сочетание клавиш по вашему выбору.

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

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

Ошибка синхронизации Gradle: разорванное соединение

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

  • Решение 1. В Linux добавьте в файл ~/.profile или ~/.bash_profile следующую строку:
    export _JAVA_OPTIONS="-Djava.net.preferIPv6Addresses=true"
  • Способ 2. В файле vmoptions Android Studio замените строку -Djava.net.preferIPv4Addresses=true на -Djava.net.preferIPv6Addresses=true. Подробную информацию вы найдете в руководстве пользователя по работе с IPv6.

Ошибки "peer not authenticated" (одноранговый узел не аутентифицирован) при синхронизации Gradle или в SDK Manager

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

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

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

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

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

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

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

HAXM для эмулятора Android в macOS High Sierra

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

  1. Сначала попробуйте установить последнюю версию HAXM из SDK Manager.
  2. В macOS выберите Системные настройки > Защита и безопасность.
  3. Если вы видите предупреждение Загрузка системного ПО от компании Intel Corporation Apps заблокирована, нажмите Разрешить.

Дополнительную информацию и способы решения проблемы можно найти на этой странице Apple и в описании ошибки 62395878.

Применение изменений

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

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

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

Ошибка в Android Runtime

Если вы используете устройство с Android 8.0 или 8.1, при попытке применить определенные типы изменений могут появляться сообщения VERIFICATION_ERROR (особенно если вы используете Kotlin). Это сообщение связано с проблемой в Android Runtime, которая устранена в Android 9.0 и более поздних версиях. Хотя из-за этой проблемы функция "Применить изменения" не работает, вы все равно можете нажать Run (Запустить) Значок бега, чтобы увидеть изменения. Однако мы рекомендуем обновить устройство до Android 9.0 или более поздней версии.

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

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

В тестах JUnit отсутствуют ресурсы в пути к классам при запуске из Android Studio

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

Эта проблема возникает, поскольку в IntelliJ 13 в качестве пути к классам можно указать только одну папку. Конструктор IntelliJ копирует все ресурсы в эту папку сборки, но Gradle не копирует ресурсы.

  • Решение 1. Запустите задачу Gradle check из IDE, а не модульное тестирование.
  • Вариант 2. Обновите скрипт сборки, чтобы вручную скопировать ресурсы в папку сборки. Подробную информацию можно найти в комментарии № 13.

При запуске тестов JUnit код может компилироваться дважды.

При создании нового проекта конфигурация JUnit шаблона может быть создана с двумя шагами "Перед запуском": Make и Gradle-aware Make. Затем эта конфигурация распространяется на все созданные конфигурации запуска JUnit.

  • Чтобы устранить проблему в текущем проекте, нажмите Run (Запустить) > Edit Configurations (Изменить конфигурации) и измените конфигурацию JUnit по умолчанию, чтобы включить только шаг Make, поддерживающий Gradle.
  • Чтобы устранить проблему для всех будущих проектов, нажмите File > Close Project (Файл > Закрыть проект). Вы должны увидеть экран приветствия. Затем нажмите Configure (Настроить) > Project Defaults (Настройки проекта по умолчанию) > Run Configurations (Конфигурации запуска) и измените конфигурацию JUnit, чтобы включить только шаг Make, поддерживающий Gradle.

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

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

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

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

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

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

Если вы используете отладчик Auto (Авто) или Dual (Двойной) для отладки кода Java и нативного кода, то можете перейти к нативной функции из кода Java. Например, отладчик приостанавливает выполнение на строке кода Java, которая вызывает нативную функцию, и вы нажимаете Step Into (Шаг с заходом) . Чтобы вернуться к коду Java, нажмите Resume Program (Продолжить выполнение программы) (а не Step Out (Шаг с выходом) или Step Over (Шаг с обходом) ). Процесс приложения по-прежнему будет приостановлен, поэтому нажмите Resume Program (Продолжить выполнение программы) на вкладке 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, чтобы получать профили запуска.

Ошибки, связанные с истечением времени ожидания, в Профилировщике ЦП

При выборе конфигураций Sample Java Methods (Выборка методов Java) или Trace Java Methods (Трассировка методов Java) в профилировщике ЦП Android Studio могут возникать ошибки "Не удалось остановить запись". Часто это ошибки, связанные с истечением времени ожидания, особенно если в файле idea.log вы видите следующее сообщение об ошибке:

Wait for ART trace file timed out

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

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

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

При использовании Platform Tools 29.0.3 нативная отладка и профилировщики Android Studio могут работать некорректно. В файле idea.log может появиться сообщение AdbCommandRejectedException или Failed to connect port (Не удалось подключиться к порту). Чтобы проверить это, выберите Help (Справка) > Show Log (Показать журнал). Чтобы устранить обе проблемы, обновите Platform Tools до версии 29.0.4 или более поздней.

Чтобы обновить Platform Tools, выполните следующие действия:

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

Плагин мешает работе окна Build Output

При использовании плагина CMake simple highlighter контент не появляется в окне Build Output (Выходные данные сборки). Сборка выполняется, и появляется вкладка Build Output (Выходные данные сборки), но выходные данные не выводятся (проблема № 204791544).

Порядок установки не позволяет запустить приложение

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

Espresso Test Recorder не работает с Compose

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

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

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

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

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

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

Не все зависимости библиотек динамических функций проверяются с помощью lint

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

Файл подписи содержит символы возврата каретки

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

Изменение выходных данных вариантов во время сборки может не работать.

В новом плагине не работает управление выходными данными вариантов с помощью Variant 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 Rabbit 1 Canary 5

  • Параллельная синхронизация Gradle. В Android Studio Quail 1 свойство org.gradle.parallel=true в gradle.properties больше не включает параллельное получение моделей во время синхронизации Gradle при использовании Gradle версии 9.4 или выше. Это привело к регрессии времени синхронизации для крупных проектов. Новое свойство org.gradle.tooling.parallel включает параллельное получение моделей, но не для построителей моделей IDEA. Это ограничение было снято.

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

  • Отсутствие выходных данных lint. Текстовые выходные данные lint не выводятся в stdout, когда задача lint имеет статус UP-TO-DATE (ошибка 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

  • Перезапустите Android Studio, чтобы применить настройки памяти из предыдущей версии IDE. После обновления 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 интегрированная среда разработки применяла неправильный стиль кода, когда вы выбирали в строке меню Code (Код) > Reformat Code (Переформатировать код).

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

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

    Дополнительную информацию об этой проблеме можно найти в отчете об ошибке.