В этой подборке детективное расследование утечки памяти с Xcode и перегруженная Android-разработка, удовольствие и боль BDUI, $50K на простой AI-обертке, дейтинг для трезвых, конец миллиардных стартапов, поддерживаемых рекламой, и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

iOS
• Утечка памяти: детективная история с Xcode
• Изучаем WidgetKit: пишем виджет для Control Center в iOS 18
• Проверка доступности языка для перевода в фреймворке Translation
• Настоящая мощь Apple Intelligence проявится в сторонних приложениях
• iOS 18 выйдет 16 сентября
• Эволюция презентационных паттернов SwiftUI
•
Jailbreak your Enemies with a Link: Remote Execution on iOS
•
Making mistakes while learning Swift
•
How to support tinted home screen widgets in iOS 18
•
SwiftUI: Dynamically Add Images to View (Canvas vs ZStack)
•
Swift Testing: Validate your code using expressive APIs
•
Cheat sheet on VoiceOver gestures for iOS
•
Security Best Practices in iOS
•
Practical examples using The Composable Architecture (TCA)
•
@discardableResult in Swift
•
Converting an App from Obj-C
•
EventBus | Facilitate seamless event notifications within the application
•
MVC Template for Xcode: How It Can Accelerate Your Development Process
•
Custom Keyboards SwiftUI
•
SwiftUI — File / Folder & Architecture Setup for New Projects
•
iOS 18 SystemFormatStyle and TimeDataSource
•
SwiftUI Responsive UI Design — Adaptive Layout
•
Heat — LLM-клиент
•
DDLoggerSwift — работа с логами на устройстве
Android
• Android-разработка очень перегружена и в нее сложно вникнуть? — Обсуждение на Reddit
• Основы Jetpack Compose: как обеспечить стабильность вашего кода
• Избегаем ловушек автозавершения в Android Studio
• Ускоряем Android-приложения с помощью Baseline Profiles
• В Android блокируют установку приложений из сторонних источников. Почему это важно?
• Не слишком ли много мы разрешаем нашим приложениям?
• Пишем простенький DI для Android приложения
• Google Play Integrity API начал определять угрозы приложениям
• «Ленивый граф», или Как мы оптимизировали старт приложения
• В сетях сетевого слоя
•
Coroutine Testing — Controlling time
•
Creating a Custom Gauge Speedometer in Jetpack Compose
•
Improve Compose UI with Spacing Constants
•
Shimmer animations in Jetpack Compose without extra dependencies
•
Preview and test your app’s edge-to-edge UI
•
How to Create a Spinning Circles Loader in Jetpack Compose
•
Jetpack Compose APIs for building adaptive layouts using Material guidance now stable
•
Mastering TextDirection for Multi-Language Apps in Jetpack Compose
•
Type safe navigation for Compose
•
How we improved our 1Weather Android app cold startup time by over 70% and slow cold start sessions by over 24%+
•
Android Studio Ladybug Feature Drop
•
Jetpack Compose: Setup Retrofit and Ktor using Dagger Hilt for Dependency Injection
•
How to Create a Clock Wipe Animation in Jetpack Compose
•
How to Create a Custom Animated Hole Effect in Jetpack Compose
•
How to Create a Rainbow Loader Animation in Jetpack Compose
•
debounce vs sample in Kotlin flow
•
Keep Your ViewModels Clean: A Guide to Event-Driven Architecture in Android
•
Jetpack Compose custom navigation with KSP
•
CameraX and Jetpack Compose: A Guide for Android Developers
•
Streamlining Android authentication: Credential Manager replaces legacy APIs
•
The val Property != Immutable in Kotlin
•
Видео droidcon Berlin 24
•
Compose animations — Android Developers Backstage
•
Navigation Compose meet Type Safety
•
Flow layouts — Jetpack Compose Tips
•
Full Guide to Deep Linking With Type-Safe Jetpack Compose Navigation
•
Upload a File With Progress Bar Using Ktor
•
Building Responsive Applications with RxKotlin
•
Peristyle — простой, но мощный менеджер обоев для Android
•
Memory Guardian — очистка буфера обмена
•
Learn Kotlin Coroutines — изучаем корутины на реальных примерах
Кроссплатформа
• База джуна на Flutter
• Как понятия Patterns и Records в языке Dart упрощают жизнь разработчикам
• Многомодульное приложение на Flutter
• Архитектура white-label на Flutter: тонем в абстракциях
•
How to develop an AI app with a local model in Kotlin Multiplatform
•
Best practices for optimizing Flutter web loading speed
•
Flutter Go Router: The Crucial Guide
•
Serverpod 2.1, “Expressionism” — A game changer for real-time communication
•
Flutter Local Notification
•
Flutter: Concurrency and Parallelism?
•
5 Best Flutter UI Templates
•
Cleaner Flutter code with Dart 3
Разработка
• BDUI: удовольствие или боль
• Девайс-холдер: кто такой, зачем нужен и насколько хорошо держит устройства
• C идет на спад
• Дизайн интерфейсов в России и других странах. Бигтехи и супераппы
• Junior-разработчики — обучение программированию, тестовое задание
• Аутсорсинг в IT: взгляд изнутри
• Мобильные приложения — кто и как их создаёт?
• Тестовый скрининг с карьерным ментором + Какие софт-скиллы необходимы разработчику
•
Your company needs Junior devs
•
Tinder API Style Guide
•
Design Patterns Are Temporary, Language Features Are Forever
•
Carpentopod: A Walking Table Project
•
Why Copilot is Making Programmers Worse at Programming
•
Productivity as a Developer – Full Course
Аналитика, маркетинг и монетизация
• Как я заработал $50K на простой AI-обертке?
• В App Store заработали Win-back предложения
• Drybaby — дейтинг для трезвых
• Что такое сетевой эффект
• Конец миллиардных стартапов, поддерживаемых рекламой — приложения для вертикалей придут на смену
• Прощай Tinder, здравствуй Strava: стали ли приложения для «хобби» новыми социальными сетями?
• Sri Mandir помогает индуистам посещать храмы и делать пожертвования со своего телефона
• Самые скачиваемые и зарабатывающие приложения в России в августе 2024
• Лучшее лето Airbnb
•
Monetizing Social Trends: TikTok and AI Fueling Beauty App Success
AI, Устройства, IoT
• Большие и чёрные (ящики): что мы знаем о том, как «думают» нейросети?
• Как мы учили Yandex Code Assistant помогать разработчикам с написанием кода и делать их счастливыми
• Как уменьшить образ Docker для работы с устройствами IoT
• Mojo: убийца Python и будущее Ai?
• Real-time-распознавание лиц: методы обучения быстрых и точных моделей для работы на мобильных девайсах
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.


• Утечка памяти: детективная история с Xcode
• Изучаем WidgetKit: пишем виджет для Control Center в iOS 18
• Проверка доступности языка для перевода в фреймворке Translation
• Настоящая мощь Apple Intelligence проявится в сторонних приложениях
• iOS 18 выйдет 16 сентября
• Эволюция презентационных паттернов SwiftUI
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Android-разработка очень перегружена и в нее сложно вникнуть? — Обсуждение на Reddit
• Основы Jetpack Compose: как обеспечить стабильность вашего кода
• Избегаем ловушек автозавершения в Android Studio
• Ускоряем Android-приложения с помощью Baseline Profiles
• В Android блокируют установку приложений из сторонних источников. Почему это важно?
• Не слишком ли много мы разрешаем нашим приложениям?
• Пишем простенький DI для Android приложения
• Google Play Integrity API начал определять угрозы приложениям
• «Ленивый граф», или Как мы оптимизировали старт приложения
• В сетях сетевого слоя
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• База джуна на Flutter
• Как понятия Patterns и Records в языке Dart упрощают жизнь разработчикам
• Многомодульное приложение на Flutter
• Архитектура white-label на Flutter: тонем в абстракциях
•

•

•

•

•

•

•

•


• BDUI: удовольствие или боль
• Девайс-холдер: кто такой, зачем нужен и насколько хорошо держит устройства
• C идет на спад
• Дизайн интерфейсов в России и других странах. Бигтехи и супераппы
• Junior-разработчики — обучение программированию, тестовое задание
• Аутсорсинг в IT: взгляд изнутри
• Мобильные приложения — кто и как их создаёт?
• Тестовый скрининг с карьерным ментором + Какие софт-скиллы необходимы разработчику
•

•

•

•

•

•


• Как я заработал $50K на простой AI-обертке?
• В App Store заработали Win-back предложения
• Drybaby — дейтинг для трезвых
• Что такое сетевой эффект
• Конец миллиардных стартапов, поддерживаемых рекламой — приложения для вертикалей придут на смену
• Прощай Tinder, здравствуй Strava: стали ли приложения для «хобби» новыми социальными сетями?
• Sri Mandir помогает индуистам посещать храмы и делать пожертвования со своего телефона
• Самые скачиваемые и зарабатывающие приложения в России в августе 2024
• Лучшее лето Airbnb
•


• Большие и чёрные (ящики): что мы знаем о том, как «думают» нейросети?
• Как мы учили Yandex Code Assistant помогать разработчикам с написанием кода и делать их счастливыми
• Как уменьшить образ Docker для работы с устройствами IoT
• Mojo: убийца Python и будущее Ai?
• Real-time-распознавание лиц: методы обучения быстрых и точных моделей для работы на мобильных девайсах
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
saipr
Для Android можно добавить еще и Androwish