Мобильная разработка за неделю #532 (25 — 31 марта)

В нашем новом еженедельном дайджесте WWDC 2024 и DVD-заставка на SwiftUI, более старый Android и инструментальные цепочки Gradle, анализ производительности React Native, инклюзивность и цифровая доступность, временное решение на 30 лет и многое другое. Подключайтесь!

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

sl-jum-sgplq4fbrxait3pnfaro.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Privacy Manifest: что нужно о нём знать для внедрения в проект
• Вопросы с собеседований: Жизненный цикл UIViewController
• Поваренная книга SwiftUI: тексты и шрифты — часть 2
• Apple запустила на YouTube канал для разработчиков
• WWDC 2024 пройдет с 10 по 14 июня
• Делаем DVD-заставку на SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing the Benchmark Package: Complementing Unit Tests with Performance Checks
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGuide to Naming SwiftUI Components
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMobile System Design (iOS): Swiggy/Zomato App
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDependency Injection for Modern Swift Applications
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to use Swift«s logging API
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTop 10 SwiftUI Features Every App Developer Should Know
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift 6 New Features
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKey press events detection in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSafe array subscription in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExploring SwiftUI: Orientation Property Wrapper
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIterating over websocket messages with async / await in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Closures Explained: From Beginner to Advanced
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Modifier Mastery: Enhancing Views and Layout Control
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUsing ViewModel with Protocols in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDate decoding strategies in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Actors — in depth
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFramework Creation And Code Visibility Control Using Binary
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPinch to Zoom — SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngRebuild Spotify in SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwift has more formatters than you know
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngXCTest Tutorial: How to add automated UI tests for Better iOS App Quality
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHorizontal Wheel Picker
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngStacked Cards Effect using SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCreate Realistic Particle Effects for visionOS
• 96716bcb926741e79bb1c284a88083ca.pngBenchmark: производительность Swift с поддержкой CI
• 96716bcb926741e79bb1c284a88083ca.pngSQLite.swift: обертка для SQLite3
• 96716bcb926741e79bb1c284a88083ca.pngAdwaita for Swift: GNOME приложения на SwiftUI
• 96716bcb926741e79bb1c284a88083ca.pngIgnite: конструктор статических сайтов для Swift-разработчиков

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»?
• Инструментальные цепочки Gradle редко бывают хорошей идеей
• Context receivers — новые extension functions
• Работа с UI-автотестами под Android: от запрета мерджа к особенностям запуска
• Экспортируем иконки из Figma в проект одним кликом: история одной автоматизации
• Android 15 выйдет только летом, но «потрогать» ОС можно уже сейчас. Что интересного в тестовой версии?
• Кодогенерация токенов дизайн-системы для Android по Figma API
• К чему с годами приводит работа с Dependency Injection и Service Locator
• Line height в Android TextView: где не сходится с Figma, как мешает pixel-perfect, и как это решить
• Реализация Lazy Dependency Holder (Продвинутая ленивая инициализация зависимостей) для больших команд
• Android-разработчица. Как сделать первые шаги?
• Что нужно учить в 2024
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRetaining beyond ViewModels
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreate Instagram-like Long Press and Draggable Carousel Indicators in Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRandom Musings on the Android 15 Developer Preview 2
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhat is FRIDA? Why Every Android Developer should it?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHandling UI Events in Jetpack Compose: A Clean Approach
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPerformance Impact Analysis of Gradle 8.7 in Android Projects
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuild a Real-Time Zoom Clone with Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA preview of Animating LazyList items in Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDrawing a Football Ground with Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifStarting Lineups on Football Pitch with Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to build a custom design system with Jetpack compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Kotlin Coroutines Dispatchers: A Look at Dispatchers.Main.immediate
• 377ae0333d0f4b7b97307c9eea5ee21a.gifImportant Coroutine Interview Questions for Experienced Android Developers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIntroduction to ML Kit Document Scanner for Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOptimizing Lazy List in Jetpack Compose: Best Practices
• 377ae0333d0f4b7b97307c9eea5ee21a.gifScooping Out Vanilla Ice Cream
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngTime for Playtime — Android Developers Backstage
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Implement a Pull-to-Refresh LazyColumn with Material3 in Android
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngIf You«re Making These 5 Use Case Mistakes, You Haven«t Understood Clean Architecture
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMaterial You Review
• 96716bcb926741e79bb1c284a88083ca.pngSimpMusic: музыкальный плеер на основе YouTube Music
• 96716bcb926741e79bb1c284a88083ca.pngBetter Open With: диалог открытия файлов для Android
• 96716bcb926741e79bb1c284a88083ca.pngAboutLibraries: сведения о зависимостях и лицензиях

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

• Анализ производительности React Native приложений: как выявить проблемы и улучшить перформанс
• Flutter Dev Podcast #45: Собеседования на позицию Flutter-разработчика
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Use and Create Streams from Scratch in Dart and Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIntro to Metaprogramming in Dart
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOptimizing Configuration time for Android apps that use React Native
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOptimizing Flutter Performance: Techniques to Enhance Your App«s Speed and Efficiency
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter«s InheritedWidgets: Getting Started
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCommon Mistakes in Flutter and How to Fix Them
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDisplay images with Custom Paint using Supabase Storage
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFlutter Responsive UI Design

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

• Продуктовый подход к pet-проекту или как я разработал музыкальное веб-приложение
• Адаптация мобильного приложения для пользователей скринридеров. Опыт Яндекс Лавки
• 6 лет из жизни инди-разработчика
• Инклюзивность и цифровая доступность в дизайне: почему это важно для всех
• Эволюция главного экрана: хаос, исследования и редизайн
• Сложная архитектура простых приложений
• Оценочные шкалы в UX-исследованиях
• Пишем рекомендательную систему музыки на Java
• Задача из Моего Собеседования в Amazon
• Ада Лавлейс и программирование
• Осознанный подход к метрикам
• Playtime Engineering хочет упростить создание музыки для детей
• 10 упражнений от боли в спине, которые помогут программистам
• Самые высокооплачиваемые вакансии марта в сфере разработки приложений
• Временное решение просуществовало в Windows уже 30 лет
• Как руководить командой Senior-инженеров
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreate Visual Stories Without Drawing
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIndustrial Product Design Trends for 2024
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow Uber increased developer productivity and what you can learn from that
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDesign better alerts
• 377ae0333d0f4b7b97307c9eea5ee21a.gif10 Essential Exercises for Programmers to Prevent Back Pain
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhat I learned from the book Software Architecture: The Hard Parts
• 377ae0333d0f4b7b97307c9eea5ee21a.gif10 Core Product Design Principles
• 377ae0333d0f4b7b97307c9eea5ee21a.gifI«m A Developer Not A Compiler
• 377ae0333d0f4b7b97307c9eea5ee21a.gif10 Elegant and Handy User Interface Design Projects
• 377ae0333d0f4b7b97307c9eea5ee21a.gifConsistent Data Encryption in Android, iOS, and Flutter Apps with AES

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

• LinkedIn тестирует ленту с короткими видео
• Spotify тестирует видеокурсы для обучения всему — от создания музыки до Excel
• Евросоюз расследует несоблюдение Apple закона о Цифровых рынках
• Gamification in Product Design (UI/UX)
• The AppsFlyer Performance Index: 2024 Country Edition

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

• Умная квартира айтишника: хотел всё на Wi-Fi, но передумал
• Самый лучший в мире курс по Машинному обучению — Алгоритмы Машинного обучения с нуля
• Будка охраны или космический корабль
• Что делать, если твой заказчик — весы, или Как заговорить на одном языке с бытовой техникой
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAI Flutter Code Generator with Gemini API

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

© Habrahabr.ru