LINUX.ORG.RU

Android Studio 4.0 и анонс презентации Android 11 beta 1

 , , , ,


1

3

Состоялся стабильный релиз Android Studio 4.0 — интегрированной среды разработки (IDE) для работы с платформой Android. Подробнее об изменениях в описании релиза и в YouTube презентации. Вместе с этим анонсом Google распространил приглашение для разработчиков на онлайн-презентацию Android 11 beta 1, которая состоится 3 июня 2020 года. Список изменений в среде разработки:

Изменения для работы с дизайном:

  • Motion Editor - новый инструмент для создания анимации (движения объектов)
  • Layout Inspector - обновленный инструмент, с упрощением визуального контроля пользовательского интерфейса
  • Layout Validation - новый инструмент для сравнения внешнего вида приложения на устройствах с разными экранами

Изменения для разработки:

  • CPU Profiler - оптимизирован интерфейс, для упрощения анализа производительности
  • R8 - обновление схем подсветки и проверки синтаксиса
  • Внутренняя оптимизация с использованием обновленного IntelliJ IDEA 2019.3.3
  • Поддержка Clangd

Изменения для сборки:

  • Build Analyzer дополнен возможностью отслеживания регрессий
  • Поддержка Java 8+ для разработки под старые версии Android
  • Базовая поддержка DSL скриптов Kotlin (KTS)

>>> Подробности

★★★★★

Проверено: leave ()
Последнее исправление: linuks (всего исправлений: 13)

Поддержка Java 8+ для разработки под старые версии Android

Прочитал в подробностях. Как я и думал, предлагают носить рантайм с собой, притом вкомпиленный на этапе генерации dex через их новый компилятор(d8).

Лучше, чем ничего. Интересно насколько .dex и .oat от этого жирнее становятся.

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 2)

Пишу под ведро 5+ лет и не понимаю, зачем они педалируют эти GUI редакторы разметки. Проблема ведь будет 1 в 1 как у iOS с их сторибордами, когда 2 человека подвигали одну и ту же разметку и хрен ты потом это смёрджишь в гите. Да и руками получается проще и чище, имхо. А по теме: 4 студия ничем особо не отличается от 3-ей, всё так же тормозит и жрёт ресурсы.

Jefail ★★★★
()
Ответ на: комментарий от Jefail

Все версии тормозили и жрали ресурсы. А XML действительно проще ручками писать.

Я недавно перешёл на студию, но только потому что нужен вывод типов в Kotlin.

a1batross ★★★★★
()
Ответ на: комментарий от a1batross

Лучше, чем ничего. Интересно насколько .dex и .oat от этого жирнее становятся.

Ох уж этот дурацкий подход Google «носим все API в APK», вместо того чтобы спроектировать нормальное версионирование API в системе и получить возможность его обновления отдельно от приложений.

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

Затем начали таскать стандартную библиотеку Kotlin’а.

Сейчас вот будут Java 8 Runtime таскать.

И в итоге каждое приложение на Android таскает за собой этот багаж одинакового boilerplate кода в каждом APK-пакете, который можно было бы с умом сделать разделяемым и фиксить те же уязвимости независимо от разработчиков прикладных приложений.

А потом все удивляются, чего это APK-пакет приложения-кнопки, весит по 10 МБ.

EXL ★★★★★
()
Ответ на: комментарий от Shadow

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

a1batross ★★★★★
()
Ответ на: комментарий от EXL

Я надеюсь, что d8 вкомпиливает только те классы Java 8, которые действительно используются.

Моя претензия сейчас не сколько к лишнему жиру в приложениях, а к тому что он плохо оттестирован. Support вон заменили на androidx. В целом появилась возможность экономить на размере APK, но в support/androidx как был неотлаженный код, так и остался.

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)

Мне прям тех кто студию делает жалко если честно. Идея внутри просто дичь, настолько что когда писал к ней плагин несколько раз хотелось доехать до их офиса с корзиной тухлых овощей. А писал я далеко не студию

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

А можно более аргументировано, почему? Из-за AWT/Swing на стероидах? Как-то хотелось плагин для нее сделать, но все времени не хватало заглянуть в эту кухню.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Свинг как раз мелочи.

Тезисно (сорри за форматирование, с телефона):

Документации нет. Вообще. Даже сраного жабодока. Максимум author. И код крайне загнутый

Хренова тонна абстракций, создаваемых через рефлекшн, что приятно присовокупляется к отсутствию доки

Полное, вплоть до минорных релизов, отсутствие обратной совместимости

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

Очень интересные взаимоотношения со стейтом приложения. Долго объяснять, но короче лучше все переменные сразу в storage кидать, а то одному богу известно что в какой момент выстрелит и с какими параметрами

Ввиду хитрого стейта пересчёт всего подряд обычное дело.

Многие вещи типа интеграций с vcs сделаны через system.call, что прям доставляет

Пока все что вспомнил, может ещё напишу

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

Многие вещи типа интеграций с vcs сделаны через system.call, что прям доставляет

Тю, а я думал у них по уму, как в том же MS Visual Studio было сделано, через специальную либу типа libgit2.

EXL ★★★★★
()
Ответ на: комментарий от upcFrost

Теперь понятно, почему это говно столько жрёт. Но, к сожалению, других альтернатив для разработки под ведро на Kotlin я еще не видел.

Jefail ★★★★
()
Ответ на: комментарий от EXL

Ещё вспомнил. Почему с рефлекшном жопа - много классов создаются циклом for по интерфейсу. А доки на то что же это за волшебный интерфейс нема. Ну ты понял, ищешь дебагом

Из примеров - я писал плагин для vcs (не суть для какой, ин-хаус). Чтоб сделать окошко пуш, нужно внезапно не окошко делать, а написать ~6 никак не связанных классов с нужными интерфейсами

А для выпадашки с бранчами я настругал кажется больше 40 классов, и свинга ни в одном не было.

Короче свинг это цветочки

Если хочешь ужаснуться - ссылк на гит-плагин https://github.com/JetBrains/intellij-community/tree/master/plugins/git4idea/src/git4idea

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от Jefail

Пишу под ведро 5+ лет

Оппа, спалился, теперь буду тебя кастовать на идиотские вопросы по ведру

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

Проект такого размера и под всё на свете и не может быть другим. То что она худо-бедно работает уже небольшое чудо. :D Хотя, конечно, когда переходишь раз в 5 лет на новую версию идеи, каждый раз шок.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Хотя, конечно, когда переходишь раз в 5 лет на новую версию идеи, каждый раз шок.

Когда обратную совместимость ломают в минорах - вот то правда шок

upcFrost ★★★★★
()
Ответ на: комментарий от EXL

Я когда писал под андроид, не юзал все эти саппорты. Мне нравится, когда приложение весит несколько десятков килобайтов.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

Говоришь так словно на крестах все прям летает

upcFrost ★★★★★
()
Ответ на: комментарий от Jefail

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

der_looser ★★
()
Ответ на: комментарий от EXL

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

der_looser ★★
()
Ответ на: комментарий от a1batross

Я надеюсь, что d8 вкомпиливает только те классы Java 8, которые действительно используются.

если я правильно понял, то все сделано через desugaring. раньше он умел только в лямбды и ссылки на методы, а сейчас его научили другим фичам

der_looser ★★
()
Ответ на: комментарий от der_looser

Да, это одна из его фич по сравнению с устаревшим dx.

Приходилось ковыряться в утилитах Android SDK, чтобы написать плагин сборки APK к Waf. Так я и узнал про d8 и почему в названии есть восьмёрка. :)

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от upcFrost

Интересно. Я думал в джетбрейнсе должны быть самые топовые специалисты по яве с идеальным кодом – ну раз они разрабатывают лучшую IDE для явы – а тут такое.

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

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

И в принципе если б была дока, при том толстая и хорошая, типа «чтоб сделать А вам нужны абстракции Б и В и модель Д» - был бы прям топчик. Ну или было б у кого спросить. То есть для закрытого софта с одним штатом разработки в целом норм. Но вот для открытой модульной системы прям боль-страдание, особенно когда в миноре ломают какой интерфейс и потом его обратно костылями прибиваешь каждый раз.

upcFrost ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Я думал в джетбрейнсе должны быть самые топовые специалисты

Это с чего бы?? Там работают такие же люди как ты и я. И там тоже любят родных и близких :)) Т.е. кумовство и «давайте возьмём моего дружбана» может быть вполне обычным явлением. Я сам был в шоке, когда по внутренней рассылке пришло: «Нам срочно нужен такой-то специалист - поспрошайте по знакомым». Это как так?? А как же конкуренция, «лучшие из лучших»?! Да вот так! Просто «знакомый» и всё.

...ну раз они разрабатывают лучшую IDE

Хм... это с чего бы она «лучшая»? Из серии «армяне лучше, чем грузины»? :))) Она просто ЕСТЬ для жабы. Только и всего.

matumba ★★★★★
()
Ответ на: комментарий от der_looser

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

Фигню лепишь. На твоё «руками потом рефакторишь» можно весь день угрохать!
СНАЧАЛА - чёткая структура верхнего уровня, а потом - заполнение плэйсхолдеров нужными контролами. Только так.

matumba ★★★★★
()
Ответ на: комментарий от upcFrost

Чтоб сделать окошко пуш, нужно внезапно не окошко делать, а написать ~6 никак не связанных классов с нужными интерфейсами

Ха-ха! :) Вспомнил такой же экспириенс, только на КОММЕРЧЕСКОЙ Visual Studio! Я проклял всех их долбаных архитекторов! Такой долбоящерской архитектуры не видел вообще никогда.

И что самое поддыхное: решил переопределить всплывающий список членов. Ибо у M$ уже 18 лет(!!) не доходят руки сделать это по-человечески. В теории, алгоритм прост как фантазия первоклассника:
1. Регистрируем перехватчик всплывающей подсказки
2. Получаем _от_студии_ список мемберов (почему бы и нет? она же это всё равно делает!)
3. Сортируем/фильтруем их так, как надо, а не как решил мелкомягкий индус после косяка.
4. Отдаём список среде - на, выводи!

ХРЕН ТАМ! :)
Помимо гемороя с чистой воды бойлерплэйтом, вдруг обнаружилось, что ты НЕ МОЖЕШЬ получить список мемберов, как НЕ МОЖЕШЬ его заменить - ты можешь его только.... ДОПОЛНИТЬ! Т.е. вся та масса дерьма, которую студия заботливо сунула в подсказку, остаётся, а ты только ещё больше её увеличиваешь! Хоба! На те поддых. :))
После этого зарёкся связываться с мелкомягким отстоищем и совсем не удивлён, что студия имеет такую безобразную функциональность - да её попросту невозможно улучшить, даже несмотря на все эти сотни «абстракций», которые они там наворотили.

Так что на сегодня, 1 июня 21 века, не существует НОРМАЛЬНОЙ, гибкой, компактной среды для программирования - есть целое поле для деятельности, паханое поперёк и по диагонали, но только не ровно! :)

matumba ★★★★★
()
Ответ на: комментарий от matumba

Помимо гемороя с чистой воды бойлерплэйтом, вдруг обнаружилось, что ты НЕ МОЖЕШЬ получить список мемберов, как НЕ МОЖЕШЬ его заменить - ты можешь его только…. ДОПОЛНИТЬ

знаешь, ты вот ща написал и кажется у меня была похожая (по внутренним ощущениям, не по коду) проблема с идеей. Там какой-то из методов, кажется что-то связанное с загрузками, вел в долгую цепочку private-вызовов, где мне нужно было дополнить ровно один метод ровно одной строчкой - добавить хедер при вызове http-клиента. Накуя делать параметры хттп-клиента private - вопрос на миллион. В итоге пришлось копипастить всю цепочку в сабкласс.

upcFrost ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.