Мобильная разработка за неделю #561 (21 — 27 октября)
В этом выпуске ключевые изменения в UIKit и восстановление удаленных сообщений в Telegram, самые весёлые TODO из Android-фреймворка и короткий путь с Senior-ами, инфляция званий, сравнение доходов App Store и Google Play, Yolo на пятирублёвой монете и многое другое. Подключайтесь!
Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• iOS 18 для разработчиков: Ключевые изменения в UIKit
• Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя
• Внедряем снепшот-тестирование, или пять стадий принятия неизбежного
• Области тьмы: разбираем неочевидные моменты при использовании памяти в Swift
• Как я преодолел отказ в модерации App Store: история приложения YoloPrice
• Азартная разработка iOS приложения игры 2048 с ChatGPT
• Изменение модели данных CoreData для iOS приложения с iCloud синхронизацией
• Макросы в Swift: Практическое руководство по использованию
• Apple обновляет TestFlight
• Apple открывает исследование безопасности Private Cloud Compute
• Выпуск Vision Pro могут прекратить к концу 2024 года
• Вышла бета-версия iOS 18.2 с Apple Intelligence
• Apple работает над новым App Store для игр
• Создание настраиваемого сегментированного контрола в SwiftUI
• Modular Navigation in SwiftUI: A Comprehensive Guide
• Improve your app«s UX with SwiftUI«s task view modifier
• Migrating Combine to AsyncAlgorithms
• Create ZIP files in Swift without third-party dependencies
• How Do Binaries work together? What breaks ABI?
• How to significantly improve incremental build time with xcodebuild
• SwiftUI: Build Our Own Container
• Vapor and Swift Testing: Running tests in parallel
• Making Accessibility Accessible
• How to use Cursor for iOS development
• AnyView is everywhere in Xcode 16
• Comprehensive Guide to Mastering KeyPath in Swift
• Beginner«s Guide to Protocol Buffers and gRPC with Swift
• SwiftUI or UIKit in 2024 & 2025
• How to Create Interactive Table View in SwiftUI
• Building a 2048 PowerPlay Game for Apple Watch with SwiftUI
• How I Used Keynote to Create iOS App Screenshots and Preview Videos from the Same File
• Creating view transitions in SwiftUI
• My Journey as an iOS Developer Intern at Teads
• Collapsible Headers in SwiftUI: It Took Three Attempts to Get It Just Right
• CocoaHeadsNL Meetup
• Google Engineer Teaches Us How to Set Up Firebase in Your iOS Project
• App-Wide Overlays | SwiftUI
• MockData, PreviewModifiers and PreviewTraits in SwiftUI
• KeyboardKit Pro — кастомные клавиатуры для iOS и iPadOS
• PIPKit — картинка в картинке на iOS
Android
• Восстанавливаем удалённые сообщения в Telegram
• Самые весёлые TODO из Android-фреймворка
• Пример: взлом покупок в Android-приложении и защита от этого
• Как в eXpress достигали мгновенного рендера отправки сообщения: оптимизация локальной базы данных
• Решение проблемы race condition в Kotlin корутинах
• Как потратить шесть лет и быть невидимкой в Play Market
• Забудьте про терминал! Как я избавлялся от рутинных ADB команды с помощью Shortcuts
• Анализ и оптимизация проблемы задержек и пропуска кадров в анимации загрузки
• Основы View и ViewGroup. Создаём интерфейсы в Android-приложениях
• Избавляемся от Context в бизнес логике — как ответить на собеседовании
• Анализ сведений о запуске и завершении приложений в Android 15
• Суд приостановил решение об открытии Google Play и Android
• Implementing Overslide interaction in Jetpack Compose
• Unplugged DI — DI.Y Basics
• Making my concurrent algorithm 6000% better
• Using Kotlin Reflection to Automate Compose Navigation
• That Weird Compose Crash
• Circular Reveal Animations in Jetpack Compose
• Using popBackStack ()? Then Your App Likely Has a Bug.
• Reusable Styles in Compose
• Advanced Kotlin: Exploring Lesser-Known Syntax and Features
• Changes in Android 15 for developers
• Get your App Performance Score
• Kotlin Under the Hood: Exploring Constructors and Init Blocks
• Implementing Overslide interaction in Jetpack Compose
• Build Stunning Grids in Minutes with LazyVerticalGrid
• Understanding JankStats: Optimizing Your Android App«s Performance
• Rethinking Exception Handling with Kotlin«s Result Type
• Studio Jewelry — Android Developers Backstage
• How to Migrate Your App to Support the NEW Predictive Back Gestures On Android
• How to Implement Image Compression On Android
• Practical Tips and Tricks to Improve Your Compose Previews
• Android Compose Accessibility Techniques — лучшие практики доступности
• GroupTrack — семейный локатор
Кроссплатформа
• Как работать с разрешениями для чтения и записи файлов в Android 13+ на примере React Native
• Встречаем yx_scope: DI-фреймворк для работы со скоупами в открытом доступе
• Two-Tier Data Model архитектура: концепт и мысли
• Интеграция TFLite во Flutter: внедряем модели машинного обучения в мобильное приложение
• Writing a personal website in Flutter Web
• Developing accessible mobile apps with Flutter
• Top 10 Flutter Design Patterns in 2024
• Advanced Flutter Techniques Every Mobile Developer Should Know
• Save Time by Copying Pre-Made Flutter Code Right into Your Project
• Scatter And Surface Plots
• React Native — New Architecture is here
• Deep Linking Integration with Flutter
• Lets-Plot — мультиплатформенное черчение
Разработка
• Подходы к сокращению регрессионного тестирования
• Задачи с собеседований: Leetcode — Сложите два числа
• Короткий путь с Senior-ами
• Честно и по делу: смотрим на F+ R570E с российской системой на борту
• Звания инженеров-программистов (почти) утратили свой смысл
• Крутить или не крутить?
• Как человеческий фактор может стать секретным оружием в руках QA
• Huawei окончательно отказывается от Android и запускает HarmonyOS NEXT
• Backend vs Frontend: сравниваем опыт разработчиков — что сложнее, перспективнее и кому больше платят
• Grafana: инструкция по применению
• Тесты с душком
• Как писать библиотеки: проектирование API, обратная совместимость
• Introducing Mellum: JetBrains» New LLM Built for Developers
• Using AI Generated Code Will Make You a Bad Programmer
• 3 Lessons from the Smartest Developers I«ve Worked With
• Attacking the Samsung Galaxy A* Boot Chain
• A New Coding Paradigm: Declarative Domain Programming
Аналитика, маркетинг и монетизация
• Disney+ и Hulu отказываются от встроенных покупок Apple
• Где деньги: сравнение доходов App Store и Google Play
• Сравнение доходов App Store и Google Play в категории Образование в США
• Daze, креативное приложение для обмена сообщениями с ИИ для Поколения Z, набирает аудиторию еще до запуска
• Azar пытается вернуть случайные видеочаты Поколению Z
• The future of mobile measurement playbook
AI, Устройства, IoT
• Запускаем Yolo на пятирублёвой монете или Luckfox Pico Mini
• Как мы обучили Mistral 7B русскому языку и адаптировали для объявлений Авито
• Кейс: создание программно-аппаратного комплекса управления антенной для радиоспорта по КВ
• Улучшаем умный дом на KNX: добавляем диспетчеризацию на Modbus
• Обзор Lenovo ThinkBook Plus Gen 5 Hybrid: больше безумных ноутбуков!
• ИИ Anthropic теперь может писать и выполнять код
• Raspberry Pi выпускает новые ИИ-дополнения
• HUGS упрощают развертывание открытых ИИ-моделей
• Новая модель искусственного интеллекта от Anthropic теперь может управлять компьютером
• Learn Claude AI — Build Text Summarizers, Image Describers, and More with the Anthropic API
• Gemma Developer Day Tokyo
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.