Android
• Простой вопрос по Android Core, на который даже сеньоры отвечают неправильно
• Зачем и как в Альфе была написана библиотека для скриншот тестов под Android
• Mastering Android Dynamic Feature Module Delivery
• hossein_kheirollahpour/implementing-authentication-with-jwt-in-android-without-using-a-library-5b01ea53a9e9">Implementing Authentication with JWT in Android (without using a library)
• android-world/optimizing-jetpack-compose-with-stable-smart-recomposition-strategies-81147b779a0a">Optimizing Jetpack Compose with @Stable: Smart Recomposition Strategies
#android
Наши коллеги из Rocket10 и Bidease подвели итоги уходящего года. Героями предновогодних выпусков «Маркетологи в мобайле» стали ведущие специалисты из компаний inDrive, Sunlight, Fonbet, «Национальная Лотерея» и др.
Ребята рассказали о трендах в performance-маркетинге, поделились интересными бизнес-решениями и посоветовали, на какие источники трафика стоит обратить внимание в 2024 году.
Ссылки на выпуски:
• Часть 1
• Часть 2
Microsoft давеча окончательно переименовала Bing Chat в Copilot и выпустила выпустила Android-приложение для него. Приложение Copilot очень похоже на ChatGPT, с доступом к функциям чатбота, генерации изображений с помощью DALL-E 3, собственно там вроде как даже есть бесплатный доступ к новейшей модели GPT-4 от OpenAI. Из России традиционно недоступно, но с VPN все работает. Так что теперь у нас аж 3 более или менее действующие платформы - ChatGPT, Bard и Copilot.
Разработка
• Microsoft выпустила приложение Copilot для Android
• Как проектировать системы уведомлений в приложениях: дизайн, этапы и нюансы архитектуры
• Спринты — самая большая ошибка в программной инженерии, примите eXtreme Go Horse
• A programming language coding in a grid
• 10 Things Software Developers Should Learn about Learning
Маркетинг
• Маркетологи в мобайле. Итоги года 2023. Часть 2
• AppStore не пропускал нашу регистрацию из-за санкций, но мы всё же выпустили приложение для тех, кто следит за здоровьем
• Japan to crack down on Apple and Google app store monopolies
Кроссплатформа
• ximya/save-your-time-by-handling-flutter-imports-boosting-productivity-with-single-import-82d16dbca0f5">Save Your Time by Handling Flutter Imports: Boosting Productivity with Single Import
• Dart: Object-Oriented Programming (OOP) - Full Course
• lidhin/simplifying-flutter-with-extensions-a33d43d31998">Simplifying Flutter with Extensions
iOS
• Прививка от созависимости. Зачем нужен DI и как он работает в iOS-приложениях hh.ru
• Conway's Game of life with SwiftUI
• jpmtech/getting-started-with-instruments-a35485574601">Getting Started with Instruments
• Jager-yoo/optimizing-ios-widget-network-calls-with-temporary-caching-e32c01570a5c">Optimizing iOS Widget network calls with temporary caching
• adityagi02/creating-a-signature-view-in-swiftui-a-step-by-step-guide-575bb08d20af">Creating a Signature View in SwiftUI: A Step-by-Step Guide
#ios
Новостей особых в выходную неделю нет, поэтому вот вам новое исследование Developer Nation. Пройдите опрос, внесите свой вклад в будущее сообщества и получите ценные призы - вплоть до MacBook Pro 13" M2.
Разработка
• The 10 best UX interactions of 2023
• noriller/sprints-the-biggest-mistake-of-software-engineering-34115e7de008">“Sprints”: The biggest mistake of Software Engineering
Маркетинг
• У трекеров сна лучший год
• Нужен ли был кому-нибудь Beeper Mini?
Кроссплатформа
• NativeScript в мире кроссплатформенной разработки
• Use ONNX Runtime in Flutter
iOS
В первой статье - интересные фишки и оптимизации SwiftUI.
• Мастерство работы в SwiftUI
• On-Demand Resources in iOS
• How to Optimize Your Xcode Project for Fast Test Feedback
• Discovering iOS memory leaks: A case study with Firefox app
• Breaking Language Barriers: How We Added Right To Left Compatibility to the Trendyol iOS App
• RIB Architecture in iOS Swift
#ios
На прошлой неделе Beeper, который сначала научился прокидывать сообщения в iMessage с Android, а потом отчаянно боролся с рогатками Apple, заявил о прекращении борьбы. “Мы не можем победить в игре в кошки-мышки с крупнейшей компанией на Земле”, - говорят авторы. Хорошее в этом то, что разработчики выложили бридж к iMessage, приложение для Mac и iPhone в открытый доступ. Плохое - то что Apple в очередной раз доказала свои неконкурентные политики. Штош. Будем ждать, когда ЕС признает iMessage платформой и принудит открыть мессенджер.
Разработка
• Beeper отказывается от борьбы с Apple и выкладывает код в open source
• Самые высокооплачиваемые вакансии декабря в сфере разработки приложений
• Тренды UX/UI-дизайна 2024
• Разработка Авто.ру и роль руководителя в команде
• Что такое observability мобильного приложения
• Мобильные релизы в Авито
• Силиконовая Долина глазами российского разработчика
• Релокация на Кипр
• Apple разработала прорывной метод запуска LLM на устройствах с ограниченной памятью
• Секрет внутренней связи: откровения Маруси о том, как она научилась слушать себя
• flutterwtf/how-to-improve-user-experience-latest-ux-ui-design-trends-for-2023-cad4f54a9843">How to Improve User Experience: Latest UX/UI Design Trends for 2023
• Best engineers are focusing on helping others
Маркетинг
• Рынок приложений 2023 — Ксения Юркина, Apptica
• Маркетинг мобильных приложений на волне роста во всем мире: и вот какие регионы в топе
Кроссплатформа
• Мультиплатформенная разработка на чистой Java
• Integrating Google Sign-In into Kotlin Multiplatform
• How we built the Super Dash demo in Flutter and Flame in just six weeks
• The Problem With State Management, and Why It Shouldn’t Be a Problem
iOS
• Enchanted: приложение для собственной языковой модели Ollama
• Custom Segmented Control
• Build your first app with SwiftUI and SwiftData
• jpmtech/swiftui-navigationsplitview-30ce87b5de03">SwiftUI NavigationSplitView
• abegehr/testing-swiftdata-migrations-7a612da2c91c">Testing SwiftData Migrations
• maxkalik/ui-throwback-creating-a-retro-progress-bar-for-ios-using-calayers-9539baf65fc3">UI Throwback: Creating a Retro Progress Bar for iOS using CALayers
#ios
Видео и подкасты за неделю:
• (iOS Ru)
Custom Segmented Control
• (iOS En)
Building Complex Scroll Animations With New iOS 17 APIs
• (iOS En)
SwiftUI Widgets | App Groups | Charts | Expense Tracker App
• (iOS En)
How To Create A Submission Form In Xcode 15
• (iOS En)
This is the CRAZIEST Swift code you'll ever see
• (iOS En)
SwiftData CloudKit
• (iOS En)
SwiftUI Animated Toasts
• (And Ru)
Как устроен Gradle Config Cache. Лучшие Практики. Интервью с инженером команды Gradle
• (And Ru)
Android System Design: делаем библиотеку Firebase
• (And En)
(W)rap - Android Developers Backstage
• (And En)
Introducing Gemini, Google at NeurIPS 2023, and more dev news!
• (And En)
Performance Optimization with @Stable and @Immutable in Jetpack Compose
• (And En)
Demystifying Pixel Shaders (AGSL)
• (Crs Ru)
Мультиплатформенная разработка на чистой Java
• (Crs En)
A novel architecture for Multiplatform applications with Pavel Lahoda
• (Dev Ru)
Что такое observability мобильного приложения
• (Dev Ru)
Разработка Авто.ру и роль руководителя в команде
• (Dev Ru)
Мобильные релизы в Авито
• (Dev Ru)
Силиконовая Долина глазами российского разработчика
• (Dev Ru)
Релокация на Кипр
• (Dev En)
Do You Have to Learn Clean Architecture as a Beginner?
С вас традиционный 👍 и поделиться подборкой с коллегами!
В AppsFlyer опубликовали 5 трендов 2023 года с их пролонгацией на 2024. Вкратце - затраты на рекламу приложений снизились; неорганические установки iOS выросли на 9% - хороший знак после 15% падения в 2022; доход от покупок в неигровых и игровых приложениях вырос на 19% и 11% соответственно - и это приятно; ремаркетинговые конверсии на Android упали на 9% - Индия и Бразилия подпортили рынок; общее количество загрузок приложений выросло всего на 2% - после 10% роста в 2022 году. В общем ничего необычного, но для укрепления понимания советую почитать.
Разработка
• 13 советов для начинающих разработчиков, которые уже прочитали все остальные советы
• История разработки приложения для складных смартфонов Samsung. Часть 2 — гайдлайны
• Автоматизированное тестирование событий аналитики в мобильном приложении: насколько это реально и оправдано
• How to Scale an App to 10 Million Users on AWS
• We Can’t Hire You
Маркетинг
• Spill, инклюзивная альтернатива X, запускает бету на iOS и Android
• Claim, социальная сеть, позволяющая пользователям зарабатывать и обмениваться вознаграждениями, привлекает $4 млн
• 5 трендов в области маркетинга приложений 2023 — и их проекция на 2024
Кроссплатформа
• Globe (a Flutter & Dart deployment platform) is now in public preview
• How we built it: Ask Dash — A generative AI Flutter application
iOS
• BadgeIcon: системные иконки для SwiftUI
• tahabebek/scalable-and-modular-system-design-for-the-simplest-ios-app-7a1a3873992b">Scalable and Modular System Design for the simplest iOS App
• bhuravaneprathamesh/creating-a-scrolling-parallax-effect-with-swiftui-037029863eb8">Creating a Scrolling Parallax Effect with SwiftUI
• SwiftUI View Models: Lifecycle Quirks
• kodekarim/become-more-senior-ios-developer-with-these-4-xcode-tips-tricks-d470d8e5878d">Become More Senior iOS Developer with these 4 Xcode Tips & Tricks
• ❸☻- Simulation Emojimix on Xcode
#ios
Вчера у нас маркетологи начали подводить итоги года (кстати, заодно уж хочу обратить внимание на предыдущее огненное интервью Александра Багринцева из Sunlight, одно из самых интересных в цикле), но я о другом. Если у вас (компании, проекта, разработчика, дизайнера и т.п.) есть чем поделиться по итогам года на всю аудиторию - завсегда пожалуйста. Просто напишите и сделаем статью или интервью, пусть даже коротенько (минут на 40 ☺️).
Разработка
• Cоздание идеальных вкладок
• Advice for new software devs who've read all those other advice essays
• I’ve vastly misunderstood the Single Responsibility Principle
• Empirically supported code review best practices
Маркетинг
• Location — cоздатели Zenly выпускают приложение, похожее на Zenly
Кроссплатформа
• Just DUIT — первый взгляд на server-driven UI фреймворк для Flutter
• shubya8451/flutter-and-sqlite-a-deep-dive-into-local-data-persistence-5bb8098b8346">Flutter and SQLite: A Deep Dive into Local Data Persistence
Android
Посмотрите на все изменения, которые анонсировал Google по результатам вчерашнего дела. Ничего нового, но просто по пунктам.
• Все изменения, которые произойдут в Google Play и загрузке приложений, после урегулирования спора
• Что нового в AOSP 14
• Ludwig: набор UI-компонентов для Jetpack Compose
• Crash Course on the Android UI Layer | Part 2
• Fortifying Android Apps: A Comprehensive Guide to Securing Your App and Codebase with Kotlin
• State Management in Jetpack Compose
• Live Streaming and Audio Equalizer with ExoPlayer in Jetpack Compose
• raya.wahyu.anggara/android-thread-43b30b61dee6">Android Thread & Relation With Coroutine
#android
Android
• Создаем пассивный UI в Jetpack Compose
• Google выплатит $700 млн в еще одном споре о Play Store
• Stone. Квалификаторы и идентификаторы
• dugguRK/unleashing-websocket-in-android-b82c887b0a27">Unleashing WebSocket in Android?
• Effect Handlers in Jetpack Compose: A Complete Guide
• Kotlin under the hood: how to get rid of recursion
• merkost/foreground-services-in-android-14-whats-changing-dcd56ad72788">Foreground Services in Android 14: What’s Changing?
• Multi-Module with Clean Architecture
#android
Если вы, как и я, интересовались, как Google проиграл там, где Apple выиграла - в The Verge дали вполне доступное объяснение по пунктам. Если вкратце - прецедент в данном случае не работает, сделки Google со сторонними компаниями были сомнительны, суду присяжных объяснять их вопросами бизнеса было сложно, а заговором против Epic - просто, Google удалял улики, что сыграло не в его пользу, ну и наконец - это просто были два совершенно разных дела по определению рынка, на котором образовалась монополи. У Apple это “цифровые мобильные игровые транзакции”, а у Google - “распространение приложений для Android и услуги биллинга в приложениях для Android”. В общем, если вам интересно понимание, крайне рекомендую.
Разработка
• Эпический вопрос: как Google проиграл там, где Apple выиграла
• Как формировать топовые команды
• Ozon Tech Community Techdoc Meetup
• Почему ты пишешь говнокод? Главная причина
• Как подготовиться к собеседованию по System Design мобильному разработчику
• Why do programmers need private offices with doors?
• 8 Simple Steps to Create Crosswords on Any Topic in Minutes Using ChatGPT
Маркетинг
• Количество пользователей социальной сети Jagat превысила 10 миллионов
• Спрос на приложения для ментального здоровья почти сошел на нет
• Самые скачиваемые приложения в мире в ноябре 2023
• Социальная торговая платформа Maka привлекает $2.65 млн для упрощения покупок в Африке
Кроссплатформа
• Модульная запутанность. Как распарсить одну модель в разных модулях
• Создаем federated plugin для Flutter-проекта
• Многомодульность на Flutter или как не выстрелить себе в ногу
• Handle push and locale notifications in your Flutter app
iOS
• CodeEdit: редактор кода для macOS
• Как и зачем мы внедрили Snapshot Testing
• Comparing Swift Compiler Performance on Type Inference
• Rust API Bindings: Core Foundation Signed/Unsigned Conversion
• fsamuelsmartins/how-to-use-the-swiftuis-navigationstack-79f32ada7c69">How to use the SwiftUI’s NavigationStack
• shchukin-alex/lock-free-in-swift-memory-model-and-petersons-algorithm-f070581c2d75">Lock-Free in Swift: Memory model and Peterson’s algorithm
#ios
Мое новое легендарное интервью с Сергеем Опиваловым, Senior Software инженером в Gradle
Обсуждаем его пет-проект — приложение ATHYLPS, тренажер для математических навыков в покере.
⁃ Первое ядро, которое делает эвалюацию покерных рук и может генерировать рандомные раздачи для тренировки, было на Go.
⁃ Это ядро использовалось на Android и на iOS (Flutter).
⁃ В этом году получилось переписать ядро на Kotlin и было принято решение переезжать с Flutter на Kotlin Multiplatform.
⁃ Реализация ядра на Kotlin позволила наконец-то написать хорошие тесты для него, в том числе перформанс тесты на JMH.
Подробнее про разработку: https://apptractor.ru/info/interview/athylps.html
Android
• Bluetooth LE Spam: спам через BLE
• husayn.fakher/exploring-kotlin-deferred-10-questions-answered-e1ea98f644db">Exploring Kotlin Deferred: 10 Questions Answered
• AppBarLayout in Compose
• A Complete Guide to Android Foldable Devices: Unfolding the Future
• Compose Navigation — A great choice for large Android apps
• pnbharat/performance-optimization-in-jetpack-compose-e689660d4aac">Performance Optimization in Jetpack Compose
#android
Agile “по бразильской системе” - eXtreme Go Horse
Прекрасный юморной манифест для тех, кто устал от бесконечных скачек.
XGH не цепляется за сиюминутные течения, они для слабаков. XGH всегда использовался и будет использоваться теми, кто пренебрегает качеством. В XGH вы не думаете, вы делаете первое, что приходит в голову. Нет второго варианта, единственный вариант — самый быстрый.
Android
• Increase your app’s availability across device types
• Tiled Image Backgrounds in Jetpack Compose
• Simplifying Navigation in Multi-Module Android Apps with Compose Destinations
• Say Goodbye to Script Duplication: Gradle Convention Plugin for Android Code Reuse
• Yo Ho Ho and a Heap of Memory Leak Woes: LeakCanary to the Rescue!
• Offline mode in the Licious Rider App
• sujathamudadla1213/android-kotlin-coroutines-interview-questions-6118b7725f54">Android Kotlin Coroutines interview questions
#android
У трекеров сна лучший год
Отслеживание сна — большой рынок, который вырос на 28% и в 2023 году получил более 22 млн загрузок.
1. Лидеры - Sleep Cycle, ShutEye, BetterSleep и Pokemon Sleep.
2. ShutEye стал самым скачиваемым приложением из трех в 2023 году, получив 9.8 млн новых загрузок — на 51% больше, чем в 2022 году. BetterSleep занимает второе место с 8 млн загрузок, что на 127% больше, чем в прошлом году. А новичок Pokemon Sleep занял 3-е место с 6.7 млн новых скачиваний. Это впечатляющий результат, учитывая, что он был выпущен только летом. Приложение для сна Sleep Cycle заняло 4-е место с 4.8 млн новых загрузок. В отличие от остальных, количество загрузок Sleep Cycle снизилось по сравнению с 2022 годом — на 16%.
3. Загрузки — это хорошо, но доходы — еще лучше. И тут Pokemon Sleep обошел все три старых приложения, даже несмотря на то, что вышел в середине года.
4. Снорлакс заработал 26 миллионов долларов чистого дохода с момента выхода в июле. И что еще более интересно, скорость не снизилась с момента выхода, так что это не просто момент старта. ShutEye занял второе место с 17 млн долларов чистого дохода, а сразу за ним расположился Sleep Cycle с 16 млн долларов чистого дохода. BetterSleep не слишком отстает — 13 млн долларов. Все три компании выросли по сравнению с 2022 годом, но BetterSleep вырос больше всех — на 53% за год, а Sleep Cycle — меньше всех, всего на 2%.
И что: а) рынок сна - большой, и в установках, и в деньгах; б) можно делать 15 лет свое приложение, но придут покемоны и украдут весь сон ⛔️ ; в) интересно, что спрос на приложения для ментального здоровья значительно упал, так что может стоит совместить сон с медитациями?
Android
• Вопросы с собеседований: Object в Kotlin
• Как устроен Gradle Config Cache. Лучшие Практики. Интервью с инженером команды Gradle
• Android System Design: делаем библиотеку Firebase
• NanoKt: библиотека расширений для Android и Kotlin
• remember «Forever». Как сохранить скролл при уходе с экрана
• Compose walk-through part 2: Managing state
• Live Streaming and Audio Equalizer with ExoPlayer in Jetpack Compose
• How to automate the update process of dependencies?
• Boosting Bazel Adoption on Android With Automation
#android
Как управлять советами для начинающих
Собрал новый еженедельный дайджест. Если вам понравилось, поставьте 👍 и поделитесь с коллегами. Еще у меня есть канал IT Insights, где новости и статьи про код, технологии и все самое интересное, возможно и за пределом мобайла. Вот, например, 40 лет назад Netscape Navigator 1.0 положил начало тому Интернету, который мы знаем сегодня.
⚡️25 декабря стартует новый легендарный онлайн-курс Kotlin Backend Developer Professional
Успейте поступить в группу в этом году.
✅Новогодний SALE
✅Обновленная программа курса
✅Преподаватели - ведущие эксперты международных компаний
Обучение на курсе позволит:
• освоить разработку на Kotlin и профессиональную бэкенд-разработку;
• научиться использовать Kotlin для разработки серверных приложений;
• применять асинхронное и многопоточное программирование с корутинами;
• использовать Kotlin совместно с различными фреймворками;
• строить хранилища на базе SQL, NoSQL и NewSQL;
• писать приложения с монолитной, микросервисной и бессерверной архитектурами.
🎄ПРОЙТИ ТЕСТ и получить новогодний бонус: https://otus.pw/xHeY/?erid=LjN8KWwi1
Легендой курса является разработка стартапа – экстремального проекта, в котором сочетаются высокая неопределенность и жесткие ограничения по времени и ресурсам.
При поступлении в группу возможны разные способы оплаты и рассрочка платежаРеклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963
Android
• Подключение сканера к Android или как почувствовать себя кассиром
• Do You Have to Learn Clean Architecture as a Beginner?
• Demystifying Kotlin: Understanding the Inner Workings of Inline Functions
• marco-cattaneo/how-to-handle-single-event-in-jetpack-compose-f90b6220e8c8">How to handle single-event in Jetpack Compose
• Android Launch Modes Explained
#android
Что нового в AOSP 14
После выхода каждой новой версии iOS разработчики делают ее анализ (вот, например, последний). Android исследуют меньше, тем ценнее эти данные. Серджио Прадо и Крис Симмондс недавно рассказали о том, что нового в AOSP 14 в своем видео и опубликовали сводные таблицы.
1. Размер исходников вырос почти в 2 раза - с 87 Гб в AOSP 8 (все дальше сравнивается с ним) до 165 Гб.
2. Таргетов в 3 раза - с 32 до 83.
3. Количество исходников на Rust увеличилось в 8 раз - с 1009 до 8609.
4. Время сборки на стандартной машине увеличилось с 2:30 до 8:50. Объем билда с 87 до 150 Гб.
5. Количество процессов в рантайме 306/288, потоков 1377/13332, системных сервисов 277/303, потребление памяти увеличилось вдвое - с 1.8 до 3.5 Гб.
И что: Android стремительно развивается. Понадобится ли ему замена для слабых телефонов и кто ею станет - вот интересный вопрос.
iOS
• Вопросы с собеседований: коллекции в Swift
• Поваренная книга SwiftUI: состояние, привязка, ObservableObject и ObservedObject
• Как я создаю iOS игру на Unity c использованием MidJourney, ChatGPT, Adobe Firefly и много ручного труда
• How to get the most played Apple Music songs and albums using Swift
• Quick Search with SwiftUI Searchable
• kodekarim/xcode-15s-hidden-treasure-logging-like-a-pro-2024-6fc993d65ccb">Xcode 15’s Hidden Treasure: Logging Like a Pro 2024
• tunahanbekdas/swift-singleton-pattern-1ab19b53b79d">Swift: Singleton Pattern
• The Case Against [unowned self]
• emndeniz/ios-ui-testing-with-deep-links-7c33e9f9b7f1">iOS UI Testing with Deep Links
#ios
Случилось забавное - в Internet Archive нашли архив TestFlight с кучей старых игр и приложений на 1.2 ТБ. Напомню, что TestFlight не всегда принадлежал Apple, до 2015 года он был независимой компанией и у него даже был собственный сайт, через который все также тестировали свои сборки. В начале 2015 года он был закрыт, примерно тогда же Архив и получил весь дамп - судя по всему, из-за из неправильно настроенного облачного хранилища. Понятно, что вы не можете просто загрузить одно из старых приложений на свой нынешний телефон и вернуться в прошлое. Но в Discord уже есть сообщество, которое копается в архиве, так что, вероятно, что-нибудь с этим придумают.
Разработка
• В Internet Archive нашли старые приложения и игры из TestFlight
• Что такое мьютекс
• «Додо пИИцца». Как мы внедрили AI в приложение пиццы в Дубае
• Designing Perfect Tabs
• Redesigning our global order tracking experience
Маркетинг
• Маркетологи в мобайле. Итоги года 2023. Часть 1
• Топ быстрорастущих приложений в России в декабре
• Итоги года и планы на 2024 от Adjust
• Using campaign links to track impressions, downloads, and sales
Кроссплатформа
• Transition Animation: настраиваем анимацию переходов во Flutter
• Jetpack Preferences DataStore in Kotlin Multiplatform
iOS
• Google AI SDK for Swift: генеративный ИИ для ваших приложений
• Apple останавливает продажи Apple Watch Series 9/Ultra 2 из-за нарушений патентов
• redhotbits/from-swiftui-vanilla-to-mvvm-like-a-pro-470b22f304c9">Stop using MVVM and abusing Observable classes in SwiftUI
• Coordinator Pattern for iOS Apps
• Why I chose The Composable Architecture for SwiftUI and never looked back
• Mastering MapKit in SwiftUI. Interactions.
• Preparing your App for VoiceOver: Accessibility Actions
#ios
Android
Прочитайте мое интервью с Сергеем Опиваловым по поводу его доклада на Mobius про управление сложностью состояния.
• Как управлять сложностью состояния — Сергей Опивалов
• Android-PiP: реализация «картинки в картинке»
• Разработка для нестандартных устройств
• Мок-собеседование по Android System Design
• Android SDK Extensions — новые фичи на старых Android
• Animating Inside and Outside the Box with Jetpack Compose
• The ViewModel’s leaked Flow collectors problem
• Glassmorphic Bottom Navigation in Jetpack Compose
• Building Passive UI in Jetpack Compose
• Kandy: the new Kotlin plotting library by JetBrains
• Demystifying Pixel Shaders (AGSL)
• Don’t use var in enums
#android