В этом выпуске сетчатые градиенты и курощение виджетов, сломанная Android-разработка и инструментирование байт-кода Java во имя великого блага, единая биометрическая система во Flutter-приложении, портирование игр на Аврору, видеозвонки с Лили и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Работаем с сетчатыми градиентами в iOS 18
• SwiftUI: адаптация UI к различным размерам экрана (с примерами кода)
• Ускоряем SwiftUI с Observable
• Как укротить виджеты в супераппе?
• UICollectionViewLayout с самого начала
• UITableView с различными типами ячеек
• Previews in Xcode Playgrounds
• MoveMe — SwiftUI Edition
• Xcode Folders & Groups
• Parsing Beyond JSON with swift-parsing
• Introduction to Communication Patterns in SwiftUI
• Point-Free is Xcode 16 ready
• From Swift beginner to an app in the App Store in a few months
• Rotating Characters Loader Tutorial
• Creating a Dynamic Draggable ScrollView with UIKit for SwiftUI
• How to build a Safari extension with SwiftUI
• Mastering container views in SwiftUI. Basics.
• Using the zoom navigation transition in SwiftUI
• The 2024 iOS Developer RoadMap
• Let’s Integrate SwiftData CRUD into the Notes App
• SwiftUI — Rotating Characters Loader Tutorial
• Deep Dive into TabView Changes in iOS18
• Let’s Make Notes App With Complex Transitions | SwiftData | SwiftUI
• Testing 101: What Are Integration Tests & How to Write Them in Swift
• SwiftUI — Image Presentation Animation Tutorial
• WWDC22: The SwiftUI cookbook for navigation
• HotReloading — горячая перезагрузка для Swift, Objective-C и C++
• MIDIKit — обертка CoreMIDI
Android
• Android сломался или я чего-то не понимаю? — Обсуждение на Reddit
• ByteWeaver в Open Source: инструментирование байт-кода Java во имя великого блага
• Впечатления от доработки Telegram Android
• Создание Convention Plugin-ов на базе Kotlin-классов
• Остерегайтесь Rounds.com — Обсуждение на Reddit
• Превращаем планшет в терминал самообслуживания: осваиваем режим Kiosk в KNOX сервисах
• Прочие оптимизации кода Gradle Convention Plugins, выводы по результатам использования подхода
• Декларативный подход в организации gradle зависимостей в Android-проектах
• Троян Necro продолжает преследовать пользователей Android
• Размер имеет значение: как измерить и уменьшить вес Android-приложения
• Установка Android-приложений от доисторических времен до наших дней
• Rust избавляет Android от ошибок и помогает существенно сократить количество небезопасного кода
• Bottom Sheets that… just work
• PDFViewerFragment — AndroidX
• Tools, not Rules: become a better Android developer with Compiler Explorer
• Testing Android App Accessibility: Clue
• Using Kotlin 2.0 for Android Development
• Kotlin Exception Handling: Why Singleton Exceptions are a bad idea
• Design Server-Driven UI with Jetpack Compose and Firebase
• Metaspace in JVM Builds
• Android Studio Ladybug | 2024.2.1 RC 1 now available
• Expandable FlowRow with Indicator
• AllTrails gains over 1 million downloads after implementing its Wear OS app
• Rendering the Java heap as a Treemap
• Kotlin JVM args: Inheritance & Defaults
• Koin 4.0 — Official Release
• Loading Initial Data on Android Part 2: Clear All Your Doubts
• Understanding the “suspend” Keyword in Kotlin Coroutines and Why It Matters for Android Development
• How Can MVI Architecture Revolutionize Your Compose Multiplatform Development?
• Room Renovations — Android Conference Talks
• How to Implement a Custom Swipe to Reveal in Jetpack Compose
• Keyboard & Focus Management In Jetpack Compose
• How easy is it to draw on GoogleMaps using Compose?
• How to Make HTTP Requests With Retrofit - Android
• Raw Ddraw Android — создание Android-приложений с C и Make
• Rush — слова песен как на Spotify
Кроссплатформа
• Как мы успешно внедрили Единую Биометрическую Систему во Flutter-приложение
• ООП в Dart
• React Native перевернул игру
• Темная сторона изолятов в Dart
• Example of a Cross-Platform macOS/Windows Application Developed Using Swift 6
• Exploring Kotlin Multiplatform: A Visual Guide
• Better Error Handling for Flutter — Error Stack
• Pushing the Boundaries of Compose Multiplatform with AGSL Shaders
• A practical guide on CPU architectures for Flutter developers
• Common mistakes with OAuth in Flutter
• Packages to improve UI/UX of your app
• Is Kotlin Multiplatform killing Flutter?
Разработка
• Как энтузиасты на мобильную систему «Аврора» портировали игры
• Как делать простые анимированные онбординги в Lottie без After Effects
• Не разрабатывайте приложения для миллионов пользователей, когда у вас нет и ста
• Как мы сделали приложение для партнёрской платформы, с которым любой может зарабатывать на туризме. Кейс Travelpayouts
• Идеальный продукт и его UX/UI дизайн
• Пишем свой генератор ID для мобильных приложений
• Discord запустил SDK для создания Активностей на платформе
• Как технический долг испортил приложение Sonos
• VK Education запускает базу учебных проектов для студентов
• Интероп – неизбежность в больших системах: C и C++, JNI, WinAPI
• Что делать, если разработчики бесят
• Процесс CI/CD в Авито: от комита до релиза
• Clean Architecture (чистая архитектура, все для проекта любого размера, принципы, мышление)
• How I Designed a Dieter Rams inspired iPhone Dock
• What 10,000 Hours of Coding Taught Me: Don’t Ship Fast
• How I Hire Programmers
• Avoiding if-else Hell: The Functional Style
• Mobile teams are second class citizens, but not on purpose
• End-to-End Machine Learning Project – AI, MLOps
• LiveKit — приложения для передачи голоса и видео
Аналитика, маркетинг и монетизация
• RevenueCat приобрел «пикантные» аудиокниги Dipsea
• Закон Калифорнии заставит цифровые магазины признать, что покупатели лицензируют, а не покупают контент
• Видеозвонки с Лили, Приключения и пианино — обновления Duolingo
• Ютубер MKBHD выпустил приложение для обоев — и фанаты раскритиковали его
• В VK Рекламе стало доступно продвижение приложений из Huawei AppGallery
• Shelf — социальная сеть, основанная на медиа, которые вы потребляете
• Будущее программной рекламы: полное руководство по технологии header bidding
• Gauth, ИИ-помощник в учебе, оседлал волну возвращения в школу
• How Has Hamster Kombat helped Telegram reach 700M+ MAU?
AI, Устройства, IoT
• Что почитать по машинному обучению: подборка из 6 книг
• Генеративный ИИ меняет то, как мы программируем, но программирование не исчезнет
• Представлены AR-очки Orion
• Джони Айв подтвердил, что работает над новым устройством с OpenAI
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Работаем с сетчатыми градиентами в iOS 18
• SwiftUI: адаптация UI к различным размерам экрана (с примерами кода)
• Ускоряем SwiftUI с Observable
• Как укротить виджеты в супераппе?
• UICollectionViewLayout с самого начала
• UITableView с различными типами ячеек
• Previews in Xcode Playgrounds
• MoveMe — SwiftUI Edition
• Xcode Folders & Groups
• Parsing Beyond JSON with swift-parsing
• Introduction to Communication Patterns in SwiftUI
• Point-Free is Xcode 16 ready
• From Swift beginner to an app in the App Store in a few months
• Rotating Characters Loader Tutorial
• Creating a Dynamic Draggable ScrollView with UIKit for SwiftUI
• How to build a Safari extension with SwiftUI
• Mastering container views in SwiftUI. Basics.
• Using the zoom navigation transition in SwiftUI
• The 2024 iOS Developer RoadMap
• Let’s Integrate SwiftData CRUD into the Notes App
• SwiftUI — Rotating Characters Loader Tutorial
• Deep Dive into TabView Changes in iOS18
• Let’s Make Notes App With Complex Transitions | SwiftData | SwiftUI
• Testing 101: What Are Integration Tests & How to Write Them in Swift
• SwiftUI — Image Presentation Animation Tutorial
• WWDC22: The SwiftUI cookbook for navigation
• HotReloading — горячая перезагрузка для Swift, Objective-C и C++
• MIDIKit — обертка CoreMIDI
Android
• Android сломался или я чего-то не понимаю? — Обсуждение на Reddit
• ByteWeaver в Open Source: инструментирование байт-кода Java во имя великого блага
• Впечатления от доработки Telegram Android
• Создание Convention Plugin-ов на базе Kotlin-классов
• Остерегайтесь Rounds.com — Обсуждение на Reddit
• Превращаем планшет в терминал самообслуживания: осваиваем режим Kiosk в KNOX сервисах
• Прочие оптимизации кода Gradle Convention Plugins, выводы по результатам использования подхода
• Декларативный подход в организации gradle зависимостей в Android-проектах
• Троян Necro продолжает преследовать пользователей Android
• Размер имеет значение: как измерить и уменьшить вес Android-приложения
• Установка Android-приложений от доисторических времен до наших дней
• Rust избавляет Android от ошибок и помогает существенно сократить количество небезопасного кода
• Bottom Sheets that… just work
• PDFViewerFragment — AndroidX
• Tools, not Rules: become a better Android developer with Compiler Explorer
• Testing Android App Accessibility: Clue
• Using Kotlin 2.0 for Android Development
• Kotlin Exception Handling: Why Singleton Exceptions are a bad idea
• Design Server-Driven UI with Jetpack Compose and Firebase
• Metaspace in JVM Builds
• Android Studio Ladybug | 2024.2.1 RC 1 now available
• Expandable FlowRow with Indicator
• AllTrails gains over 1 million downloads after implementing its Wear OS app
• Rendering the Java heap as a Treemap
• Kotlin JVM args: Inheritance & Defaults
• Koin 4.0 — Official Release
• Loading Initial Data on Android Part 2: Clear All Your Doubts
• Understanding the “suspend” Keyword in Kotlin Coroutines and Why It Matters for Android Development
• How Can MVI Architecture Revolutionize Your Compose Multiplatform Development?
• Room Renovations — Android Conference Talks
• How to Implement a Custom Swipe to Reveal in Jetpack Compose
• Keyboard & Focus Management In Jetpack Compose
• How easy is it to draw on GoogleMaps using Compose?
• How to Make HTTP Requests With Retrofit - Android
• Raw Ddraw Android — создание Android-приложений с C и Make
• Rush — слова песен как на Spotify
Кроссплатформа
• Как мы успешно внедрили Единую Биометрическую Систему во Flutter-приложение
• ООП в Dart
• React Native перевернул игру
• Темная сторона изолятов в Dart
• Example of a Cross-Platform macOS/Windows Application Developed Using Swift 6
• Exploring Kotlin Multiplatform: A Visual Guide
• Better Error Handling for Flutter — Error Stack
• Pushing the Boundaries of Compose Multiplatform with AGSL Shaders
• A practical guide on CPU architectures for Flutter developers
• Common mistakes with OAuth in Flutter
• Packages to improve UI/UX of your app
• Is Kotlin Multiplatform killing Flutter?
Разработка
• Как энтузиасты на мобильную систему «Аврора» портировали игры
• Как делать простые анимированные онбординги в Lottie без After Effects
• Не разрабатывайте приложения для миллионов пользователей, когда у вас нет и ста
• Как мы сделали приложение для партнёрской платформы, с которым любой может зарабатывать на туризме. Кейс Travelpayouts
• Идеальный продукт и его UX/UI дизайн
• Пишем свой генератор ID для мобильных приложений
• Discord запустил SDK для создания Активностей на платформе
• Как технический долг испортил приложение Sonos
• VK Education запускает базу учебных проектов для студентов
• Интероп – неизбежность в больших системах: C и C++, JNI, WinAPI
• Что делать, если разработчики бесят
• Процесс CI/CD в Авито: от комита до релиза
• Clean Architecture (чистая архитектура, все для проекта любого размера, принципы, мышление)
• How I Designed a Dieter Rams inspired iPhone Dock
• What 10,000 Hours of Coding Taught Me: Don’t Ship Fast
• How I Hire Programmers
• Avoiding if-else Hell: The Functional Style
• Mobile teams are second class citizens, but not on purpose
• End-to-End Machine Learning Project – AI, MLOps
• LiveKit — приложения для передачи голоса и видео
Аналитика, маркетинг и монетизация
• RevenueCat приобрел «пикантные» аудиокниги Dipsea
• Закон Калифорнии заставит цифровые магазины признать, что покупатели лицензируют, а не покупают контент
• Видеозвонки с Лили, Приключения и пианино — обновления Duolingo
• Ютубер MKBHD выпустил приложение для обоев — и фанаты раскритиковали его
• В VK Рекламе стало доступно продвижение приложений из Huawei AppGallery
• Shelf — социальная сеть, основанная на медиа, которые вы потребляете
• Будущее программной рекламы: полное руководство по технологии header bidding
• Gauth, ИИ-помощник в учебе, оседлал волну возвращения в школу
• How Has Hamster Kombat helped Telegram reach 700M+ MAU?
AI, Устройства, IoT
• Что почитать по машинному обучению: подборка из 6 книг
• Генеративный ИИ меняет то, как мы программируем, но программирование не исчезнет
• Представлены AR-очки Orion
• Джони Айв подтвердил, что работает над новым устройством с OpenAI
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.