Темы



Мобильная разработка за неделю #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