uz
Feedback
Android Live 🤖

Android Live 🤖

Kanalga Telegram’da o‘tish

Самые свежие новости, новинки и тренды Android от практикующего разработчика. Автор: @al_gorshkov, Чат: @android_live_chat Личный блог: @al_gorshkov_blog Рекламу не размещаю

Ko'proq ko'rsatish
5 109
Obunachilar
-224 soatlar
-97 kun
-2130 kun
Postlar arxiv
AGP 9.0 — миграция через Claude Sonnet 4.5 Спасибо за ваши комментарии и обратную связь. На самом деле в вопросе не было опечаток, хотя он и звучал довольно абстрактно. Попробую рассказать подробнее. Ещё до выхода Sonnet 4.6 я решил попробовать перевести рабочий проект на последний AGP. Стандартный «мигратор» Android Studio не втащил: добавил какие-то необходимые файлы, но после него даже не вышло собрать проект. А вот Sonnet — смог. Не скажу, что это сверхсложная задача с точки зрения программирования, но она весьма монотонная для ручного выполнения. Как раз то, что идеально подходит для ИИ. Для начала я объяснил задачу в режиме планирования (plan-mode). Промт был довольно простым, но я добавил в него несколько официальных гайдов по переходу. После корректировки плана мной — агент начал рабоать… и справился! Проект успешно собрался, зависимые библиотеки обновились до совместимых версий, а модель самостоятельно «протестировала» результат, проверив сборку всех конфигураций. У меня, кстати, в проекте есть KMP-модули, хотя и довольно простые с бизнес-логикой. Так что AI сегодня — инструмент, который не стоит игнорировать. Просто пробуйте некоторые задачи доверять ИИ, попутно смотря, что он там делает.

Дано: большой проект из 180 модулей и Claude Sonnet 4.5. Сможет ли модель осуществить миграцию на AGP 9.0 без внешнего вмешательства? То есть начинаем с промта в любом виде -> модель шуршит -> успешный запуск проекта. Ваши прогнозы: 👇
Anonymous voting

Project Accessors На днях узнал о полезной настройке в Gradle, которая пригодится проектам с большим количеством модулей. Даже если она не решит критических проблем, то как минимум сделает код чище и эстетичнее. Предположим, у нас есть модули core-ui и core-common. Обычно при их добавлении в другой модуль используется такой синтаксис:

implementation(project(":core:common"))
implementation(project(":core:ui"))
В целом, ок, но можно сделать аналогично тому, как мы работаем с зависимостями из toml-каталога:

implementation(projects.core.common)
implementation(projects.core.ui)
Для этого достаточно зайти в корневой settings.gradle и добавить там строку enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") Хотя фича и считается «экспериментальной», вроде работает вполне себе стабильно. Надеюсь, было полезно.

Ну что, Android юзеры, как вам новое обновление Telegram?
Anonymous voting

Local History в Android Studio Мне кажется, что это довольно полезная функция Android Studio, о которой знают далеко не все разработчики. Если вы случайно дропнули важный код и не успели закоммитить его в Git, данные можно восстановить при помощи Local History. Для этого кликаем в IDE правой кнопкой и нажимаем на LocalHistory -> Show History. Ну и а затем найдите наиболее подходящую версию. Важно помнить, что этот инструмент не заменяет Git: локальная история хранится только на вашем компьютере. Кроме того, её легко стереть при очистке кэша. Будьте бдительны!

Обновление зависимостей с Gemini Может вы, как и я, пропустили, что начиная с Android Studio Otter можно обновлять зависимост
Обновление зависимостей с Gemini Может вы, как и я, пропустили, что начиная с Android Studio Otter можно обновлять зависимости в toml-каталогах при помощи Gemini. Процесс обновления зависимостей хоть и простой шах и мат AGP 9, но довольно затратный по времени. Gemini может решить эту проблему, хотя в идеале такие задачи стоит выносить на CI/CD Попробовать новую фичу просто: 🔴открываем toml-каталог; 🔴нажимаем на зависимость, требующую обновления; 🔴выбираем пункт «Update all libraries with Gemini».✨

Samsung One UI fix Если вы пользователь Samsung с последним обновлением One UI, то вас, как и меня, мог раздражать новый двойной свайп для открытия панели быстрых настроек. Оказывается — можно это вернуть! Один из немногих YouTube Shorts, который сэкономил время. 😄

Google Checks На днях наткнулся на полезный, но не очень популярный сервис от Google — Checks. Платформа предназначена для автоматической проверки кода на compliance, безопасность и другие подобные штуки. Если их не мониторить в больших компаниях можно отрести прилично проблем, а данный сервис помогает их предотвратить. Пока всё бесплатно, можно пробовать и решить, надо ли оно вам. Подходит для Android и iOS. Пробовали? Поделитесь опытом в комментариях. Я вот добавил себе задачку, чтобы попробовать для рабочего проекта.

Styles API в Jetpack Compose 🚀 Интересного завезли. В Compose появился экспериментальный API для работы со стилями, который делает их изменение гораздо удобнее. Сейчас работа с динамическими стилями требует немало ручного труда. И хотя InteractionSource неплохо приспособлен для этих задач, Styles API упрощает процесс в разы. Ниже приведён пример кнопки, которая меняет цвет при состояниях hovered и pressed.

@Composable
fun InteractiveButton(onClick: () -> Unit) {
    ClickableStyleableBox(
        onClick = onClick,
        style = {
            background(Color.Green)
            size(150.dp)
            hovered { animate { background(Color.Yellow) } }
            pressed { animate { background(Color.Red) } }
        }
    )
}
Выглядит неплохо, посмотрим, что будет дальше. Детали тут.

Java Memory Model Для тех, кто любит копаться в том, что и как работает под капотом. Отличная статья, где описываются механизмы работы JMM. Тема непростая, однако автор довольно хорошо объясняет сложные вещи простым языком. Ну и на собесе можно выпендриться, если что.

Какую библиотеку используете для похода в сеть?
Anonymous voting

И снова про шейдеры. Finger Shadows Ещё один эстетичный эффект, которым хотелось бы поделиться. Маловероятно, что вы сразу внедрите его в свой рабочий проект, но это отличное упражнение для отработки навыков создания красоты с помощью шейдеров Эффект на видео, а применяется тот же RuntimeShader, что и из предыдущего примера. Статья тут, исходники тоже.

Upside Down из Stranger Things 🌌 Первый рабочий день года — отличное время для того, чтобы изучить создание красивой анимации. А возможно, и начать погружение в AGSL-шейдеры — кто знает, куда это может вас привести. Рассказывается, как сделать эффект Upside-Down из Stranger Things. Если не знаете что это — то достаточно посмотреть анимацию: то переход от обычной тёплой картинки к мрачным, холодным тонам. В статье по шагам рассказывается про шейдеры, HSV, анимации и их связь с псевдорандомом, и как это всё привязать к Compose.

Mole Не удивлён, что macOS в топе. Хотя кто знает, может через пару тысяч голосов всё изменится. 😄 Всё равно — пусть будет полезный пост. На днях узнал о суперполезной утилитке Mole. Если вкратце — это тулкит, который объединяет возможности CleanMyMac, AppCleaner и других аналогичных сервисов в одной консольной утилите. Бесплатно, opensource и без лишних сложностей. Заметил особенность: иногда может показаться, что программа «подвисает», но нужно просто подождать пару минут — это нормальное поведение, скрипт скоро продолжит работу. Давайте поделимся в комментариях результатами: кто сколько места освободил после mole clean. У меня ушло 31.8 ГБ. Честно говоря, думал, что под сотку наберётся, но вот нет.

На какой ОС вы пишите код?
Anonymous voting

RemoteCompose Похоже, в конце прошлого года появился довольно любопытный подход к рендерингу UI с бэкенда — RemoteCompose. И если раньше мы видели примеры архитектур на базе JSON (вроде Epoxy), то теперь инициатором выступает Google совместно с Compose. Идея проста: делаете Compose код удалённо, имея все плюсы server-driven UI: тут и простые A/B тесты, и быстрые изменения, и возможность удалённых фиксов, если надо скрыть фичу под флагом. На клиенте у нас появляется RemoteDocumentPlayer и ряд других компонентов, которые помогают воспроизвести приходящий byte array с сервера и отобразить всё в нативных компонентах. Подход любопытный и вполне жизнеспособный. Однако, пока рано говорить про релиз, ведь вышла только первая alpha. Да и iOS-команде продать Compose не так просто, а уж RemoteCompose тем более. Но если проект KMP, то почему бы и не попробовать через несколько месяцев, когда будет хотя бы beta. Что думаете? 👇

Lineage OS #android На днях обновили версию Android на моём рабочем проекте, и мой старенький Samsung S8+ стал неактуален для тестирования. Решил посмотреть, что можно с ним сделать и нашёл решение — установить Lineage OS. Оказалось, что это сделать довольно просто, и есть масса сторонних решений на 4PDA. И не только LineageOS. Выбрал не самую последнюю, но стабильную на базе Android 13. Работает всё шикарно: быстрее, плавнее и дружелюбнее для батареи, чем стандартная оболочка. Очень доволен. 🫶 К слову, это ещё и неплохой способ попробовать альтернативную прошивку и получить рут-права для тестирования. Устанавливается всё очень легко, но, похоже, мне повезло. Так гладко установить стороннюю прошивку удаётся не на любой смартфон (судя по отзывам, ведь я в этом деле совсем новичок). Так что вот вам на заметку кейс, что можно сделать с уже «отжившими» смартфонами. 👆

Вот так новость, интересно, на другие вендроры подвезут? Общий буфер обмена с Macbook, думаю, точно не подвезут. 😄 Кто попробовал — напишите, работает ли 🤔

Никому нельзя доверять Сегодня не совсем про Android-разработку, но тем не менее — суперважная тема. Попалась статья, где нашего коллегу пытались взломать через… тестовое задание. И лишь излишняя паранойя и AI-агент спасли его от потенциального взлома. Кратко о том, что произошло. В сообщения постучался сотрудник компании, который предложил работу. Настоящая страница, реальная компания, 1000+ «друзей» в профиле. Даже посты были похожи на настоящие, с комментариями. Во время общения было предложено сделать тестовое задание, где была отправлена болванка для запуска. Сама она тоже выглядела очень хорошо: корректный README, актуальный стек, реальный проект. Но времени было не так много, и наш герой не успел настроить sandbox-среду. Однако интуиция заставила его прогнать код через AI-агент перед непосредственным запуском. И вот — агент нашёл обфусцированный byte-array, который мог стащить всё, что плохо лежит: криптокошельки, пароли, файлы и т.д. Просто хочу напомнить всем нам. 🟢никогда не запускайте неизвестный код на своём основном ноутбуке. Помните о Gradle Wrapper Attack, которую очень непросто сходу найти. 🟢неизвестные куски кода скармливайте AI. Они весьма шустро переваривают всякое легаси и описывают, что происходит; 🟢проверяйте, кто вам пишет, верифицируйте профили и страницы; 🟢банально, но — обмазывайтесь любыми двухфакторками, сложными паролями, хардварными криптокошельками и т.д. 🟢доверяйте интуиции. Ваш ноутбук — это кладезь ценной и дорогой информации для злоумышленников, помните об этом. Если вы знакомы с такими случаями — буду рад услышать вас в комментариях.

Перенос приложения в Huawei App Gallery Я уже как-то писал ппро перенос приложения в Google Play в случае изменения юридического лица приложения (например, при его продаже). Это всё делается буквально за 3-4 дня, и даже заплаченные $25 за регистрацию начального аккаунта возвращают. Отлично отлаженный процесс. Но в Huawei App Gallery такого процесса нет, а то, что предлагается — это боль и нервы. Скорее всего, вам это не пригодится, но если что — знайте, что делать. 1. Для начала открываете официальный док, и думаете, что всё хорошо: даже новый аккаунт не надо регистрировать, а можно переименовать юридическое лицо в текущем. Но это только в теории. Renaming Application Form простая, но приложить к ней у меня получилось документы в JPEG-формате. Остальные форма отбраковывала на этапе заполнения с рандомными ошибками. 2. Через пару дней вашу заявку рассматривают, и… переименовывается часть полей: например, имя компании будет новым, но адрес — старый. 3. Создаёте заявку, где вам будет помогать поддержка, прося те же документы, которые вы изначально отправили. 4. Ещё если вы изменили юр.лицо в Google Play, то App Gallery будет реджектить ваше приложение, потому что «в Google Play у вас другие данные». То есть они не могут починить у себя проблему, но реджект делают на основе того, что есть в Google Console. 5. Это может длиться неделями: главное — не закрывайте открытый тикет, чтобы не объяснять всю ситуацию с начала. В общем, ребятам явно есть над чем поработать. Может быть, в HarmonyOS-сторе всё получше.