Мобильная разработка за неделю #541 (3 — 9 июня)

В нашем новом выпуске исследуем рынок работы для iOS-разработчиков, использование ИИ и кроличьи норы оптимизации, погружаемся в мир Lint-a, строим BDUI, определяем рынок мобильных приложений в 1 квартале 2024 года и многое другое. Подключайтесь!

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

fvboveono1ifizhukzi8qp7t-di.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Рынок работы для iOS-разработчиков — обсуждение в Reddit
• GPT vs Copilot: кто лучший помощник в написании UI-тестов для iOS?
• ChatGPT для Swift: 5 лучших промптов для генерации кода
• Как я преподавал алгоритмы в 4 местах и проходил iOS-курсы. Что помогло получить работу?
• SwiftUI уроки (часть 14)
• WWDC 2024. Прогнозируем, что ждет разработчиков
• SwiftUI инпут: проблемы и решения
• Победители Apple Design Awards 2024
• Как не наломать дров с Live Activity
• Поваренная книга SwiftUI: изображения и иконки — Часть 3
• 377ae0333d0f4b7b97307c9eea5ee21a.gifConfiguring Previews
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDo NOT init State externally in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifObjective-C basics for Swift developers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Two Views Same Size 2 Ways
• 377ae0333d0f4b7b97307c9eea5ee21a.gifProgrammatically Hide Navigation in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUsing App Intents in a SwiftUI app
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Package Manager framework creation in Xcode
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift at 10
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreating custom buttons and hover effects in visionOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreating gradient on polylines in SwiftUI MapKit
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGlitch Text Effect — SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngVertical Circular Carousel — SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngModern UIKit: Sneak Peek, Part 1
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMeet Core Location Monitor
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDetect animal poses in Vision
• 96716bcb926741e79bb1c284a88083ca.pngSwiftfulRouting — программная навигация для SwiftUI
• 96716bcb926741e79bb1c284a88083ca.pngSweetPad — iOS-разработка в VSCode

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Вглубь еще одной кроличьей норы оптимизации
• Сам себе экосистема: итоги. Как работают мои самопальные клиенты ВК, YouTube, Telegram на смартфонах 13-летней давности
• Jetpack Compose: совместимость с System UI и иммерсивная строка состояния
• Погружение в мир Lint’a в Android-проекте
• Как создать аудиоплеер. Часть 2. Использование ExoPlayer + Часть 1
• Кодревью опенсорс проекта или как выглядят 10 лет технического долга
• Сколько памяти нужно для сборки? Android-разработчикам о JVM
• Что скрывает State в Compose
• DPE University — обучение Gradle, Apache Maven и Develocity
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEffective Map Composables: Non-Draggable Markers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifInjecting your Compose applications with Koin — From Android to Multiplatform
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSecuring the Future: Navigating the Deprecation of Encrypted Shared Preference
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin K2 FIR Quickstart Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRegion specific resources and broken localization
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEverything you want to know about Functional interfaces in Kotlin
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow I Finally Memorized Modifier Ordering in Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid- WorkManager in Clean Architecture
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Android Multi-Module Architecture with Convention Plugins
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuild a Cat Chatbot using Gemini on Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifConcurrency & Networking in Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifComposition Over Inheritance In Kotlin Explained
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhy your «BaseActivity» is anti-pattern. Kotlin Delegations
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGeofence in Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Jetpack Compose Keyboard Cheat Sheet
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAutomatically Adjust Navigation Based On Screen Size With NavigationSuiteScaffold
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin 2.0, Google IO, Android 15 and More
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlinConfersations»24
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCompose Migration Side Effects — What Can Go Wrong?
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Best Way to Learn as an Android Developer
• 96716bcb926741e79bb1c284a88083ca.pngBytemask — плагин Gradle для шифрования секретных строк
• 96716bcb926741e79bb1c284a88083ca.pngModuleCheck — быстрая проверка графа зависимостей для Gradle
• 96716bcb926741e79bb1c284a88083ca.pngJetmagic — отзывчивые приложения для Android с Compose

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

• Встроенные коллекции Dart: как реализовать в коде основные структуры данных. Глава из книги
• Best practices локальной аутентификации на Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEnhancing Your Flutter Project with Typesafe Packages
• 377ae0333d0f4b7b97307c9eea5ee21a.gifStreamline Flutter Development with Clean Architecture
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDependency Injection in Compose Multiplatform
• 377ae0333d0f4b7b97307c9eea5ee21a.gifReleasing my First True Kotlin Multiplatform App
• 377ae0333d0f4b7b97307c9eea5ee21a.gifApps using Compose Multiplatform on iOS in 2024 — developer insights
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAutomate Flutter Deployments to App Store and Play Store using Fastlane and Github Actions for a lazy developer
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLive Tracking — Flutter
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFull Stack Flutter, Firebase and Riverpod — Build a YouTube Clone

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

• Устройство для энтузиастов — телефон на ОС «Аврора»
• Как освободить 20% времени тестировщиков: дизайн-ревью в Lamoda Tech
• Как мы строили BDUI: опыт Яндекс Маркета
• Работа над ошибками: как мы сделали приложение World Class удобнее
• Mobius 2024 offline. День второй + День первый
• Agile увеличивает риск провала проекта на 268%
• Инди-хакинг: как программисту работать на себя — доход на пет-проектах
• Разработчики против тестирования
• Побывав в шкуре тимлида — взгляд разработчика изнутри
• 377ae0333d0f4b7b97307c9eea5ee21a.gifСамые высокооплачиваемые вакансии мая в сфере разработки приложений
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhy I retired from the tech crusades
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow Figma overhauled their Performance Testing Framework
• 377ae0333d0f4b7b97307c9eea5ee21a.gifManaging My Motivation, as a Solo Dev
• 377ae0333d0f4b7b97307c9eea5ee21a.gif5 Best Practices for the Sign-up Flow

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

• Рынок мобильных приложений в 1 квартале 2024 года — отчет Sensor Tower
• 26 техник, которыми геймдизайнеры манипулируют игроком в видеоиграх
• Клиентская миграция: как бизнес переводит клиентов из старого приложения в новое
• Как Growth Loops кардинально изменяют подход к продуктовой разработке
• Aptoide запускает альтернативный магазин игр для iOS в ЕС
• Polycam поставил рекорд и достиг выручки в $1 млн в месяц

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

• Какой ИИ и как помогает разработчикам — опрос Stack Overflow
• Смартфоны станут основным форм-фактором для ИИ
• Устанавливаем и применяем Docker на Repka Pi
• Raspberry Pi 5 получит свой ускоритель ИИ

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

© Habrahabr.ru