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)
Комментарии (11)
ilyamodder
24.04.2019 16:30Перевели бы хоть нормально, гугл-переводчиком все пользоваться умеют.
ssurrokk Автор
24.04.2019 16:49Не поверите, переводил без Гугл Переводчика. Переведите лучше, мы посмотрим
ilyamodder
24.04.2019 16:51«Сперва добейся», серьезно? Лучше бы на вычитку время потратили, чем на комментарий
ssurrokk Автор
24.04.2019 16:53"Сперва добейся" это к чему? не понял. Если есть конкретные замечания — пишите, никто не говорит что этот перевод идеальный
ilyamodder
24.04.2019 17:01Это было резюмирование вашего предыдущего комментария. А насчет конкретных замечаний — «комплексные скрипты», порядок слов в предложениях просто оставлен таким же, как в оригинале, ну и так далее, не влезет все в коммент.
ssurrokk Автор
24.04.2019 18:00На мой взгляд вы придираетесь. Читается вполне нормально на мой взгляд. Не без узких мест конечно, но это и не руководство по управлению автопилотом Боинга
ssurrokk Автор
25.04.2019 07:38вообще с «комплексные скрипты» согласен. Исправил. Просто в ходе перевода мелькнула почему то мысль что в Groovy действительно могут быть какие-то особенные «комплексные» скрипты. Погуглить тогда честно скажу поленился. Сейчас погуглил — похоже не существует таких
ssurrokk Автор
25.04.2019 07:54что касается порядка слов — да, зачастую оставляю порядок слов не принятый в русском языке, точнее принятый, но с написанием через тире. Однако не считаю это большим огрехом, тем более что ресурс программисткий, а программисты привыкшие к английскому порядку следования слов т.к. просматривают много текстов на английском
DareDen
А мне вот интересно, когда починят интеграцию с NDK. Начиная с 3.3 у меня опять не работают ни подсказки, ни навигация в C++ коде. А в 3.4 вообще сборка проектов с NDK сломалась :)…
kiz16
Воу-воу, не так быстро, хорошо что в 3.3.1 починили генерацию релизного APK. Думаю на фикси с NDK уйдет куда больше времени.
vadim_k
если у вас проект на cmake, попробуйте, если это не критично для вас, понизить версию до 3.6