Android Studio 3.4 это мажорный релиз включающий различные новые функции и улучшения
IntelliJ IDEA 2018.3.4
- ядро Android Studio обновлено улучшениями из IntelliJ IDEA из 2018.3.4 релиза
Android Gradle plugin 3.4.0
- о новом в Android Gradle plugin 3.4.0 см. примечания к релизу
Новый диалог Project Structure
- новый Project Structure диалог (PSD) облегчает обновление зависимостей и конфигурирование различных аспектов вашего проекта, например модулей, вариантов сборки, конфигураций подписания и build-переменных
- вы можете открыть PSD выбрав "File > Project Structure" в меню. Вы можете так же открыть PSD через Ctrl+Shift+Alt+S в Windows и Linux, или Command+; (точка с запятой) в macOS. Ниже приведено описание новшеств и обновлений PSD
Переменные
раздел позволяет создавать и управлять build-переменными, например задать какая должна быть версия соответствующих зависимостей для всего проекта
- быстрый обзор и редактирование build-переменных, уже существующих в Gradle build скриптах вашего проекта
- добавление новых build-переменных на project- или modul-уровень напрямую из Project Structure диалога
- ПРИМЕЧАНИЕ: если существующие build configuration файлы задают значения через сложные Groovy скрипты, вам может быть недоступно редактирование этих значений через Project Structure диалог. Кроме того, вы не можете редактировать build-файлы написанные на Kotlin используя Project Structure диалог
Модули
- конфигурируйте свойства которые применяются во всех вариантах сборки существующих в модулях или добавляйте новые модули в ваш проект используя раздел Modules. Например, здесь вы можете сконфигурировать свойство defaultConfig или управлять конфигурациями подписания
Зависимости
инспектируйте и просматривайте каждую зависимость графа зависимостей вашего проекта, построенного Gradle при синхронизации проекта, следуя следующим шагам:
- на левой панели PSD, выберите "Dependencies"
- на панели "Modules" выберите модуль для которого вы хотели бы посмотреть зависимости
- в правой части PSD откройте панель "Resolved Dependencies" как показано ниже
вы можете так же быстро найти и добавить зависимости в ваш проект, выбрав модуль и нажав кнопку "+" в разделе "Declared Dependencies", и затем выбрав тип зависимости которую вы хотите добавить
в зависимости от типа выбранной вами зависимости, вы должны увидеть диалог подобный показанному ниже, помогающий вам добавить зависимость в модуль
Варианты сборки
- в этом разделе PSD, создаются и конфигурируются варианты сборки и разновидности ('product flavors') для каждого модуля вашего проекта. Вы можете добавить шаблоны ('placeholders') манифеста, ProGuard файлы и назначить ключи подписания и др.
Подсказки
- посмотреть предлагаемые обновления зависимостей вашего проекта и вариантов сборки можно в разделе "Suggestions", как показано ниже
Новый 'менеджер ресурсов'
'менеджер ресурсов' ('Resource Manager') это новый инструмент для импорта, создания, управления и использования ресурсов вашего приложения. Вы можете открыть этот инструмент через меню "View > Tool Windows > Resource Manager". 'Менеджер ресурсов' позволяет вам делать следующее:
- Визуализировать ресурсы: вы можете предпросматривать drawables, цвета и layouts для быстрого поиска нужного ресурса
- Массовый импорт: вы можете импортировать несколько drawable assets за раз просто перетащив их в 'менеджер ресурсов' или через мастер "Import drawables". Для доступа к мастеру нажмите кнопку "+" в левом верхнем углу окна и затем выберите "Import Drawables" из выпадающего списка
- Конвертация SVG-файлов в объекты VectorDrawables: вы можете использовать мастер "Import Drawables" для конвертации ваших SVG изображений в объекты VerctorDrawables
- Drag&Drop assets: из окна 'менеджера ресурсов' вы можете перетаскивать drawables в ваш дизайн и в XML виджеты редактора размещений ('Layout Editor')
- Альтернативные версии виджетов: теперь вы можете иметь альтернативные версии ваших ресурсов через двойной клик на ресурсе в окне "Tool". Будут видны различные созданные вами версии и какие они содежат квалификаторы
- Отображение плиткой или списком: вы можете изменять отображение в окне визуализации ваших ресурсов используя разное их размещение
для большей информации обратитесь к руководству Manage app resources
Проверка build IDs при профайлинге и отладке APKs
- когда вы предоставляете "debugging symbol файлы" общих .so библиотек внутри вашего APK, Android Studio проверяет что build ID у "debugging symbol файлов" соответствует build ID .so-библиотек внутри APK
- если вы собираете нативные библиотеки в вашем APK с build ID, Android Studio проверяет соответствует ли build ID ваших "symbol файлов" и build ID ваших нативных библиотек и сбрасывает "symbol файлы" если соответствия нет. Если вы не собираете с build ID, то предоставление некорректных "symbol файлов" может приводить к проблемам при отладке
R8 включён по умолчанию
R8 объединяет desugaring, сжатие, обфускацию, оптимизацию и dexing в один шаг, что даёт заметное улучшение производительности. R8 был введён в Android Gradle plugin 3.3.0 и теперь включён по умолчанию и для приложения и для Android library проектов, использующих плагин версии 3.4.0 или выше
изображение ниже показывает в общих чертах процесс компиляции до R8
теперь, с R8, desugaring, сжатие, обфускация, оптимизация и dexing (D8) выполняются за один шаг, как показано ниже
R8 разработан для работы с вашими существующими ProGuard правилами, так что вам нет необходимости предпринимать каких-либо действий для получения преимуществ от R8. Между тем, поскольку эта технология отличается от ProGuard, который разработан специально для Android проектов, сжатие и оптимизация могут состоять в удалении кода который ProGuard не удаляет. Поэтому, в этой маловероятной ситуации, вам может потребоваться добавить дополнительные правила чтобы сохранить этот код в итоговой сборке
при возникновении проблем в использовании R8, прочтите R8 compatibility FAQ чтобы проверить нет ли готового решения. Если решение ещё не документировано, пожалуйства сообщите о баге. Вы можете отключить R8 через добавление одной из следующих инструкций в файл gradle.properties вашего проекта:
<i>#отключение R8 только для Android Library модулей</i> android.enableR8.libraries = false</p> <p><i>#отключение R8 для всех модулей</i> android.enableR8 = false
ПРИМЕЧАНИЕ: для указанного типа сборки, если вы зададите false для useProguard в файле build.gradle вашего app-модуля, Android Gradle plugin будет использовать R8 для сжатия кода приложения для этого типа сборки, вне зависимости отключен ли R8 в файле gradle.properties вашего проекта
Navigation Editor теперь поддерживает все типы аргументов
- все типы поддерживаемые компонентом Navigation теперь поддерживаются в Navigation Editor. Для большей информации о поддерживаемых типах см. Pass data between destinations
Улучшения в Layout Editor
панель "Attributes" в Layout Editor была упрощена до одной страницы с разделами, которые можно разворачивать для настройки нужных атрибутов. Панель "Attributes" имеет так же следующие обновления:
- новый раздел "Declared Attributes" перечисляет атрибуты указанные в layout-файле и позволяет быстро добавить новые
- панель "Attributes" теперь также оснащена индикатором возле каждого атрибута который заполнен когда значением атрибута является ресурс
- теперь подсвечиваются атрибуты с ошибками и предупреждениями. Красная подсветка указывает на ошибки (например когда вы используете неверные значения размещения), а оранжевая указывает на предупреждения (например, когда вы используете hard-coded значения)
Новые подсказки действий для быстрого импорта зависимостей
- если вы начинаете использовать определённые Jetpack и Firebase классы в вашем коде, новые подсказки действий предлагают добавить необходимые Gradle library зависимости в ваш проект, если они ещё не добавлены. Например, если вы ссылаетесь на класс WorkManager первый раз, необходима зависимость android.arch.work:work-runtime, а подсказка действия позволит вам добавить её в одно нажатие как показано ниже
- в частности, т.к. Jetpack представлен отдельными пакетами (что облегчает управление ими и обновление), позсказка действия помогает вам быстро добавить только зависимости необходимые Jetpack компонентам которые вы используете
3.4.0 известные проблемы
- профайлинг отключается при равёртывании вашего приложения на устройсвах работающих на Android Q Beta
- когда используется Data Binding Library, LiveDataListener.onChanged() может падать с NullPointerException. Исправление этой проблемы будет включено в Android Studio 3.4.1 и это уже доступно в последней Preview версии Android Studio 3.5 (см. баг 122066788)