Мобильная разработка за неделю #561 (21 — 27 октября)

В этом выпуске ключевые изменения в UIKit и восстановление удаленных сообщений в Telegram, самые весёлые TODO из Android-фреймворка и короткий путь с Senior-ами, инфляция званий, сравнение доходов App Store и Google Play, Yolo на пятирублёвой монете и многое другое. Подключайтесь!

s2_jwvova4icmvb_monqffx_xci.png

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

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• 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
377ae0333d0f4b7b97307c9eea5ee21a.gifModular Navigation in SwiftUI: A Comprehensive Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifImprove your app«s UX with SwiftUI«s task view modifier
377ae0333d0f4b7b97307c9eea5ee21a.gifMigrating Combine to AsyncAlgorithms
377ae0333d0f4b7b97307c9eea5ee21a.gifCreate ZIP files in Swift without third-party dependencies
377ae0333d0f4b7b97307c9eea5ee21a.gifHow Do Binaries work together? What breaks ABI?
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to significantly improve incremental build time with xcodebuild
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Build Our Own Container
377ae0333d0f4b7b97307c9eea5ee21a.gifVapor and Swift Testing: Running tests in parallel
377ae0333d0f4b7b97307c9eea5ee21a.gifMaking Accessibility Accessible
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to use Cursor for iOS development
377ae0333d0f4b7b97307c9eea5ee21a.gifAnyView is everywhere in Xcode 16
377ae0333d0f4b7b97307c9eea5ee21a.gifComprehensive Guide to Mastering KeyPath in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifBeginner«s Guide to Protocol Buffers and gRPC with Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI or UIKit in 2024 & 2025
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Create Interactive Table View in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding a 2048 PowerPlay Game for Apple Watch with SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifHow I Used Keynote to Create iOS App Screenshots and Preview Videos from the Same File
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating view transitions in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifMy Journey as an iOS Developer Intern at Teads
377ae0333d0f4b7b97307c9eea5ee21a.gifCollapsible Headers in SwiftUI: It Took Three Attempts to Get It Just Right
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCocoaHeadsNL Meetup
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGoogle Engineer Teaches Us How to Set Up Firebase in Your iOS Project
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApp-Wide Overlays | SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMockData, PreviewModifiers and PreviewTraits in SwiftUI
96716bcb926741e79bb1c284a88083ca.pngKeyboardKit Pro — кастомные клавиатуры для iOS и iPadOS
96716bcb926741e79bb1c284a88083ca.pngPIPKit — картинка в картинке на iOS

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Восстанавливаем удалённые сообщения в Telegram
• Самые весёлые TODO из Android-фреймворка
• Пример: взлом покупок в Android-приложении и защита от этого
• Как в eXpress достигали мгновенного рендера отправки сообщения: оптимизация локальной базы данных
• Решение проблемы race condition в Kotlin корутинах
• Как потратить шесть лет и быть невидимкой в Play Market
• Забудьте про терминал! Как я избавлялся от рутинных ADB команды с помощью Shortcuts
• Анализ и оптимизация проблемы задержек и пропуска кадров в анимации загрузки
• Основы View и ViewGroup. Создаём интерфейсы в Android-приложениях
• Избавляемся от Context в бизнес логике — как ответить на собеседовании
• Анализ сведений о запуске и завершении приложений в Android 15
• Суд приостановил решение об открытии Google Play и Android
377ae0333d0f4b7b97307c9eea5ee21a.gifImplementing Overslide interaction in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifUnplugged DI — DI.Y Basics
377ae0333d0f4b7b97307c9eea5ee21a.gifMaking my concurrent algorithm 6000% better
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing Kotlin Reflection to Automate Compose Navigation
377ae0333d0f4b7b97307c9eea5ee21a.gifThat Weird Compose Crash
377ae0333d0f4b7b97307c9eea5ee21a.gifCircular Reveal Animations in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing popBackStack ()? Then Your App Likely Has a Bug.
377ae0333d0f4b7b97307c9eea5ee21a.gifReusable Styles in Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced Kotlin: Exploring Lesser-Known Syntax and Features
377ae0333d0f4b7b97307c9eea5ee21a.gifChanges in Android 15 for developers
377ae0333d0f4b7b97307c9eea5ee21a.gifGet your App Performance Score
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin Under the Hood: Exploring Constructors and Init Blocks
377ae0333d0f4b7b97307c9eea5ee21a.gifImplementing Overslide interaction in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifBuild Stunning Grids in Minutes with LazyVerticalGrid
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding JankStats: Optimizing Your Android App«s Performance
377ae0333d0f4b7b97307c9eea5ee21a.gifRethinking Exception Handling with Kotlin«s Result Type
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngStudio Jewelry — Android Developers Backstage
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Migrate Your App to Support the NEW Predictive Back Gestures On Android
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Implement Image Compression On Android
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPractical Tips and Tricks to Improve Your Compose Previews
96716bcb926741e79bb1c284a88083ca.pngAndroid Compose Accessibility Techniques — лучшие практики доступности
96716bcb926741e79bb1c284a88083ca.pngGroupTrack — семейный локатор

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

• Как работать с разрешениями для чтения и записи файлов в Android 13+ на примере React Native
• Встречаем yx_scope: DI-фреймворк для работы со скоупами в открытом доступе
• Two-Tier Data Model архитектура: концепт и мысли
• Интеграция TFLite во Flutter: внедряем модели машинного обучения в мобильное приложение
377ae0333d0f4b7b97307c9eea5ee21a.gifWriting a personal website in Flutter Web
377ae0333d0f4b7b97307c9eea5ee21a.gifDeveloping accessible mobile apps with Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifTop 10 Flutter Design Patterns in 2024
377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced Flutter Techniques Every Mobile Developer Should Know
377ae0333d0f4b7b97307c9eea5ee21a.gifSave Time by Copying Pre-Made Flutter Code Right into Your Project
377ae0333d0f4b7b97307c9eea5ee21a.gifScatter And Surface Plots
377ae0333d0f4b7b97307c9eea5ee21a.gifReact Native — New Architecture is here
377ae0333d0f4b7b97307c9eea5ee21a.gifDeep Linking Integration with Flutter
96716bcb926741e79bb1c284a88083ca.pngLets-Plot — мультиплатформенное черчение

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

• Подходы к сокращению регрессионного тестирования
• Задачи с собеседований: Leetcode — Сложите два числа
• Короткий путь с Senior-ами
• Честно и по делу: смотрим на F+ R570E с российской системой на борту
• Звания инженеров-программистов (почти) утратили свой смысл
• Крутить или не крутить?
• Как человеческий фактор может стать секретным оружием в руках QA
• Huawei окончательно отказывается от Android и запускает HarmonyOS NEXT
• Backend vs Frontend: сравниваем опыт разработчиков — что сложнее, перспективнее и кому больше платят
• Grafana: инструкция по применению
• Тесты с душком
• Как писать библиотеки: проектирование API, обратная совместимость
377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing Mellum: JetBrains» New LLM Built for Developers
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing AI Generated Code Will Make You a Bad Programmer
377ae0333d0f4b7b97307c9eea5ee21a.gif3 Lessons from the Smartest Developers I«ve Worked With
377ae0333d0f4b7b97307c9eea5ee21a.gifAttacking the Samsung Galaxy A* Boot Chain
377ae0333d0f4b7b97307c9eea5ee21a.gifA New Coding Paradigm: Declarative Domain Programming

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

• Disney+ и Hulu отказываются от встроенных покупок Apple
• Где деньги: сравнение доходов App Store и Google Play
• Сравнение доходов App Store и Google Play в категории Образование в США
• Daze, креативное приложение для обмена сообщениями с ИИ для Поколения Z, набирает аудиторию еще до запуска
• Azar пытается вернуть случайные видеочаты Поколению Z
377ae0333d0f4b7b97307c9eea5ee21a.gifThe future of mobile measurement playbook

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

• Запускаем Yolo на пятирублёвой монете или Luckfox Pico Mini
• Как мы обучили Mistral 7B русскому языку и адаптировали для объявлений Авито
• Кейс: создание программно-аппаратного комплекса управления антенной для радиоспорта по КВ
• Улучшаем умный дом на KNX: добавляем диспетчеризацию на Modbus
• Обзор Lenovo ThinkBook Plus Gen 5 Hybrid: больше безумных ноутбуков!
• ИИ Anthropic теперь может писать и выполнять код
• Raspberry Pi выпускает новые ИИ-дополнения
• HUGS упрощают развертывание открытых ИИ-моделей
• Новая модель искусственного интеллекта от Anthropic теперь может управлять компьютером
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLearn Claude AI — Build Text Summarizers, Image Describers, and More with the Anthropic API
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGemma Developer Day Tokyo

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

© Habrahabr.ru