В новом дайджесте новые виджеты и патчинг байт-кода, Cross device SDK и новый Flutter, Code Review для джуниоров, победа Коста Элефтериу, новые платежи в магазинах и многое другое!
Подключайтесь!
Подключайтесь также к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
![](https://habrastorage.org/webt/en/nr/0v/ennr0vfqsd0ydiqzzphsvzgsmo8.jpeg)
iOS
• Создаем виджеты для экрана блокировки на SwiftUI
• Layout Protocol: новые возможности SwiftUI
• Использование Apple AppKit, Mac Catalyst и SwiftUI в macOS
• User-Defined в iOS проекте
• Жизнь со SwiftUI
• В Xcode Cloud заработала подписка
• Коста Элефтериу уладил судебное дело с Apple
•
Custom UIViewController Animations — EASY iOS Guide
•
Designing for scalable Dynamic Type in iOS for accessibility
•
How to make an MVVM Swift UI App
•
Discover whether a view is visible on the screen — the iOS challenge
•
Area under Notch
•
Build Offline-First Mobile Apps by Caching API Results in Realm
•
Fixing Dependency Problem in a Complex Modularized iOS App
•
Apple Silicon and the library incompatibility problem for iOS development
•
How to add a loader to an UIButton
•
SwiftUI View Modifiers Tutorial for iOS
•
Swift Combine Basic 2 Minutes Tutorial
•
New MapKit Configurations with SwiftUI
•
Lock screen widgets in SwiftUI
•
Probably the best guide to Swift Timer
•
SwiftUI’s diffing algorithm
•
SwiftUI, How to create BlurEffect. Introducing 2 ways.
•
Handling multiple caches in App
•
Animate a UIBarButtonItem using Swift
•
How to Use NavigationSplitView in SwiftUI
•
SwiftNEWKit: «Что нового» на SwiftUI
Android
• Патчим байт-код для просмотра логов в Android. Подробная инструкция и примеры кода
• Google выпустил предварительную версию Cross device SDK
• Note&Noty — первое приложение на Android
• Как работа с ресурсами вызывает микрофризы
• Опыт перехода на MVI в Android на базе собственного решения
• Как мы уменьшили размер приложения ВТБ Онлайн с многомиллионной аудиторией в 2 раза
• Про поставки и релизы в мобильной разработке
• Выполняем задачи по расписанию с Quartz и Spring Boot
• Google разрешил сторонние платежи в Play в России
• В RuStore заработали встроенные покупки и подписки
•
MAD about Media
•
Exploring Jetpack Composes’ Dependencies Injection Using Hilt
•
Few steps to new level security — Play Integrity API for Android apps
•
Jetpack Compose: Build Better Apps Faster
•
Clean Android WebView caching
•
What is Kotlin SAM ?
•
How to implement In-App-Update Structure on Android?
•
How To Use Kotlin’s Built-In Functions To Measure Code Execution Time
•
ViewStub in Android
•
Java Champion James Ward on the State of Java and JVM Languages
•
Using Version Catalog on Android projects
•
How to ace any Android Interview like a BOSS in 202X?
•
How we implemented a state machine framework
•
Monitoring App Performance
•
First Impressions When Switching From Spring Boot to Ktor
•
Integrate autofill with keyboards (or Input Method Editors)
•
Begin your android automation testing using Appium, JUnit5, and Kotlin in 5 minutes on Windows or Linux!
•
Wear OS Tiles Material Library: Build Tiles, Fast.
•
Kotlin Algorithms and Design Patterns: алгоритмы, структуры и паттерны
•
Android Image Cropper: обработка изображений
•
Kalendar: календарь для Compose
Кроссплатформа
• Первые шаги в Unity с OpenXR
• Flutter Flame: ускоряем в 32 раза работу со столкновениями
• Skia — высокопроизводительная 2D графика для React Native
• Вышел Flutter 3.3
•
Basics of Game Development using Flame
•
Building a Hand Drawing App with React Native Skia and Gesture Handler
•
Adapter Design Patterns For Dart & Flutter
•
Flutter best practices
•
Flutter FVM — Boost your Flutter productivity by 100%
•
Announcing Flutter 3.3 at Flutter Vikings
•
Learn PWA
•
How to use Kotlin Multiplatform ViewModel in SwiftUI and Jetpack Compose
•
Wonderous: лучшая архитектура на Flutter
Разработка
• Scrum подвел разработчиков
• DevOps-инструменты как новая ступенька для разработчика
• Как Junior-разработчику проводить Code Review
• Легкая автоматизация кроссплатформенных тестов с Kotlin DSL
• Мобильный CI: как выбрать и переехать
• Do it yourself: как тестировать приложение без QA
• Больше, чем новый логотип: как дизайнили приложение СберМегаМаркет
• Дизайн приложений: примеры для вдохновения #81
• Podlodka #283: диски и носители, часть 2
• $63 млн в Серии B: Solid — FinTech инфраструктура
•
Applying what I’ve learned in Atomic Habits to coding
•
What Helped Me to Become a Lead Software Engineer at 21
•
Product Design interview questions
•
Developer Experience Infrastructure (DXI)
•
5 Simple Tips To Stop Getting Interrupted While You Write Code
•
Why you might never become a senior developer
•
Maestro — Painless Mobile UI Automation
•
8 Best UX/UI Design Tools in 2022
•
DivKit: отрисовка Server-Driven UI
Аналитика, маркетинг и монетизация
• Meta исследует платные функции для пользователей
• Snap планирует уволить 20% сотрудников
• «Разработка качественных приложений для детей» — учебник Google Play Academy
• Маркетинг подписных приложений 2022 — отчет AppsFlyer и Liftoff
• BeReal угрожает загрузкам Instagram
AI, Устройства, IoT
• От взлома протокола в старом «железе» до разработки программ
• NORVI Agent 2: агент под прикрытием (встраивается куда угодно)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подключайтесь!
Подключайтесь также к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
![](https://habrastorage.org/webt/en/nr/0v/ennr0vfqsd0ydiqzzphsvzgsmo8.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Создаем виджеты для экрана блокировки на SwiftUI
• Layout Protocol: новые возможности SwiftUI
• Использование Apple AppKit, Mac Catalyst и SwiftUI в macOS
• User-Defined в iOS проекте
• Жизнь со SwiftUI
• В Xcode Cloud заработала подписка
• Коста Элефтериу уладил судебное дело с Apple
•
![](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/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Патчим байт-код для просмотра логов в Android. Подробная инструкция и примеры кода
• Google выпустил предварительную версию Cross device SDK
• Note&Noty — первое приложение на Android
• Как работа с ресурсами вызывает микрофризы
• Опыт перехода на MVI в Android на базе собственного решения
• Как мы уменьшили размер приложения ВТБ Онлайн с многомиллионной аудиторией в 2 раза
• Про поставки и релизы в мобильной разработке
• Выполняем задачи по расписанию с Quartz и Spring Boot
• Google разрешил сторонние платежи в Play в России
• В RuStore заработали встроенные покупки и подписки
•
![](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)
• Первые шаги в Unity с OpenXR
• Flutter Flame: ускоряем в 32 раза работу со столкновениями
• Skia — высокопроизводительная 2D графика для React Native
• Вышел Flutter 3.3
•
![](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/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Scrum подвел разработчиков
• DevOps-инструменты как новая ступенька для разработчика
• Как Junior-разработчику проводить Code Review
• Легкая автоматизация кроссплатформенных тестов с Kotlin DSL
• Мобильный CI: как выбрать и переехать
• Do it yourself: как тестировать приложение без QA
• Больше, чем новый логотип: как дизайнили приложение СберМегаМаркет
• Дизайн приложений: примеры для вдохновения #81
• Podlodka #283: диски и носители, часть 2
• $63 млн в Серии B: Solid — FinTech инфраструктура
•
![](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/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Meta исследует платные функции для пользователей
• Snap планирует уволить 20% сотрудников
• «Разработка качественных приложений для детей» — учебник Google Play Academy
• Маркетинг подписных приложений 2022 — отчет AppsFlyer и Liftoff
• BeReal угрожает загрузкам Instagram
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• От взлома протокола в старом «железе» до разработки программ
• NORVI Agent 2: агент под прикрытием (встраивается куда угодно)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
v1000
Решил попробовать Treecard с КДПВ. Такого глючного ввода данных в приложении ещё не встречал. Нажимаешь на поле ввода-ничего не происходит, нажимаешь второй раз-начинает выезжать список вариантов ввода и сразу-же уезжает обратно. Приходится отлавливать. Хотя может там нужно было нажать и держать? Но это не интуитивно понятно.
Ну а вишенка на торте-сообщают что карта выдаётся только в США после полного прохождения регистрации.
RoboForm
Ну... Зато картинка красивая :)