Мобильная разработка за неделю #567 (2 — 8 декабря)

В новом дайджесте уменьшение размера банковского приложения и транзишинометр для Android, вопперы и табы, сертификаты и профили, сколько приложений, из выпущенных в 2024 году, стали успешными, вранье LLM и многое другое. Подключайтесь!

vu7okqorr-0cjump8frh9sxs_fo.png

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

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Анимируем представления UIKit с помощью анимации SwiftUI
• Как я уменьшил размер банковского приложения для iOS на 50%
• Cursor AI в iOS-разработке. Приложение «Фото с Flickr.com»
• Удобная навигация в SwiftUI для iOS 16 и выше
• Портал, манулы и мячи: опыт разработки для Apple Vision Pro. Часть 2
• Бразильский суд отменил антимонопольное решение по Apple
• Tesla представила приложение для Apple Watch
• Как работает App Store на Новый год
• Как мы внедряли пакетный менеджер и поняли всё про iOS-зависимости
• Как мы сделали внутренний сервис в The Composable Architecture
377ae0333d0f4b7b97307c9eea5ee21a.gifChatGPT in Xcode: is it good?
377ae0333d0f4b7b97307c9eea5ee21a.gifSimple state sharing and persistence in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifWhy Can«t You Loop Over Ranges of Characters in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding a Clone of the Messages app in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifStretching audio by small amounts using Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifText field enhancements in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifTesting completion handler based code in Swift Testing
377ae0333d0f4b7b97307c9eea5ee21a.gifIntegrating Live Activity and Dynamic Island in iOS: A Complete Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifLeveraging the Power of Generic Protocols in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifDebugging SwiftUI Layouts: Tips, Tricks, and Techniques
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Create Dynamic iOS Apps: Remote Styling with SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifSingleton in XCode 16
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhy not build Apple Intelligence ourselves?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Limit the Xcode Console Spam with CloudKit and SwiftData
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI App Intro Animation«s — Walkthrough Page Animation«s
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExtract UIKit View From SwiftUI View
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwift Testing 101 — Xcode 16 Tutorial
96716bcb926741e79bb1c284a88083ca.pngSFBAudioEngine — работа с аудио для macOS, iOS и tvOS
96716bcb926741e79bb1c284a88083ca.pngMotionMachine — мощная, элегантная и модульная анимация на Swift
96716bcb926741e79bb1c284a88083ca.pngATProtoKit — простая работа с AT Protocol

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Пишем транзишинометр для Android. Как понять, что мои экраны открываются быстро?
• Вопперы и табы: как мы сделали меню для Burger King
• Выделение слов в Compose
• От Kotlin до машинного кода
• Изогнутое нижнее меню в Jetpack Compose
• Jetpack Compose как unbundled-библиотека. Скорость UI vs. Гибкость разработки
• Самостоятельная доработка Android APS
• Настройка Sora Editor
• Play Integrity API становится быстрее и надежнее
• Как мы использовали Dynamic Feature Delivery на Android
• Как в Яндекс Музыке пишут визард с помощью Jetpack Compose
• Gradle уже не тот! Мнение билд инженера
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin trick: writing shared Enum utility code
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin 2.1.0: Smarter when with Guard Conditions
377ae0333d0f4b7b97307c9eea5ee21a.gifMigration Guide from Retrofit and KAPT to Ktor and KSP
377ae0333d0f4b7b97307c9eea5ee21a.gifRich Link Representation in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Studio Meerkat | 2024.3.1 Canary
377ae0333d0f4b7b97307c9eea5ee21a.gifTop 6 Tips for Starting a Modern Android Codebase From Scratch
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Binder Mechanism: The Backbone of IPC in Android
377ae0333d0f4b7b97307c9eea5ee21a.gifBuild AI-Powered Chatbot Apps for Android Using Firebase
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngClipping and masking | Jetpack Compose Tips
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Create a One-Time Password TextField in Jetpack Compose
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngImmutable and Persistent Lists
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHot Reload Magic
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAndroid 15 for Raspberry Pi 5
96716bcb926741e79bb1c284a88083ca.pngAerial Views — скринсейвер для Android по мотивам Apple TV
96716bcb926741e79bb1c284a88083ca.pngSVG to Compose — утилиты для конвертации SVG в ImageVector

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

• Два новых линта в Dart 3.4
• Гайд по кроссплатформенной разработке с использованием React Native
• Пишем golden-тесты для генераторов кода на Dart
377ae0333d0f4b7b97307c9eea5ee21a.gifLessons learned releasing my first Flutter app on iOS
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding a WatchOS Companion App for Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifGoogle needs to invest in more Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter: Simplified Unidirectional Data Flow
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter vs. React Native«s New Architecture: Performance Benchmark
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngUUID in Kotlin Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Manage Run-Time Permissions in Android and iOS with Compose Multiplatform

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

• Почему не стоит указывать сертификаты в своем профиле
• Особенности использования сторонних сервисов в мобильных приложениях на примере Firebase
• В HarmonyOS нашли виртуальный Android
• Самые высокооплачиваемые вакансии декабря в сфере разработки приложений
• Как повысить свою ценность в ИТ: в поиске новых компетенций
• Карьерный маршрут: от мидла до архитектора ПО
• Построение event-driven приложения с Apache Flink
• От исполнителя до менеджера менеджеров: что поможет, а что не спасет
• PL/SQL — SQL на стероидах: Oracle, энтерпрайз, базы данных
377ae0333d0f4b7b97307c9eea5ee21a.gif4 Ways to Lead Meetings That Work
377ae0333d0f4b7b97307c9eea5ee21a.gifMaking a trading Gameboy: A pocket exchange and algo trading platform
377ae0333d0f4b7b97307c9eea5ee21a.gifEngineers Do Not Get To Make Startup Mistakes When They Build Ledgers
377ae0333d0f4b7b97307c9eea5ee21a.gifWASM-4: Build retro games using WebAssembly for a fantasy console

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

• Сколько приложений, из выпущенных в 2024 году, заработало больше $100,000?
• Custom Product Pages: как их внедрить и получить максимальную отдачу от рекламы iOS-приложения
• Сторис в МП — новая боль? Что делает ВкусВилл, Т-Банк, Авито и другие?
• Новогоднее освещение для дока и меню Mac
• Прогнозы Adjust на 2025 год: как мобильный маркетинг трансформируется в новых условиях 
• Cameo открывается для всех
• Кто выиграет от продажи Chrome?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPlaytime EMEA 2024

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

• Что побуждает LLM врать и как этого избежать в своих продуктах
• Малопотребляющий датчик с передачей данных по радиоканалу
• Смарт-очки Samsung дебютируют в январе

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

© Habrahabr.ru