В этом выпуске борьба с утечками памяти и 10 самых распространенных ошибок с Jetpack Compose, подходы к многомодульной функциональной архитектуре и реализация pixel-perfect тестирования дизайн-системы, 2.5 тысяч экрано-состояний и тесты на сотнях устройств, причины не использовать Server Driven UI, «осознанные» истории Calm и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Обновление CocoaPods: пошаговое руководство
• Карточка навигации для iOS 18 на SwiftUI
• Проверяем пакет iOS-приложения
• Шина данных и Swift: применение в слабосвязанных архитектурах
• SwiftUI AlignmentGuide
• Стратегия автотестирования для iOS приложений
• 5 вопросов для iOS разработчика
• Борьба с утечками памяти: от задачи до победы
• ARC в Swift: лучшие практики для предотвращения утечек памяти
• SwiftUI for Mac 2024
• Understanding container values in SwiftUI
• Exploring SwiftUI: Working with Rotate Gesture
• Dynamic Library vs. Static Library: Optimising iOS App Performance
• SwiftUI Tip: Avoid Nesting ObservableObjects
• How to make ZStack content fully scrollable in a SwiftUI ScrollView
• Send data Between iOS Apps and Extensions Using Darwin Notifications
• Transcribing audio from a file using the Speech framework
• SwiftUI Modifiers Deep Dive: containerBackground
• Marking Swift Properties Available by iOS Version
• Working with UDP in SwiftNIO
• Exploring WidgetKit: Creating Configurable Control Widgets in iOS 18 and SwiftUI
• Everything you never thought you wanted to know about emoji flags
• Mastering Navigation in SwiftUI Using Coordinator Pattern
• Design Your Dark and Tinted Versions of Your App Icon for iOS 18
• Import & Export Swift Data with Password
• Interactive Expandable Header — SwiftUI
• SwiftDraw — парсинг и отрисовка SVG-изображений
• Settings iOS — Настройки на SwiftUI
Android
• 10 самых распространенных ошибок с Jetpack Compose
• Kotlin Coroutines. От А до Я
• Подходы к многомодульной функциональной архитектуре на Android
• Автообновление через GitHub releases с помощью Hilt и Retrofit в Android
• Mapping объектов с помощью MapStruct
• Как переход на AGP&Gradle 8.* изменил взгляд на работу с производительностью сборки
• 5 уроков из опыта реализации pixel-perfect тестирования дизайн-системы в Android
• Gradle-сборка. Измеряем самое важное
• Шифруем файлы в Android
• Выпуск Android 15 перенесен на октябрь
• Effective Map Composables: Draggable Markers
• Kotlin Granular Analytics With Lifecycle Delegate
• Add powerful analytics modifiers in Jetpack Compose with ModifierLocal
• Strikt Unit Testing In Kotlin
• Adding 16 KB Page Size to Android
• NFC on Android: Creating a prepaid payment system using NDEF tags
• Hard-earned Learnings From Navigating Google Play App Rejections
• Kotlin Extensions: A Complete Guide to Extension Functions in Kotlin
• An effective testing strategy for Android – Unit Testing
• Convergence in a multi-module application
• How to implement Synchronization in Room Database in Kotlin
• Jetpack Compose and collectAsLazyPagingItems
• Create a Gradle Convention Plugin for Effortless Library Publishing
• Why using Channels is considered anti-pattern?
• Data structures and Algorithms are used in Android’s Architecture and Components
• Mastering Color Theming in Jetpack Compose
• Custom Koin Test Rule & Instrumented Android Tests in Multi-Module Architectures
• Creating Pixel-Perfect UI with Jetpack Compose
• Now in Android: 109 — Android 15 Beta 4, Samsung Galaxy Unpacked, Google Play’s new feature, & more
• Hot Flows vs. Cold Flows In Kotlin — When to Use What?
• 5 Kotlin Coroutine Secrets I Wish I Knew Earlier
• Kotlin After 2.0
• Revamping and Extending Kotlin’s Type System
• The state of code coverage for Kotlin
• Supercool App — пример использования паттерна Use Case
• Compose Stopwatch — секундомер на Jetpack Compose
• ArtMaker — рисование с Jetpack Compose
Кроссплатформа
• Апгрейд с Xamarin.Native на .NET 8
• Как я ускорил свое мобильное приложение BookDesk на React Native в 3 раза?
• Flutter vs Kotlin Multiplatform: что выбрать
• Pushing the Boundaries of Compose Multiplatform with AGSL Shaders
• A deep dive into freezed: Data classes, cloning, and (de)serialization
• White-label mobile apps with Flutter & Fastlane
• Enums on Steroids with Dart. Best Enum features ever!
• Cross-Platform Swift: Building a Swift app for the browser
• Flutter Reload: What’s Under the Hood
• There’s more than a mouse in Compose Multiplatform for Desktop
• Flutter tutorial: Sliding and resize image with CustomScrollView and Slivers
Разработка
• 2,5 тысяч экрано-состояний и тесты на сотнях устройств: как мы с нуля делали темную тему в приложении
• Server Driven UI: 6 причин не использовать его
• Как Google победил Skynet или подготовка обучения модели на мобильном устройстве
• Сложно ли пронести гаджет в школу
• Снифферы трафика в мобильном тестировании: Обзор инструментов и их особенности
• Большое UX/UI исследование мобильных приложений аптек
• О важном: инклюзивность интерфейсов, в которой нуждаются
• Кайфовый дизайн: Как сделать приложение, которое не захочется удалить
• Как писать чистый код — угадываем что ввел юзер и дизайним с нуля Clean Code Approach
• Егор Бугаенко про ТикТок, Huawei и ленивых разработчиков
• Зачем учить язык Си в 2024 году — Как выбрать между C или C++ или Rust
• Зарплаты разработчиков в первом полугодии 2024
• Самые популярные языки программирования 2024 от IEEE Spectrum
• Less Is More: Principles for Simple Comments
• Better CI/CD with GitHub Actions and deployment tracking
• Designing Apps: 5 Methods to improve your workflow
• How we run migrations across 2,800 microservices
• How we sped up Notion in the browser with WASM SQLite
• Programming With ChatGPT
• Cognitive Load is what matters
Аналитика, маркетинг и монетизация
• Calm запускает «осознанные» истории
• Snapchat запустился на iPad
• Niantic стремится создать более насыщенную 3D-карту мира с помощью новой версии приложения Scaniverse
• The Shippies — первый конкурс RevenueCat для приложений с подпиской
• У Telegram лучший месяц по доходам
• Самые скачиваемые и зарабатывающие приложения в мире в июле 2024
• Где найти стажеров и молодых сотрудников: создали приложение с 900+ тысячами скачиваний
Cheap! Cheap! The Perils of Low Cost Being your ONLY Advantage
AI, Устройства, IoT
• $1697 за выключатель кондиционера: DIY ремонт управляющего планшета
• Действительно ли большие языковые модели галлюцинируют? Эксперимент
• Насколько ChatGPT-4o подвержен когнитивным искажениям?
• IoT Geofencing: как мы сократили время определения функциональных зон, используя H3-индексы
• Реализуем машинное обучение на сервере с помощью Swift
• Codeium привлек $150 млн и стал единорогом
• Стартап Magic, занимающийся ИИ-программированием, получил $320 млн инвестиций
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Обновление CocoaPods: пошаговое руководство
• Карточка навигации для iOS 18 на SwiftUI
• Проверяем пакет iOS-приложения
• Шина данных и Swift: применение в слабосвязанных архитектурах
• SwiftUI AlignmentGuide
• Стратегия автотестирования для iOS приложений
• 5 вопросов для iOS разработчика
• Борьба с утечками памяти: от задачи до победы
• ARC в Swift: лучшие практики для предотвращения утечек памяти
• SwiftUI for Mac 2024
• Understanding container values in SwiftUI
• Exploring SwiftUI: Working with Rotate Gesture
• Dynamic Library vs. Static Library: Optimising iOS App Performance
• SwiftUI Tip: Avoid Nesting ObservableObjects
• How to make ZStack content fully scrollable in a SwiftUI ScrollView
• Send data Between iOS Apps and Extensions Using Darwin Notifications
• Transcribing audio from a file using the Speech framework
• SwiftUI Modifiers Deep Dive: containerBackground
• Marking Swift Properties Available by iOS Version
• Working with UDP in SwiftNIO
• Exploring WidgetKit: Creating Configurable Control Widgets in iOS 18 and SwiftUI
• Everything you never thought you wanted to know about emoji flags
• Mastering Navigation in SwiftUI Using Coordinator Pattern
• Design Your Dark and Tinted Versions of Your App Icon for iOS 18
• Import & Export Swift Data with Password
• Interactive Expandable Header — SwiftUI
• SwiftDraw — парсинг и отрисовка SVG-изображений
• Settings iOS — Настройки на SwiftUI
Android
• 10 самых распространенных ошибок с Jetpack Compose
• Kotlin Coroutines. От А до Я
• Подходы к многомодульной функциональной архитектуре на Android
• Автообновление через GitHub releases с помощью Hilt и Retrofit в Android
• Mapping объектов с помощью MapStruct
• Как переход на AGP&Gradle 8.* изменил взгляд на работу с производительностью сборки
• 5 уроков из опыта реализации pixel-perfect тестирования дизайн-системы в Android
• Gradle-сборка. Измеряем самое важное
• Шифруем файлы в Android
• Выпуск Android 15 перенесен на октябрь
• Effective Map Composables: Draggable Markers
• Kotlin Granular Analytics With Lifecycle Delegate
• Add powerful analytics modifiers in Jetpack Compose with ModifierLocal
• Strikt Unit Testing In Kotlin
• Adding 16 KB Page Size to Android
• NFC on Android: Creating a prepaid payment system using NDEF tags
• Hard-earned Learnings From Navigating Google Play App Rejections
• Kotlin Extensions: A Complete Guide to Extension Functions in Kotlin
• An effective testing strategy for Android – Unit Testing
• Convergence in a multi-module application
• How to implement Synchronization in Room Database in Kotlin
• Jetpack Compose and collectAsLazyPagingItems
• Create a Gradle Convention Plugin for Effortless Library Publishing
• Why using Channels is considered anti-pattern?
• Data structures and Algorithms are used in Android’s Architecture and Components
• Mastering Color Theming in Jetpack Compose
• Custom Koin Test Rule & Instrumented Android Tests in Multi-Module Architectures
• Creating Pixel-Perfect UI with Jetpack Compose
• Now in Android: 109 — Android 15 Beta 4, Samsung Galaxy Unpacked, Google Play’s new feature, & more
• Hot Flows vs. Cold Flows In Kotlin — When to Use What?
• 5 Kotlin Coroutine Secrets I Wish I Knew Earlier
• Kotlin After 2.0
• Revamping and Extending Kotlin’s Type System
• The state of code coverage for Kotlin
• Supercool App — пример использования паттерна Use Case
• Compose Stopwatch — секундомер на Jetpack Compose
• ArtMaker — рисование с Jetpack Compose
Кроссплатформа
• Апгрейд с Xamarin.Native на .NET 8
• Как я ускорил свое мобильное приложение BookDesk на React Native в 3 раза?
• Flutter vs Kotlin Multiplatform: что выбрать
• Pushing the Boundaries of Compose Multiplatform with AGSL Shaders
• A deep dive into freezed: Data classes, cloning, and (de)serialization
• White-label mobile apps with Flutter & Fastlane
• Enums on Steroids with Dart. Best Enum features ever!
• Cross-Platform Swift: Building a Swift app for the browser
• Flutter Reload: What’s Under the Hood
• There’s more than a mouse in Compose Multiplatform for Desktop
• Flutter tutorial: Sliding and resize image with CustomScrollView and Slivers
Разработка
• 2,5 тысяч экрано-состояний и тесты на сотнях устройств: как мы с нуля делали темную тему в приложении
• Server Driven UI: 6 причин не использовать его
• Как Google победил Skynet или подготовка обучения модели на мобильном устройстве
• Сложно ли пронести гаджет в школу
• Снифферы трафика в мобильном тестировании: Обзор инструментов и их особенности
• Большое UX/UI исследование мобильных приложений аптек
• О важном: инклюзивность интерфейсов, в которой нуждаются
• Кайфовый дизайн: Как сделать приложение, которое не захочется удалить
• Как писать чистый код — угадываем что ввел юзер и дизайним с нуля Clean Code Approach
• Егор Бугаенко про ТикТок, Huawei и ленивых разработчиков
• Зачем учить язык Си в 2024 году — Как выбрать между C или C++ или Rust
• Зарплаты разработчиков в первом полугодии 2024
• Самые популярные языки программирования 2024 от IEEE Spectrum
• Less Is More: Principles for Simple Comments
• Better CI/CD with GitHub Actions and deployment tracking
• Designing Apps: 5 Methods to improve your workflow
• How we run migrations across 2,800 microservices
• How we sped up Notion in the browser with WASM SQLite
• Programming With ChatGPT
• Cognitive Load is what matters
Аналитика, маркетинг и монетизация
• Calm запускает «осознанные» истории
• Snapchat запустился на iPad
• Niantic стремится создать более насыщенную 3D-карту мира с помощью новой версии приложения Scaniverse
• The Shippies — первый конкурс RevenueCat для приложений с подпиской
• У Telegram лучший месяц по доходам
• Самые скачиваемые и зарабатывающие приложения в мире в июле 2024
• Где найти стажеров и молодых сотрудников: создали приложение с 900+ тысячами скачиваний
Cheap! Cheap! The Perils of Low Cost Being your ONLY Advantage
AI, Устройства, IoT
• $1697 за выключатель кондиционера: DIY ремонт управляющего планшета
• Действительно ли большие языковые модели галлюцинируют? Эксперимент
• Насколько ChatGPT-4o подвержен когнитивным искажениям?
• IoT Geofencing: как мы сократили время определения функциональных зон, используя H3-индексы
• Реализуем машинное обучение на сервере с помощью Swift
• Codeium привлек $150 млн и стал единорогом
• Стартап Magic, занимающийся ИИ-программированием, получил $320 млн инвестиций
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.