Приветствую. Сегодня утром состоялся ожидаемый анонс Android Studio версии 2.0, в которой google представил нам сразу две крутые фичи. Во-первых, это новый эмулятор android. Который, по словам google, «на хорошем железе работает быстрее физического устройства». Во-вторых, это новая функция «instant run», которая позволяет почти мгновенно обновлять запущенное под отладкой мобильное приложение при изменении исходного кода. Это практически «hot reload» из веб разработки. Под катом — чуть подробнее и ряд менее заметных улучшений. Новая версия уже доступна для скачивания в canary канале обновления.



Скорость сборки



По словам Stephanie Cuthbertson, одной из руководителей направления Android Studio, Google сейчас сосредоточен на стабильности и скорости работы своей среды разработки. Новая версия Android Studio собирает приложения в два — два с половиной раза быстрее чем предыдущая версия.



GPU profiler



В новой версии доступна preview версия профилировщика рендера средствами GPU. С помощью этого инструмента разработчики могут анализировать время рендеринга элементов в каждом кадре и находить «узкие места».



Новый эмулятор Android



Тормоза официального эмулятора уже стали притчей во языцах и привели к появлению альтернативных решений. Есть версия на базе VirtualBox, есть версия от Microsoft, поставляющаяся вместе с Visual Studio. Google несколько огорчал такой расклад, и вместе с новой версией Android Studio нам представлен новый эмулятор. Очень быстрый. С переработанным интерфейсом. Со всеми сервисами, камерой и GPS. А еще он может менять разрешение устройства при изменении размеров своего окна! Новая версия пока не доступна, но ее обещают показать разработчикам в ближайшее время.



Instant Run



Функция доступна и на эмуляторе, и на физическом устройстве, при условии что приложение собирается для версии Android «Ice Cream Sandwich» или старше. Stephanie Cuthbertson отказалась сообщить по какому принципу работает эта магия, но сказала что Google скоро опубликует техническую статью, в которой раскроет все детали. На данный момент функция работает далеко не для всех изменений (см. список в комментариях), но, надеюсь, через некоторое время мы получим инструмент не хуже тех, что есть в распоряжении разработчиков для web и react native.

Новую версию Android Studio можно скачать на официальном сайте. Также доступен анонс.

Комментарии (22)


  1. agent10
    24.11.2015 09:07
    +7

    Только вы забыли указать, что Instant Run на данный момент не поддерживается при следующих изменениях:

    • Add/remove/change annotations
    • Add/remove/change an instance field
    • Add/remove/change a static field
    • Add/remove a static method signature
    • Change a static method signature
    • Add/remove an instance method
    • Change an instance method signature
    • Changing which parent class the current class inherits from
    • Change the list of implemented interfaces
    • Changing static initializer of a class


    1. mdnsresponder
      24.11.2015 09:13

      Спасибо, добавил про ограниченную функциональность.


  1. voddan
    24.11.2015 09:49

    «Instant run» традиционно для JVM называется «Hot Swap». Суть в том что из-за разбиения исполняемого кода в классы возможно подменить код функции\метода, не меняя данные в полях объектов. Это с давних пор делили JRebel, правда совсем не бесплатно zeroturnaround.com/software/jrebel. Жалко ребят, теперь они out of busyness, хотя рано или поздно это должно было случиться.


    1. eyeofhell
      24.11.2015 09:55

      Судя по моему опыту с React и webpack, кроме самой возможности подменять код еще нужно серьезно перелопатить Framework, чтобы, к примеру, при изменении кода для кнопки она могла себя перерисовать в новом облике и правильно переподключить все обработчики если что поменялось. Непростая задача.


    1. gurinderu
      24.11.2015 10:02
      +1

      В каком смысле они out of business? Главная их клиентура это кровавый энтерпраиз, а там у них конкурентов нету.


    1. artemgapchenko
      24.11.2015 10:06

      А почему «out of busyness»-то? В Java мире же не только Android-проекты пишут, там вообще много чего делается. И если «Instant Run» будет сделан только для Android Studio, без переноса в Intellij Idea CE, то у ZeroTurnaround ничего не изменится: как ходили к ним за JRebel, так и будут ходить. Или я чего-то недопонял?


    1. eugenius_nsk
      27.11.2015 14:26
      +1

      HotSwap — это стандартная технология в JVM для замены классов в debug-режиме, при этом есть существенное ограничение — у классов не должно меняться API, можно менять только имплементацию методов. JRebel же делает гораздо более крутую вещь — он позволяет менять классы в том числе и с изменением API классов. Т.е. классы можно изменять практически как угодно.

      Instant Run как раз очень сильно напоминает по ограничениям HotSwap, и, как следствие JRebel отнюдь не out of business, т.к. их основное преимущество никуда не делось. Правда, я не уверен, возможны ли API changes с использованием JRebel for Android. Если нет — тогда да, JRebel fr Android ничем не отличается от Instant Run, и ребятам из ZeroTurnaround придётся напрячься, если они хотят остаться на android-рынке.


      1. eugenius_nsk
        27.11.2015 14:59
        +1

        PS. Вот, что люди пишут:

        I'm currently justifying my recent JRebel for Android purchase by noting how many things Instant Run doesn't (yet) support… ;)

        JRebel has gotten fairly robust and handles a lot of weird situations smoothly, including adding/removing annotations (e.g. `@DebugLog`), changing anonymous classes, fiddling with Retrolambda and so on.

        In any case, a bit of competition between the JRebel and Android teams can only be a good thing for us developers!


      1. antonarhipov
        28.11.2015 01:14

        Правда, я не уверен, возможны ли API changes с использованием JRebel for Android


        Возможны.


    1. antonarhipov
      28.11.2015 01:13

      Здесь есть некоторое недопонимание.

      JRebel изначально сделано для обычных Java-приложений. Instant Run в Android Studio 2.0 вообще из другого огорода.

      Есть порт JRebel-я для Android Studio: zeroturnaround.com/software/jrebel-for-android. У него нет таких ограничений, как у Instant Run. Ну и то, что Instant Run вообще был сделан, только подтверждает, что JRebel решает правильную проблему :)


  1. sim-dev
    24.11.2015 10:10

    Я фигею от интуитивности и удобства «нового модного» дизайна сайтов и манеры давать ссылки вникуда.
    P.S. поторопился…


  1. HotIceCream
    24.11.2015 10:25
    +5

    Релиз и превью немного разные вещи android-developers.blogspot.ru/2015/11/android-studio-20-preview.html


    1. rogrom
      24.11.2015 10:42

      mdnsresponder есть смысл поправить название статьи, она на Canary Channel


      1. mdnsresponder
        24.11.2015 11:17

        Поправил, спасибо!


    1. mdnsresponder
      24.11.2015 11:19

      Спасибо, поправил. Ссылку на скачивание тоже перенацелил на канареечный билд.


  1. Zabelnikov
    24.11.2015 10:33
    +8

    Так же в студии 2.0 появилась удобная навигация по xml разметке
    image


    1. andreich
      27.11.2015 18:42
      -1

      это просто из 15 идеи.
      но я не совсем понял приемущества этой навигации


  1. copyhold
    24.11.2015 13:33
    +3

    А еще эмулятор теперь видно в chrome://inspect/#devices


  1. NonGrate
    24.11.2015 13:38

    Кто-нибудь разобрался, как запускать новый эмулятор? У меня каждый раз запускается старый, никаких плей сервисов, никаких дополнительных меню.


    1. djvu
      25.11.2015 00:25

      Android Studio 2.0 will also include an Android emulator that is faster and features a new user interface. It isn’t included in today’s Canary release, but you can expect it to show up in a future Canary release.
      link


      1. mdnsresponder
        25.11.2015 08:10

        Спасибо, обновил пост. В оригинальном анонсе про это ничего не было. Умеют же люди писать чтобы запутать :)


  1. stoplinux
    24.11.2015 16:07
    +2

    Уж сильно новый эмулятор похож на genymotion