Мобильная разработка за неделю #552 (19 — 25 августа)

В этом выпуске отслеживаем утечки памяти в iOS и выносим ViewModel из Compose функций, тестируем производительность Flutter и React Native, определяем кто тратит больше всего денег в приложениях и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

vvpmsekoc7zboezrv4_9h1ynejc.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime
• Concurrency шаг за шагом — сетевой запрос
• Performance Testing для iOS
• 5 рандомных вопросов на собеседовании iOS разработчика
• Антимат в чате на iOS: как я мешаю пользователям сквернословить
• От Cocoapods к Tuist+SPM быстрыми шагами
• Apple все еще стоит на пути магазина приложений Epic
• На iPhone в ЕС можно будет менять телефон и приложения для обмена сообщениями по умолчанию
• Springboard в iOS падает при вводе четырех символов
• Руководитель App Store покидает свой пост, Apple готовится к организационным изменениям
377ae0333d0f4b7b97307c9eea5ee21a.gifAn Initial Hands-On with SwiftCloud
377ae0333d0f4b7b97307c9eea5ee21a.gifDisabling Xcode Asset Symbol Generation
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring SwiftUI: Creating a Playful Onboarding Screen
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding the @FetchRequest property wrapper in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to create custom reusable container views in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating a Swipeable View that is Backward Compatible with iOS 16
377ae0333d0f4b7b97307c9eea5ee21a.gifThe Hidden Treasures of Crash Reports
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Interactive and Useful Features in Swift 6
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI+MapKit: Maps, Styles, Overlays and Controls
377ae0333d0f4b7b97307c9eea5ee21a.gifTyped throws in Swift
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI App Theme Switcher — iOS 17 & 18
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Task Modifier Lifecycle Handling
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMeshGradients in iOS 18 and Xcode 15
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFloating Tab Bar — iOS 17 & 18
96716bcb926741e79bb1c284a88083ca.pngSwift MMIO — типобезопасный MMIO
96716bcb926741e79bb1c284a88083ca.pngSTTextView — мощный TextView

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Выносите ViewModel из Compose функций
• Мечтают ли Андроиды о нейропроцессорных модулях? Перенос модели TensorFlow Lite в мобильное приложение
• Фантастические баги: как их ловить и править
• Избегайте неиспользуемых сценариев в многоуровневой архитектуре
• Google закрывает Google Play Security Reward Program
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding BookMatch: A Journey into AI-Powered Book Recommendations
377ae0333d0f4b7b97307c9eea5ee21a.gifReplace Useless Cases with Interfaces
377ae0333d0f4b7b97307c9eea5ee21a.gifNothing is really cool in Kotlin
377ae0333d0f4b7b97307c9eea5ee21a.gifForbidden Love of Preference and DataStore
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding Side -effects in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifQuickly Toggle Between Artifactory and Local Android Libraries
377ae0333d0f4b7b97307c9eea5ee21a.gifBoost Developer Efficiency: Automate Android Login Workflows with ADB and Python
377ae0333d0f4b7b97307c9eea5ee21a.gifDesigning Effective UIs For Enhancing Compose Previews
377ae0333d0f4b7b97307c9eea5ee21a.gifGuide to Identify and Solve ANR Issues: Uncover the Hidden Culprits
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin reified Explained (no more type erasure)
377ae0333d0f4b7b97307c9eea5ee21a.gifTeaching a Composable to jump
377ae0333d0f4b7b97307c9eea5ee21a.gifLearn Kotlin and Android With Dove Letter
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin 2.0.20 Released
377ae0333d0f4b7b97307c9eea5ee21a.gifJetpack Compose: Top 10 mistake we all have made
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFragments in Compose
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Show Snackbars From ANY Place In Your Compose App
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Render PDFs on Android in Jetpack Compose •
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGoing fast with Kotlin
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFrom Code to Streams
gtu1iaz0-ajkbqpeq8n6dmql4zq.png a href=«www.youtube.com/watch? v=vRzE6HIz-_M»>Dynamic Exploration of Static Analysis with Compose
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApplying the Decorator Pattern in Kotlin
96716bcb926741e79bb1c284a88083ca.pngReorderable — перетаскивание элементов в Lists и Grids в Jetpack Compose
96716bcb926741e79bb1c284a88083ca.pngOTP Helper — автоматическое получение кодов из уведомлений

malx8hbgozt6lee8rmxmg96_s6a.pngКроссплатформа

• Flutter против React Native — тест производительности
• Руководство по deep links в Flutter-приложениях
• Валидация форм во Flutter как PRO. Мастер-класс по использованию form_model и BLoC
• Тестирование BLoC
• Почему вам стоит учить/использовать Kotlin Multiplatform
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter: Module-based Code Coverage Thresholds
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter: Google Maps Autocomplete SearchBar with Debouncing
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter clean code and best practices
377ae0333d0f4b7b97307c9eea5ee21a.gifComprehensive Guide to Testing Riverpod Providers
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe rollercoaster of releasing an Android, iOS, and macOS app with KMP
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngUsing C & native platforms in Kotlin: Building a multi-platform advanced library
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMastering Concurrency: End to End Stress Testing with Kotlin Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngReact Native MacOS App Tutorial — Book Management System
96716bcb926741e79bb1c284a88083ca.pngBookMatch — BB рекомендации книг на KMP

7081c634ec176ab6b953d9d19e82a09a.pngРазработка

• Как я сделал успешный побочный проект и возненавидел его
• «По вертикали и по горизонтали»: как перенести бумажные сканворды в онлайн, чтобы решать с друзьями на удаленке
• Гайд: создаем функционального Telegram-бота на Dart
• 11 исследований, кризис и вызовы: всё о технической трансформации «Райффайзен Онлайн»
• VK Education открывает набор на бесплатные образовательные IT-курсы
• Задачи с собеседований: Leetcode — Является ли число палиндромом
• Как делать что угодно очень быстро
• Задача на логику из собеседования в Amazon
• Ozon Tech Community TeamLead Meetup
• Как успевать больше, оставаясь эффективным, и не выгореть
377ae0333d0f4b7b97307c9eea5ee21a.gifProject Management Flow for Indies
377ae0333d0f4b7b97307c9eea5ee21a.gif cAlgorithms we develop software by
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Indie Life: Reducing Friction by Analytics
377ae0333d0f4b7b97307c9eea5ee21a.gifServer Driven UI: 6 reasons to not use it
377ae0333d0f4b7b97307c9eea5ee21a.gifHow DoorDash Defines Great Engineering Management

509dc9bde69347ecbe0c21ff2973d7e7.jpgАналитика, маркетинг и монетизация

• Топ быстрорастущих приложений в России в августе
• Кто тратит больше всего денег в приложениях
• Почему CapCut может отказаться от бесплатных пользователей?
• Как удерживать пользователей в мобильных играх

8538129f5e7b404a720121cb9c3814db.jpgAI, Устройства, IoT

• Как Яндекс создал технологию эмоционального синтеза в Алисе
• Как с помощью ML делать профессиональные подборки лучше редакторов
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to get from high school math to cutting-edge ML/AI

← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

© Habrahabr.ru