Мобильная разработка за неделю #516 (20 — 26 ноября)
В нашей новой подборке отслеживание изменений в SwiftUI и тысяча проблем App Clip, Kotlin под капотом и простая архитектура, OpenStreetMap в Flutter, 18 лет работы в Google, мышление Platform Engineer, приложением №1 в App Store, которое не обновлялись уже 7 лет и многое другое!
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Отладка представлений SwiftUI: что вызывает изменения?
• ChatGPT-4 в помощь: используем AI в доработке простого iOS-приложения
• App Clip и тысяча проблем
• Строки в Swift выглядят одинаково, но не являются таковыми?
• Swift-уроки: Actor
• Что можно и что нельзя делать с Async/Await
• Как получить международный оффер iOS-разработчику
• Вопросы с собеседований: что такое Семафор в Swift
• Выпуск Apple Vision Pro состоится «где-то в марте»
• Поваренная книга SwiftUI: настройка прозрачности
• Distributing Work Between Actors
• Swift strings look identical but aren«t
• How to migrate to a new schema with SwiftData in iOS
• Ensuring App UI Correctness Using Snapshot Tests
• The alternative to SwiftUI«s Spacer
• Animating numeric text in SwiftUI with the Content Transition modifier
• Typealias in Swift: 3 use cases
• Destroy dependency injection in Swift
• Deploy CoreML Models on the Server with Vapor
• enum Guru: Swift enum in depth
• Using Observation framework outside of SwiftUI
• Scoped animations in SwiftUI
• SwiftUI SplitView Compact Column Control
• Reference types and Retain cycles (Weak vs. Unowned)
• Swift UITableView Prefetching: A Guide to Smoother Scrolling
• Our developer account was removed by Apple, and they haven«t paid out $108,878
• Conquering the Climbing Stairs Challenge with Swift: A Dynamic Programming Approach
• From Concept to App Store: The Making of MuayThaiJournal
• Replacing your logging framework with OSLog
• Automatic Component Sizing — SwiftUI for iOS 17
• Simple Drop Down Picker — SwiftUI
• SwiftUI: New Observation Framework
• SwiftUI Tooltips with TipKit (Popover & Inline Tips)
• 8 Tips to Design a Great Paywall
• SwiftData Lightweight Migrations
• Swipe Actions For ScrollView — No Gestures! — iOS 17 Scroll APIs
• How to Make a Color Picker with ScrollView, Scroll Position and Visual Effects
• Kingfisher: загрузка и кеширование изображений
• AcknowList: список лицензий
Android
• Kotlin под капотом: нюансы использования аннотаций
• Пишем Kotlin DSL для графов навигации в домашних условиях
• Новые API для адаптивных макетов в Jetpack Compose
• API vs ABI: разницу видят не только лишь все
• Простая архитектура с использованием MVVM и делегатов в Android. Оптимальное решение для малых проектов
• Статический анализатор Ktlint для Kotlin в Android
• Как устроен Android в умных колонках Яндекса
• Топ-10 вопросов для Senior Android: собеседование с разбором ответов и материалами
• Где остановится Kotlin: язык поставил новый рекорд в индексе TIOBE
• Making my concurrent algorithm 6000% better
• Jetpack Compose + Material Components for Android TV: Cards
• Not all UI tests are the same
• Exercises in futility: One-time events in Android
• Java Memory Leaks: Detection and Prevention
• Making TDD a Habit in Android Development
• How to Add Content Descriptions in Compose
• Migration from Kapt to KSP
• ViewModel: Events as State are an Antipattern
• Top 10 Android Memory Leak Causes
• Mastering Camera2 API in Kotlin: A Comprehensive Guide with Examples
• Mastering Kotlin«s Invoke Operator: Simplifying Code and Enhancing Readability
• Law of Demeter with examples in Kotlin
• In-App Update in Android 2023
• Build Video Calling for Your Android WhatsApp Clone With Jetpack Compose
• How to Create an Animated Splash Screen for Android: A Step-by-Step Guide
• droidcon London 2023 Videos
• How to Migrate an Android Project to Kotlin Multiplatform (KMP)
• Firebase Demo Day Recap, Flutter 3.16, and more dev news!
• A Team of 20 to Publish an App?! — THIS New Google Play Policy Change is CRAZY
• Custom Savers
• Circuit — Android App Architecture Masterclass with Zac and Josh from Slack
• Reorderable: таскание элементов в (Lazy)Column и (Lazy)Row
• Exposed: SQL-фреймворк для Kotlin
• Capturable: получение Bitmap из Composable
Кроссплатформа
• Как мы отказались от styled-components в React Native приложениях
• OpenStreetMap в Flutter-проекте: что такое flutter_map, как его внедрить и чем дополнить
• Как добавить Flutter в нативное приложение iOS и протестировать его на Codemagic: Часть 2 + Часть 1
• Flutter 3.16: обзор обновления фреймворка с комментариями разработчиков Surf
• Forbes Mobile App Shifts To Kotlin Multiplatform
• The new lint in Dart 3.2
• Major steps this year on the journey to multiplatform development
• Top 12 Flutter Open source projects
• Flutter Interview Questions and Answers: Top 30 for Pros!
• Flutter Networking Tutorial: Getting Started
• Memory Management in Flutter: Best Practices and Pitfalls
• Utilizing JS Library for Flutter Web
• Native UI Components in React
• Our journey from React Native to Expo for mobile app development at Alan
• The State of Kotlin Multiplatform
• Getting Started With KMP: Build Apps for iOS and Android With Shared Logic and Native UIs
• Build Apps for iOS, Android, and Desktop With Compose Multiplatform
• Flutter Responsive UI: Crafting Dynamic Layouts for Every Device
Разработка
• Размышления о 18 годах работы в Google
• Как Spotify отслеживает размеры приложений
• Система аутентификации: сделай сам vs возьми готовое
• Мыслим как Platform Engineer
• Не нужно блокировать кнопки
• Лев Толстой о мобильной разработке: Искусство написания приложений
• Непрерывное тестирование: разработка выигрышной стратегии тестирования
• Tracer — альтернатива Crashlytics: другой взгляд на аналитику ошибок в приложениях
• Как качать миллионы фотографий в сутки, выдержать кратный рост и не умереть?
• Насколько реален российский айфон: разговор с Максимом Горшениным.
• Podlodka #347: развитие продукта от 0 до 1
• Исследование The State of Developer Ecosystem 2023 от JetBrains
• Magic Research: соло-разработчик заработал более $150,000, сделав всего 2 сообщения на Reddit
• GameMaker отменил подписку для инди-разработчиков
• Прежде чем пытаться что-то сделать, убедитесь, что вы можете сделать то, что ничего не делает
• Умный код — это, вероятно, худший код, который вы можете написать
• Goodbye, Clean Code
• How DoorDash Standardized and Improved Microservices Caching
• The Architecture Of Serverless Data Systems
• It«s OK if your code is just good enough
Аналитика, маркетинг и монетизация
• Что такое метрика ага-момента и как ее найти
• Проектирование экономики F2P игр на основе продуктовых метрик
• Компания Sunbird закрыла свое приложение для обмена сообщениями с iMessage
• Секретная сделка Google позволила Spotify полностью обойти плату за пользование Google Play
• Аудитория RuStore достигла 22.5 миллиона пользователей в месяц
• Rooms, интерактивный 3D-конструктор и просто «уютная игра», появился в App Store
• В App Store приложением №1 стали раскраски, которые не обновлялись уже 7 лет
• Good games don«t die — Can legacy titles save the mobile game industry?
• Mastering SKAN 4: The essentials for iOS success
AI, Устройства, IoT
• Чем заменить Raspberry PI в промышленности?
• KC868-AM: мини мы или ESP32 IO Expansion Board
• Опубликован курс «Генеративный ИИ для начинающих» от Microsoft
• Machine Learning with Python and Scikit-Learn — Full Course
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.