fa
Feedback
Android Live 🤖

Android Live 🤖

رفتن به کانال در Telegram

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

نمایش بیشتر
5 118
مشترکین
-224 ساعت
-77 روز
-1730 روز
آرشیو پست ها
Optimized Resource Shrinking Google говорит, что с релизом AGP 8.12.0 добавилась новая фича — ещё более лучший "оптимизатор ресурсов", который вместе с R8 заметно уменьшает размер приложения. Пишут, что в некоторых случаях размер ресурсов уменьшается на 50%. Чтобы попробовать, надо включить
android.r8.optimizedResourceShrinking=true
ну и, конечно же, обновиться до 8.12.0. А вы уже пробовали обновиться? Google врёт или ресурсов и правда стало меньше? 🤔

Друзья, с Днём программиста! 💻🎉 Сегодня наш профессиональный праздник. Хочу пожелать нам сложных задач, захватывающих вызовов и отличных проектов. Пусть всё компилируется с первого раза, а Gradle больше никогда не тормозит! 😅 Продолжайте менять мир! 🌍

Пусть у вас с вашими QA будет только взаимопонимание. Но девушку жалко 🫣

Permissions #android Вероятно, кому-то может показаться очевидным этот совет, но тем не менее, я встречаю много приложений с этим ужасным UX-паттерном. Одно из самых глупых решений в UX, которое можно принять — это запрашивать разрешения (permissions) слишком рано, причём сразу целым блоком и без объяснения, зачем они нужны. Большинство пользователей, безусловно, не читают, что именно они разрешают. Я же отношу себя к тем, кто смотрит на каждое разрешение и недоумевает: зачем приложению мобильного оператора доступ к фото и видео? А ещё больше удивляюсь, когда после его отклонения приложение работает корректно. Разрешения нужно запрашивать именно в тот момент, когда они действительно необходимы. Доступ к микрофону? Отлично, расскажите, зачем он нужен и что произойдёт, если его не дать. Вдруг микрофон — суперважная фича, чтобы отправить сообщение в мессенджере? Разница между ранним запросом и запросом в нужное время огромна, помните об этом и делайте запросы на разрешение в подходящих моментах.

Обфускация — кастомные словари #android Про обфускацию кода знает каждый Android-разработчик, ведь без неё не обходится ни одна релизная версия продукта. Помимо уменьшения размера кода, у неё есть ещё и важный аспект безопасности. Однако стандартная конфигурация, хоть и неплохая, не обеспечивает абсолютной защиты от реверс-инжиниринга, как, впрочем, и любая другая защита. Но её можно улучшить настроив кастомные словари, которые значительно улучшат текущие настройки R8. Существует несколько подходов к их настройке: это могут быть Java Reserved Words, кастомные рандомные символы, или просто один и тот же символ, но с разной длиной слов. Пару статей, чтобы лучше изучить этот вопрос. 📚

А кто-нибудь пробовал GrapheneOS? 🤔 Интересует личный опыт: 🔴насколько сложно использовать привычные приложения? 🔴что напрягает? 🔴какой девайс используете? 🔴остаётесь на этой OS или хотите обратно? Кажется, попробовать её — неплохой эксперимент, но нужно больше информации и личного опыта. 🔍

Gradle 9.0.0: почему стоит переходить? #gradle На днях вышел Gradle 9.0.0 — значимый релиз, потому что теперь у нас будет но не точно ещё более быстрая сборка. Всё это благодаря Configuration Cache. Если быстро пройтись по теории, то при сборке есть этапы Initialization, Configuration и Execution. Первый сам по себе довольно быстрый, а последний — кэшируется за счёт Build Cache. Таким образом, остался один из самых долгих этапов сборки, который теперь тоже может кэшироваться. Начиная с Gradle 10 эта фича будет включена по умолчанию, но уже сейчас стоит перейти на свежий Gradle, чтобы получить прирост в скорости. Остальные минорные изменения описаны здесь.

Говорят, что следующая версия Android 17 будет называться Cinnamon Bun, или «Булочка с корицей». 🍩 После проекта Trunk Stable алфавитный порядок нарушился, и теперь идёт с самого начала алфавита ну почти. После Android 16 Baklava нужно было выбрать десерт на «C». Надеемся, что теперь этот подход сохранится.

Уже перешли на 16kb в NDK?
Anonymous voting

Git Secrets #git Скорее всего, в вашем репозитории есть приватные данные, необходимые для работы: например, secret-ключи для сторонних сервисов, API-ключи или конфиги для сборки проекта. Обычно такие файлы добавляют в gitignore, чтобы не хранить их в общей репе. Но дальнейшее управление ими становится затруднительным: при изменениях приходится пересылать новую версию вручную или использовать сторонние инструменты. Вдруг вы не знали, но есть такая утилита, как git-secret, которая решает все эти проблемы. Он шифрует файлы прямо в вашем репозитории, сохраняет историю коммитов и позволяет легко управлять доступами. Пользуйтесь, если раньше не знали о таком хорошем инструменте. Хорошая инструкция для настройки тут.

Agent Mode в Android Studio #ai Ещё одна новость про AI: в последней версии Android Studio появилась возможность включить Agent Mode с Gemini. Из прикольных фичей: - можно использовать свой API-ключ для Gemini Pro (по умолчанию есть квоты, и размер окна лимитирован); - есть поддержка MCP-серверов. Детальнее — тут и тут. Интересно, за сколько минут уйдёт дневная квота, если попросить пофиксить баг в Telegram-клиенте или запилить анимацию из последнего конкурса? 😄

Если вдруг интересно — Telegram анонсировал свежий конкурс для Android-разработчиков. Детали вот тут. 🙃

Вайбкодинг vs Метакодинг С распространением нейросетей в жизни разработчиков появился новый термин — «вайбкодинг». По сути, это бездумное программирование с помощью нейросетей. Когда ты просишь AI сгенерировать код и слепо доверяешь результату. В профессиональной среде вайбкодинг не любят: качество такого кода часто оставляет желать лучшего. На мой взгляд, для быстрых прототипов он подходит отлично, но точно не для продакшена. Есть и другой, менее известный термин — «метакодинг». Хотя в обоих случаях используется нейросеть, подходы кардинально разные. Метакодинг — это вдумчивая работа с нейросетью в процессе программирования. Ты просишь нейросеть написать тесты перед реализацией, задаёшь уточняющие вопросы, если видишь непонятный участок, и вникаешь в предложенную архитектуру. Ты не внедряешь предложения бездумно — наоборот, задаёшь правила и указываешь документацию, которой стоит придерживаться. Короче, такой джун на максималках 😄 Считаю, что второй способ — это база для профессионалов будущего. Это новый инструмент, который заметно ускоряет скорость разработки при правильном использовании, но не заменяет её пока что. Уже сейчас стоит внедрять такие подходы в повседневную разработку. Хорошее определение и немного более подробное объяснение — вот тут. А что думаете вы?

Firebase AI-Powered App Testing Agent #firebase #google AI-инструменты всё активнее входят в нашу разработческую жизнь — и сегодня расскажу про ещё один от Google. Если вы используете App Distribution для раскатки тестовых билдов, то могли заметить вкладку «Test cases». По сути, вы добавляете шаги теста, а Gemini проходит их автоматически и показывает результат. Выглядит многообещающе, ведь: - тесты можно писать на естественном языке — например: «нажми кнопку логина, введи такие-то данные»; - хорошая альтернатива ручной проверке QA: агент выполняет базовые действия вместо тестировщика; - альтернатива автоматизированным тестам: при рефакторинге экранов не нужно менять шаги и поддерживать тест-код. Пробуйте, пока это бесплатно 😄 Больше информации тут.

On-device GenAI APIs #google #io Слышали ли вы, но недавно Google анонсировали API для интеграции Gemini Nano в Android-приложения. Что появилось: - Summarization — для краткого пересказа статей, диалогов и других текстов; - Proofreading — для вычитки и полировки текстов; - Rewriting — переформулировка текстов в разных стилях и форматах; - Image Description — генерация описаний для изображений; Главная фишка в том, что всё обрабатываются без похода в сеть, а это значит: - никаких затрат на API-вызовы; - всё работает оффлайн; - данные не покидают устройство — критично для многих приложений. API выглядят круто — даже если приложение не про тексты или картинки, с их помощью можно добавить полезные фичи для улучшения UX. Все детали и тесты можно взять тут.

Memory Indicator в Android Studio Не знаю, знали ли вы, но в Android Studio можно посмотреть, сколько оперативки она съедает прямо сейчас. И без дополнительных плагинов. Фича появилась в Android Studio Giraffe. Появилась давно, но мне попалась только сейчас. Достаточно кликнуть правой кнопкой по нижней панели и включить Memory Indicator. Хотя мы и знали, что IDE прожорливая, но теперь у нас есть цифры, подтверждающие это. 😄

Compose Multiplatform — в проде! #compose Отличная новость: Compose Multiplatform 1.8.0 вышел в релиз, и Compose для iOS теперь в stable! Сам анонс тут, кратко что обещают: 🟢все основные API стабильны, глобальных ломающих изменений не планируется; 🟢Compose на iOS ощущается как нативный фреймворк: скроллы, навигация, шрифты — всё учитывается; 🟢с производительностью тоже всё в порядке, очень близок к SwiftUI; 🟢Compose Preview работает наравне с Compose Hot Reload; Больше изменений тут. Поздравляю команду JetBrains, теперь надо команду iOS уговорить попробовать новую технологию. 😄 А вы уже пробовали? Как впечатления?

Android Activity Lifecycle от 8ksec #android Про жизненный цикл Activity не знает только ленивый, но мне попалась небольшая статья, где ребята из 8ksec рассматривают его с точки зрения уязвимостей и безопасности. Если что, у 8ksec вообще много толковых статей и обучающих материалов по безопасности Android-приложений. И радует, что на привычные вещи можно взглянуть по-новому — с позиции безопасности и анализа уязвимостей.

Firebender #ai #androidstudio AI уже прочно вошёл в нашу жизнь, и, кажется, отказаться от него будет непросто. Я, например, попробовал Firebender в Android Studio — выглядит очень достойно. Под капотом — целый набор моделей, работает прямо внутри Android Studio, выдаёт неплохие ответы и, что приятно, всё это бесплатно. По своему опыту скажу: активно использую агентов для генерации документации и тестов — именно те задачи, которые руками обычно делать лениво. Недавно попробовал и рефакторинг легаси-кода — выглядит многообещающе, но пока требует ручной проверки. Если довериться агенту, то придётся фиксить много багов. 🫨 А как вы относитесь к AI-агентам? Уже внедрили в рабочие процессы?