Android Studio 3.4 это мажорный релиз включающий различные новые функции и улучшения



IntelliJ IDEA 2018.3.4


  • ядро Android Studio обновлено улучшениями из IntelliJ IDEA из 2018.3.4 релиза

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-переменными, например задать какая должна быть версия соответствующих зависимостей для всего проекта

    image


    • быстрый обзор и редактирование build-переменных, уже существующих в Gradle build скриптах вашего проекта
    • добавление новых build-переменных на project- или modul-уровень напрямую из Project Structure диалога
    • ПРИМЕЧАНИЕ: если существующие build configuration файлы задают значения через сложные Groovy скрипты, вам может быть недоступно редактирование этих значений через Project Structure диалог. Кроме того, вы не можете редактировать build-файлы написанные на Kotlin используя Project Structure диалог


Модули


  • конфигурируйте свойства которые применяются во всех вариантах сборки существующих в модулях или добавляйте новые модули в ваш проект используя раздел Modules. Например, здесь вы можете сконфигурировать свойство defaultConfig или управлять конфигурациями подписания

Зависимости


  • инспектируйте и просматривайте каждую зависимость графа зависимостей вашего проекта, построенного Gradle при синхронизации проекта, следуя следующим шагам:


    1. на левой панели PSD, выберите "Dependencies"
    2. на панели "Modules" выберите модуль для которого вы хотели бы посмотреть зависимости
    3. в правой части PSD откройте панель "Resolved Dependencies" как показано ниже

      image

  • вы можете так же быстро найти и добавить зависимости в ваш проект, выбрав модуль и нажав кнопку "+" в разделе "Declared Dependencies", и затем выбрав тип зависимости которую вы хотите добавить


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

    image



Варианты сборки


  • в этом разделе PSD, создаются и конфигурируются варианты сборки и разновидности ('product flavors') для каждого модуля вашего проекта. Вы можете добавить шаблоны ('placeholders') манифеста, ProGuard файлы и назначить ключи подписания и др.

    image

Подсказки


  • посмотреть предлагаемые обновления зависимостей вашего проекта и вариантов сборки можно в разделе "Suggestions", как показано ниже

    image

Новый 'менеджер ресурсов'


  • 'менеджер ресурсов' ('Resource Manager') это новый инструмент для импорта, создания, управления и использования ресурсов вашего приложения. Вы можете открыть этот инструмент через меню "View > Tool Windows > Resource Manager". 'Менеджер ресурсов' позволяет вам делать следующее:

    image


    • Визуализировать ресурсы: вы можете предпросматривать 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

    image


  • теперь, с R8, desugaring, сжатие, обфускация, оптимизация и dexing (D8) выполняются за один шаг, как показано ниже

    image


  • 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 теперь поддерживаются в 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, а подсказка действия позволит вам добавить её в одно нажатие как показано ниже

    image
  • в частности, т.к. 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)


  1. DareDen
    22.04.2019 09:04
    +1

    А мне вот интересно, когда починят интеграцию с NDK. Начиная с 3.3 у меня опять не работают ни подсказки, ни навигация в C++ коде. А в 3.4 вообще сборка проектов с NDK сломалась :)…


    1. kiz16
      22.04.2019 10:36

      Воу-воу, не так быстро, хорошо что в 3.3.1 починили генерацию релизного APK. Думаю на фикси с NDK уйдет куда больше времени.


    1. vadim_k
      22.04.2019 15:58

      если у вас проект на cmake, попробуйте, если это не критично для вас, понизить версию до 3.6


  1. ilyamodder
    24.04.2019 16:30

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


    1. ssurrokk Автор
      24.04.2019 16:49

      Не поверите, переводил без Гугл Переводчика. Переведите лучше, мы посмотрим


      1. ilyamodder
        24.04.2019 16:51

        «Сперва добейся», серьезно? Лучше бы на вычитку время потратили, чем на комментарий


        1. ssurrokk Автор
          24.04.2019 16:53

          "Сперва добейся" это к чему? не понял. Если есть конкретные замечания — пишите, никто не говорит что этот перевод идеальный


          1. ilyamodder
            24.04.2019 17:01

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


            1. ssurrokk Автор
              24.04.2019 18:00

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


            1. ssurrokk Автор
              25.04.2019 07:38

              вообще с «комплексные скрипты» согласен. Исправил. Просто в ходе перевода мелькнула почему то мысль что в Groovy действительно могут быть какие-то особенные «комплексные» скрипты. Погуглить тогда честно скажу поленился. Сейчас погуглил — похоже не существует таких


            1. ssurrokk Автор
              25.04.2019 07:54

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