В новом дайджесте закрытие CocoaPods и излишества чистой архитектуры, деструктуризация в Kotlin с примерами и знакомство с Flutter GPU, архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем, кто может стать программистом, сокращение количества вакансий для разработчиков и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

iOS
• Создание XCFramework из SPM пакета
• CocoaPods прекращает развитие и переходит в режим поддержки
• Как я бросила двустороннюю архитектуру и ушла к Redux со SwiftUI и SwiftData
• Основы фреймворка Combine для ML в Swift
• Поиск работы iOS разработчиком в текущих условиях 2024
• Apple открывает доступ к NFC в iOS 18.1
• Apple разрабатывает настольного робота
• Встраиваемый Swift: начинаем работу
• Реверс-инжиниринг iOS-приложения
•
Tracking geometry changes in SwiftUI
•
Cancellable withObservationTracking in Swift•
•
Swift Navigation: Powerful navigation tools for all Swift platforms
•
Key Lessons When Moving Towards a Modular Codebase
•
Exploring SwiftUI: Animating Mesh Gradient with Colors in iOS 18
•
Considerations for Using Codable and Enums in SwiftData Models
•
Extend Your App’s Controls Across the System
•
Exploring Local Storage in iOS: iStorageEnumV2.0
•
Recursive enums in Swift
•
The Tale of Method Sizzling: A Coding Adventure
•
Expandable Search Bar + Progressive Blur Effect
•
iOS 18 SwiftUI ScrollView DeepDive
•
SwiftUI: Test Push Notifications With iOS Simulators
•
PhraseKit — случайные, но читаемые фразы
•
Swift Fluent Icon — fluent иконки от Microsoft
•
Swift Semantic Search — семантический поиск в реальном времени на устройстве
Android
• Использование Чистой Архитектуры в Android излишество? — Обсуждение на Reddit
• Вредные советы, как приходить с вопросами к техлиду
• Деструктуризация в Kotlin с примерами
• Когда ваше приложение умирает – жизненный цикл activity в Android для QA
• Передача данных между фрагментом и BottomSheetDialogFragment с использованием Dagger и Navigation Component
• Оптимизация Gradle: избавляемся от Android-модулей
• ByteWeaver. Инструментирование байт-кода во имя великого блага
• Используем библиотеку Android Security Lints для Android
•
Advanced Kotlin Flow Cheat sheet (for Android Engineer)
•
Made by Google 2024
•
Android Release Automation — Our Journey to Fully Automated Weekly Releases
•
Composing Suspend Functions
•
Jetpack Compose Theme with Composition Local: Spacing, Shaping, and Status Colors
•
Efficient Render Passes — On Tile-Based Rendering Hardware
•
Prefer Composition over Inheritance
•
Android Process Lifecycle + Coroutines == ❤
•
Advanced Bottom Sheet With Flexible Configuration for Compose
•
How to Get Access to ALL External Media Files (Works on Android 15!)
•
How to Pass Custom NavTypes in Compose Type-Safe Navigation
•
Kotlin’s Elegant Deceptions Simple APIs, Unusual Tactics
•
Harmonizing Kotlin codebases with Konsist
•
Android, Compose, Multiplatform & Server — Inject them all with Koin
•
Elevating Android App Resilience: Incident Management Strategies
•
Jetpack Compose Endless Horizontal Pager Animation — демо горизонтального пейджера
•
Cat Activity — трансляция активности в IDE в Discord
Кроссплатформа
• Как мы создали приложение для ТСД на Flutter с интеграцией 1С и внедрили его на 200 фабриках в Китае
• Внедрять Kotlin Multiplatform легко. Масштабировать сложно.
• От Web к Native с React
• PWA vs Native: где приложения для iOS и Android больше никогда не пригодятся
• Знакомимся с Flutter GPU
• Оптимизация производительности Flutter приложений
• Что думают про Flutter техлиды: инсайты из опроса
• Полный гайд по тестированию на Flutter. Часть 9: Best practices написания Unit-тестов + Части 7-8: Ошибки, которые усложняют написание тестов
• Почему вам не нужен Kotlin Multiplatform
• Создание indoor-карты здания во Flutter
•
Rust GUI library via Flutter, done simple
•
Foreground Services in Flutter: Run tasks when your App is minimized
•
Flutter Magic: Changing App Icons Dynamically (Even on Stubborn Android!)
•
Ensuring Seamless User Experience: Implementing In-App Updates in Flutter
•
Diving into Advanced Compose Multiplatform Modifiers and Their Impact on Multiplatform Development
Разработка
• Как мы соединили обучение с рабочими задачами и не остались в пустой аудитории. Опыт подготовки команды к SwiftUI
• Архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем
• Кто реально может стать программистом?
• 30 вопросов команде и себе — техника и практика формулировка хороших вопросов
• VK Звонки: поднимаем планку качества WebRTC-звонков
• Как пользоваться DivKit
• Количество вакансий для разработчиков сокращается
• CodeRabbit получил $16 млн на ИИ для Code Review
• Cursor, конкурент GitHub Copilot, привлек Cерию A на $60 млн при оценке в $400 млн
•
How we deleted 4195 code files in 9 hours
•
Enterprise Mobile Apps Development Principles
•
Variability, Not Repetition, is the Key to Mastery
•
Following Industry Trends Can Be a Career Trap
•
How I Created 175 Fonts Using Rust
•
Practices of Reliable Software Design
•
Apple Design Award Winner Devin Davies Shares His Learning Strategies
•
Kotlin for Data Analysis: Exploring Dataframes and Visualizations in Notebooks
•
AWS Certified Developer Associate Certification Course
•
Design a Car mobile app for iOS 18 in Figma
Аналитика, маркетинг и монетизация
• Epic Games Store с Fortnite запустился на iOS
• Epic Games предоставила грант AltStore PAL и тот стал бесплатным
• Spotify начал показывать цену на сайте в iOS
• Deep Live Cam заменяет лицо в трансляции в реальном времени
• Apple Search Ads заблокировали для российских аккаунтов
• Patreon будет платить 30% комиссию Apple
AI, Устройства, IoT
• Я больше не верю публичным датасетам
• Открытый проект Wi-Fi Bluetooth микророутера
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.


• Создание XCFramework из SPM пакета
• CocoaPods прекращает развитие и переходит в режим поддержки
• Как я бросила двустороннюю архитектуру и ушла к Redux со SwiftUI и SwiftData
• Основы фреймворка Combine для ML в Swift
• Поиск работы iOS разработчиком в текущих условиях 2024
• Apple открывает доступ к NFC в iOS 18.1
• Apple разрабатывает настольного робота
• Встраиваемый Swift: начинаем работу
• Реверс-инжиниринг iOS-приложения
•

•


•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Использование Чистой Архитектуры в Android излишество? — Обсуждение на Reddit
• Вредные советы, как приходить с вопросами к техлиду
• Деструктуризация в Kotlin с примерами
• Когда ваше приложение умирает – жизненный цикл activity в Android для QA
• Передача данных между фрагментом и BottomSheetDialogFragment с использованием Dagger и Navigation Component
• Оптимизация Gradle: избавляемся от Android-модулей
• ByteWeaver. Инструментирование байт-кода во имя великого блага
• Используем библиотеку Android Security Lints для Android
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Как мы создали приложение для ТСД на Flutter с интеграцией 1С и внедрили его на 200 фабриках в Китае
• Внедрять Kotlin Multiplatform легко. Масштабировать сложно.
• От Web к Native с React
• PWA vs Native: где приложения для iOS и Android больше никогда не пригодятся
• Знакомимся с Flutter GPU
• Оптимизация производительности Flutter приложений
• Что думают про Flutter техлиды: инсайты из опроса
• Полный гайд по тестированию на Flutter. Часть 9: Best practices написания Unit-тестов + Части 7-8: Ошибки, которые усложняют написание тестов
• Почему вам не нужен Kotlin Multiplatform
• Создание indoor-карты здания во Flutter
•

•

•

•

•


• Как мы соединили обучение с рабочими задачами и не остались в пустой аудитории. Опыт подготовки команды к SwiftUI
• Архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем
• Кто реально может стать программистом?
• 30 вопросов команде и себе — техника и практика формулировка хороших вопросов
• VK Звонки: поднимаем планку качества WebRTC-звонков
• Как пользоваться DivKit
• Количество вакансий для разработчиков сокращается
• CodeRabbit получил $16 млн на ИИ для Code Review
• Cursor, конкурент GitHub Copilot, привлек Cерию A на $60 млн при оценке в $400 млн
•

•

•

•

•

•

•

•

•

•


• Epic Games Store с Fortnite запустился на iOS
• Epic Games предоставила грант AltStore PAL и тот стал бесплатным
• Spotify начал показывать цену на сайте в iOS
• Deep Live Cam заменяет лицо в трансляции в реальном времени
• Apple Search Ads заблокировали для российских аккаунтов
• Patreon будет платить 30% комиссию Apple

• Я больше не верю публичным датасетам
• Открытый проект Wi-Fi Bluetooth микророутера
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.