В новом выпуске борьба с зависимостями и антипаттернами, соль непредсказуемости, юзабилити тестирование, несколько взглядов на SOLID и многое другое. Подключайтесь!
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
![](https://habrastorage.org/r/w1560/webt/we/rq/dv/werqdvfi_j1rfybdk6xblpqq2vg.png)
iOS
• Приключение на 5 минут: как мы переводили все зависимости на SPM
• ARKit 6. Что нового?
• Как добавить список лицензий и благодарностей CocoaPods и при чём тут Settings.Bundle?
• Диспетчеризация в Swift: погружение в теорию и практику
• Универсальный интерфейс
• Apple разрешает сторонние покупки в Южной Корее
• Понимаем архитектуру VIPER
• Apple выпустит VR/AR-гарнитуру в январе
•
SwiftUI 4 is killing my open-source projects
•
Extending Apple’s WWDC 2017 Demo App With SceneKit and SwiftUI
•
Create a beautiful Network Layer With Swift
•
How to filter screenshots, cinematic videos, and depth-effect photos in PHPickerViewController
•
Lightweight MVI architecture on iOS with UIKit
•
New in SwiftUI 4: Multi-Series Bar Chart
•
New in SwiftUI 4: Expanding TextField
•
A First Look at SwiftUI NavigationStack, NavigationPath, and “navigationDestination”
•
Module code generation in iOS development
•
Extracting Lazily Loaded Elements for UI Testing in a SwiftUI iOS App
•
Developing Twitter splash screen for iOS application
•
How to make absolutely any app look like a macOS app
•
Removing Dependencies: One Weird Trick for Increasing Happiness
•
Swift 5.7 Regex and RegexBuilder
•
The power of task view modifier in SwiftUI
•
Deep Dive into iOS Memory
•
Difference between frame and bound, the easiest explanation you can find nowhere
•
AsyncSequence & AsyncStream Tutorial for iOS
•
Behind the Design: Gibbon: Beyond the Trees
•
Understanding VIPER Architecture
•
Simple Introduction to Pencilkit
•
Rain+Lightning Animation using SpriteKit in SwiftUI
•
VIP design pattern (or Clean Swift)
•
SwiftUI Backports: SwiftUI для старых версий iOS
•
KeyboardToolbar: вспомогательная клавиатура для iOS
Android
• 8 антипаттернов в кодовой базе Android
• We need to go deeper: диплинки и кодогенерация
• Как сделать Android Studio потрясающей
• 14 задач по Kotlin lists, которые заставят вас подумать
• Почему вам нужно адаптировать свое приложение для Huawei AppGallery и как это сделать
• Полное руководство по тестовым дублерам в Android — Часть 2: Практика
•
Compose sample app: UI state with Flow, offline first
•
Using Live Templates to Improve Android Development Productivity
•
8 anti-patterns in Android codebase and why I hate them
•
Building your own custom layout with Jetpack Compose
•
Load Fragments in Jetpack Compose: Beyond What Google Taught
•
Android navigation with multiple back stacks
•
How to make Android Studio look Awesome!
•
Gradle Configuration Caching — Replacing a Build Listener with Build Services
•
Modularising Trendyol Android App for Build Efficiency
•
A Solution for Combining Kotlin Suspend Function + Retrofit
•
How we reduced our Android app size by 55% using Dynamic Delivery
•
Start Competitive Programming with Kotlin
•
Super Easy Navigation between Composable’s in Jetpack Compose
•
Screen response time. A critical metric for user experience
•
Surviving Configuration Changes in Android
•
TestDispatcher: Become the Clock Master
•
A Love Letter to Android
•
5 Useful Kotlin Extensions for Android Developers
•
What’s New in Android Studio Electric Eel
•
Pinball on Android: классический пинбол Windows
•
Compose Destinations: безопасная навигация для Jetpack Compose
•
Zeplin Asset: ресурсы из Zeplin в Gradle
Кроссплатформа
• Вся соль непредсказуемости: ценность рандомизации при разработке игр
• Разговор с разработчиками о производительности на Flutter
• Создание dungeon crawler'а с LeoECS Lite. Часть 2
• Использование Kotlin Multiplatform — исследование JetBrains
• Начинаем работу с .NET MAUI
•
A List of state management approaches in Flutter
•
7 Flutter Open Source Projects to Become a Better Flutter Developer
•
Flutter’s Stack and IndexedStack Widgets
•
Microfrontends with React Native
•
Improving shared architecture for a Kotlin Multiplatform, Jetpack Compose and SwiftUI app
•
Skia on React Native: First look
•
Drawing Animation in Flutter with svg
•
The Right Path To Being A Senior Flutter Developer
Разработка
• Как теория Бартла о психотипах геймеров помогает в комьюнити-менеджменте
• Как провести юзабилити-тестирование с респондентом и не провалить его
• 5 альтернатив TODO для побочных проектов и изучения нового языка
• Как мы перешли на регулярные релизы мобильного приложения. Часть I
• Открытый лекторий от Летних школ Яндекса
• Разработка: прототип игры Wordle в ProtoPie
• Один в поле не воин. Полезные интеграции для инструментов анализа мобильных приложений
• От кнопки «Создать приложение» до публикации в каталоге — глазами разработчика
• Обзор российской системы управления тестированием Test IT
• Взгляд тестировщика на SOLID
• Apache Doris получила статус проекта верхнего уровня
• VK открывает набор на бесплатную летнюю образовательную программу по мобильной разработке
• Niantic отменяет проекты и сокращает персонал
• Unity увольняет сотни работников
• IT-специалисты стали перерабатывать меньше
• GitHub запустил интерактивные курсы Github Skills
•
How to Create Your Own Operating System
•
How Big Should Touch Areas in Car Interfaces Be?
•
7 Habits of Highly Successful Coders
•
Dear developers, thank you for Github Copilot. Also, you’re fired.
•
Should Functions Be Small?
•
Modern Cloud for Multiplayer Games
•
5 Common Mistakes Every Junior Developer Makes!
•
How Tinder Solves Complex Lottie Localizations with Server Driven UI
Аналитика, маркетинг и монетизация
• Как мы работаем над продуктовыми гипотезами
• Adjust и AppLovin сокращают 12% персонала
• Newzoo: более 500 компаний работают над метавселеннными
• VK запускает программу поддержки разработчиков приложений в RuStore
• Самые зарабатывающие приложения США в мае
• Miniclip покупает SYBO Games, создателя Subway Surfers
AI, Устройства, IoT
• Что мы действительно (не)знаем о наличии сознания у сверхбольших нейросетей?
• Был excel — стал ML: как мы расход ингредиентов учились прогнозировать
• Автоматическая расстановка мебели: миф или реальность?
• Контекстные многорукие бандиты для рекомендации контента, или Не Бернулли единым
• Raspberry Pi представила новые Pico
• Все больше людей используют дипфейки для прохождения собеседований
• Arm представил процессоры Armv9 второго поколения
•
Learning to Play Minecraft with Video PreTraining
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
![](https://habrastorage.org/webt/we/rq/dv/werqdvfi_j1rfybdk6xblpqq2vg.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Приключение на 5 минут: как мы переводили все зависимости на SPM
• ARKit 6. Что нового?
• Как добавить список лицензий и благодарностей CocoaPods и при чём тут Settings.Bundle?
• Диспетчеризация в Swift: погружение в теорию и практику
• Универсальный интерфейс
• Apple разрешает сторонние покупки в Южной Корее
• Понимаем архитектуру VIPER
• Apple выпустит VR/AR-гарнитуру в январе
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• 8 антипаттернов в кодовой базе Android
• We need to go deeper: диплинки и кодогенерация
• Как сделать Android Studio потрясающей
• 14 задач по Kotlin lists, которые заставят вас подумать
• Почему вам нужно адаптировать свое приложение для Huawei AppGallery и как это сделать
• Полное руководство по тестовым дублерам в Android — Часть 2: Практика
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Вся соль непредсказуемости: ценность рандомизации при разработке игр
• Разговор с разработчиками о производительности на Flutter
• Создание dungeon crawler'а с LeoECS Lite. Часть 2
• Использование Kotlin Multiplatform — исследование JetBrains
• Начинаем работу с .NET MAUI
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как теория Бартла о психотипах геймеров помогает в комьюнити-менеджменте
• Как провести юзабилити-тестирование с респондентом и не провалить его
• 5 альтернатив TODO для побочных проектов и изучения нового языка
• Как мы перешли на регулярные релизы мобильного приложения. Часть I
• Открытый лекторий от Летних школ Яндекса
• Разработка: прототип игры Wordle в ProtoPie
• Один в поле не воин. Полезные интеграции для инструментов анализа мобильных приложений
• От кнопки «Создать приложение» до публикации в каталоге — глазами разработчика
• Обзор российской системы управления тестированием Test IT
• Взгляд тестировщика на SOLID
• Apache Doris получила статус проекта верхнего уровня
• VK открывает набор на бесплатную летнюю образовательную программу по мобильной разработке
• Niantic отменяет проекты и сокращает персонал
• Unity увольняет сотни работников
• IT-специалисты стали перерабатывать меньше
• GitHub запустил интерактивные курсы Github Skills
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Как мы работаем над продуктовыми гипотезами
• Adjust и AppLovin сокращают 12% персонала
• Newzoo: более 500 компаний работают над метавселеннными
• VK запускает программу поддержки разработчиков приложений в RuStore
• Самые зарабатывающие приложения США в мае
• Miniclip покупает SYBO Games, создателя Subway Surfers
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Что мы действительно (не)знаем о наличии сознания у сверхбольших нейросетей?
• Был excel — стал ML: как мы расход ингредиентов учились прогнозировать
• Автоматическая расстановка мебели: миф или реальность?
• Контекстные многорукие бандиты для рекомендации контента, или Не Бернулли единым
• Raspberry Pi представила новые Pico
• Все больше людей используют дипфейки для прохождения собеседований
• Arm представил процессоры Armv9 второго поколения
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.