Google I/O пройдет 14 мая
В прошлом I/O длилась три дня, но последние два года это мероприятие длится только один день.
1. Будет "небольшая живая аудитория", а для всех остальных будет организована прямая трансляция.
2. I/O 2024 начнется с выступления Сундара Пичаи в Shoreline Amphitheater в Маунтин-Вью. За ним последует основной доклад для разработчиков и технические сессии.
3. Для тех, кто будет присутствовать лично, будет организован второй день live кодинга 15 мая.
4. Google сообщит программу и список сессий ближе к началу конференции. Онлайн-регистрация уже открыта и является бесплатной.
Android
• How to Drag and Drop using Modifier.dragAndDropSource/Target - Jetpack Compose
• Unit Testing Tutorial for Android: Getting Started
• Seven recipes to understand flows and asynchrony in Kotlin
#android
Весенние выпуски спецпроекта «Маркетологи в мобайле» от коллег из Rocket10 и Bidease!
Героини проекта рассказали про эффективное планирование, поделились лайфхаками и привычками для соблюдения гармоничного баланса в жизни и на работе и посоветовали, как можно начать карьеру в digital-маркетинге.
• Ольга Бигбашева из Rendez-Vous
• Ярослава Адаменко из М.Видео и Эльдорадо
• Василина Кузенко из «ИЛЬ ДЕ БОТЭ»
• Мария Миткевич из Мегамаркета
• Ася Загирова из Premier
• Арина Еремян из Пятёрочки.Доставки
Вперёд за инсайтами!
Android
• Kotest: мощный, элегантный и гибкий фреймворк для тестирования Kotlin
• ViewModel. События как состояние — это антипаттерн
• Fastlane для Android разработчиков
• Автоматизируем рутину в Android разработке: плагин для создания шаблонного кода на примере создания -api -impl модулей
• ANR in Android & its types
• A comprehensive guide to understand Kotlin Flows
• Going edge-to-edge with Compose without losing it
• The Night’s Watch: Safeguarding store operations
• Trim, Transcode, Concatenate: Your Guide to Media3 Editing Libraries
#android
Полезных каналов много не бывает. Поэтому, предлагаю обратить внимание и подписаться на один из таких – iOS / Swift Tips.
Там найдете различные туториалы, best practices, материалы для подготовки к собесам и другие полезности 💪
Вот несколько топовых материалов
👉 Swift iOS interview questions and answers
👉 Многопоточность в iOS-разработке
👉 Swift Concurrency Recipes
👉 Awesome iOS Dev Tools
Подписывайтесь: @swift_tips
С мест докладывают, что Apple тестирует использование ИИ в App Store Search Ads. Что там тестировать пока не особо понятно, потому что размещений и форматов там кот наплакал (впрочем, наверняка можно достраивать аудиторные и качественные показатели, что даже более интересно), но очевидно, что Apple опоздала в ИИ и теперь пытается догнать всеми доступными способами. Крайне интересно что все таки будет в iOS 18, которую обещают сделать “амбициозной и неотразимой”.
Разработка
• Как Google испортил свою открытую культуру и скомпрометировал свой продукт
• Using my new Raspberry Pi to run an existing GitHub Action
• How It All Goes Live: An Overview of Discord’s Streaming Technology
• How Khan Academy Scaled to 30 Million Users
Маркетинг
• Apple тестирует ИИ в своей рекламной платформе
Кроссплатформа
• Что нового во Flutter 3.19
• Работа с Data Assets во Flutter
• Building a Flutter SDK Part 2: A Deep Dive Into pub.dev
• a1rwulf/flutter-offline-playback-for-video-player-e6113c13ed34">Flutter: Offline playback for video_player
iOS
• Concurrency Recipes: проблемы Swift Concurrency
• Apple разрешает распространение приложений с сайтов
• Rendering System Images in SwiftUI
• Test-Driven Development (TDD) for bug fixes in Swift
• Exploring SwiftUI: Creating a Scope View using DragGesture
• Global actors in Swift
#ios
А вот и статья:
Правила линтинга выступают в качестве письменных соглашений об архитектуре кодовой базы и установленных лучших и необходимых практиках команды. Они помогают поддерживать последовательность кодовой базы, устраняя двусмысленности, защищают наши проекты от мелких ошибок и значительно ускоряют написание и рецензирование кода.
Благодаря Konsist мы на Android наконец-то получили долгожданный инструмент, который делает написание правил линтинга простым и доступным, не требующим сложного обучения. Инструмент, который, безусловно, является важной вехой в написании пользовательских правил, благодаря своей гениальной идее переосмыслить их как юнит-тесты.
Эта музыка будет вечной. Apple снова разблокировала учетную запись Epic Games. Пишут, что на этом настояли европейский регулятор - Apple отступилась, fEpic обещал не нарушать правила. Так что игровой магазин на iOS, похоже, все таки в скором времени будет. Вместе с Fortnite.
Разработка
• Я.Субботник по мобильной разработке
• Avito Analytics meetup
• The most important goal in designing software is understandability
• You’re not a weak developer if you don’t always show off your technical excellence
• Context-switching - one of the worst productivity killers in the engineering industry
Маркетинг
• Маркетологи в мобайле (Spring Edition): Арина Еремян (Пятёрочка.Доставка)
• You can put your app's paywall in an Alert. But you probably shouldn’t
Кроссплатформа
• Адаптивная вёрстка во Flutter
• Сериализация и десериализация — вошли и вышли
• Приложение викторины: внедрение Cardoteka и основные паттерны проектирования с Riverpod
• Методы-расширения в Dart
• flavius.holerga/making-a-3d-looking-game-using-flutter-tutorial-35ac6bf9e26d">Making a 2.5D game using Flutter — Tutorial
iOS
• Вышла VisionOS 1.1
• Loopover: пазл в стиле кубика Рубика
• Optional в Swift: 5 вещей, которые вы должны знать
• Уроки Swift: UITextField с анимированным плейсхолдером
• Minimal Widget Product: путь к эффективной и гибкой реализации виджетов
• Поваренная книга SwiftUI: лучшие практики управления состояниями в SwiftUI
• Apple снова разблокировала учетную запись Epic Games
• How to build a draggable bottom sheet with a scroll view in SwiftUI
• Everything you need to know about Swift 5.10
• Concurrency Recipes
• How to Dynamically Construct Complex Predicates for SwiftData
• Aspect-Oriented Programming in Swift
• Implementing a TV Guide with SwiftUI
#ios
Новый Fused Orientation Provider обеспечивает получение точных данных об ориентации устройства
Ориентация или положение устройства используется в качестве входного сигнала во многих случаях: виртуальная или дополненная реальность, распознавание жестов, компас и навигация — в любом случае, когда приложению нужна ориентация устройства относительно окружающей среды. Fused Orientation Provider (FOP) — это новый API в сервисах Google Play, который обеспечивает качественную и стабильную ориентацию устройства путем объединения сигналов от акселерометра, гироскопа и магнитометра.
1. Хотя в настоящее время Rotation Vector в Android уже обеспечивает получение данных об ориентации устройства (и будет продолжать это делать), новый FOP обеспечивает более последовательное поведение и высокую производительность на всех устройствах.
2. FOP обеспечивает единую реализацию на всех устройствах - API реализован в Google Play Services, а значит нет различий в реализации на устройствах разных производителей. Обновления алгоритма могут быть выпущены быстро и независимо от обновлений платформы Android.
3. FOP учитывает местное магнитное склонение, если оно доступно и компенсирует более низкое качество датчиков и OEM-реализаций (например, смещение гироскопа, синхронизацию датчиков).
Fused Orientation Provider доступен на всех устройствах с сервисами Google Play на Android 5 (Lollipop) и выше.
Видео и подкасты за неделю:
• (iOS Ru)
Minimal Widget Product: путь к эффективной и гибкой реализации виджетов
• (iOS Ru)
Уроки Swift: UITextField с анимированным плейсхолдером
• (iOS En)
Paging ScrollView in SwiftUI for iOS 17
• (iOS En)
Visual Effect API - Stacked Cards - ScrollView
• (iOS En)
Custom Calendar Tallies in SwiftUI
• (iOS En)
Minimal Login Setup With Firebase Email Authentication
• (And Ru)
Разработка новостного приложения. Часть 3
• (And Ru)
Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
• (And En)
THIS Is How You Create Custom Shapes in Jetpack Compose
• (And En)
New Android 15 Changes, App Update Prompts & AI Document Scanning
• (And En)
Lyricist & Voyager - Navigating the Compose Multiverse
• (And En)
Imperative, declarative, object oriented, functional: four of a Kotlin kind
• (Crs Ru)
Сериализация и десериализация — вошли и вышли
• (Crs Ru)
Адаптивная вёрстка во Flutter
• (Dev Ru)
Я.Субботник по мобильной разработке
• (Dev En)
Firebase’s Release Monitoring dashboard, Dart 3.3 release, and more dev news!
• (Dev En)
Learn C# – Full Course with Mini-Projects
• (Anl Ru)
Avito Analytics meetup
Что вы интересного посмотрели/послушали про разработку на этой неделе? 🌐 @AppFiles
Сериал Тупой и еще тупее Apple против Epiс продолжается. Apple назвала Epic "незаслуживающей доверия" и снова заблокировала (так и хочется добавить на хер) аккаунт разработчика. Продержался он менее месяца (с 16 февраля) и, как пишут, уже 23 февраля Фил Шиллер связался с Суини, чтобы попросить "письменную гарантию" того, что Epic Games "выполнит свои обязательства". "В простых, безоговорочных выражениях, пожалуйста, объясните нам, почему мы должны доверять Epic на этот раз", - говорится в конце письма Шиллера. Суини ответил в тот же день и заверил Фила, что все будет нормально. Правда, уже 2 марта, юристы Apple отправили Epic письмо, в котором сообщается о прекращении действия аккаунта, глава Epix их не убедил. Короче, это бодяга с нами еще лет на 10.
Разработка
• Быть хорошим инженером-программистом сейчас сложнее, чем когда-либо
• flutterwtf/mobile-app-security-best-practices-in-2024-fa1d124bf571">Mobile App Security Best Practices in 2024
• Sliders degrade UX (so do this instead)
• Feature flags are ruining your codebase
Маркетинг
• Apple снова заблокировала учетную запись Epic Games
• В AppMetrica появился инструмент прогнозирования LTV и оттока
• Маркетологи в мобайле (Spring Edition): Ася Загирова (Premier)
• Apple расширяет аналитику в App Store Connect
Кроссплатформа
• Основы управления состояниями во Flutter
• Integrating Stripe Payment Gateway into Your Flutter App
iOS
• Альтернативные магазины приложений на iOS перестанут работать за пределами Европы
• Making Ollie: Creating a local iOS app in a time of React Native
• Embedded Swift on the Raspberry Pi Pico
• How to create an iOS chat app
• SwiftUI loading states with a twist; Solving a mutation puzzle
• Nerdy internals of an Apple text editor
• Optionals in Swift explained: 5 things you should know
• High Performance Swift Apps
#ios
Apple расширяет аналитику в App Store Connect
Теперь через App Store Connect API доступно более 50 новых отчетов, которые помогут вам проанализировать работу приложений в App Store и на iOS.
Отчеты разбиты на следующие категории:
• App Store Engagement — количество пользователей в App Store, которые взаимодействуют с приложением разработчика или делятся им с другими.
• App Store Commerce — загрузки, продажи, предварительные заказы и транзакции, совершенные с помощью безопасной системы App Store In-App Purchase
• App Usage — количество активных устройств, установок, удалений приложений и т. д.
• Frameworks Usage — взаимодействие приложения с возможностями ОС, такими как PhotoPicker и Widgets.
• Performance — производительность ваших приложений и взаимодействие пользователей с определенными функциями.
• Кроме того, в консоли CloudKit появились новые отчеты, содержащие данные об Apple Push Notifications и File Provider.
У Apple вышел Embedded Swift для Playdate. Это такая портативная игровая консоль с ручкой (Если что, это не эвфемизм - у нее правда есть ручка, которую можно крутить). Работает она на Cortex M7 с 1-битным дисплеем с разрешением 400х240. Вообще игры для нее пишут на C и Lua- первый для скорости, второй для быстроты. Но вот встраиваемый Swift сочетает высокоуровневую эргономику с низкоуровневой производительностью, а также обеспечивая гарантии безопасности памяти. Так что а) если вы ищите интересный пет-проект, то вот прямо вообще кайф б) может Swift наконец и на Android заработает? ☺️
Разработка
• Swift Playdate Examples: примеры разработки игр для Playdate на Swift
• Вопросы с собеседований: Что такое качественный код
• Что такое состояние гонки (race condition)
• Как искать отличных Senior-инженеров
• Stashpad запускает блокнот для разработчиков с совместной работой
• В 2023 году Google выплатил $10 млн за поиск уязвимостей
• Первый легендарный мобильный GPU: каким был PowerVR MBX Lite? Пишем игру-демку про «жигули» с нуля
• Как и где практиковаться начинающему мобильному разработчику
• Winning a hackathon, losing my sanity
• Why software projects fail
Маркетинг
• Вы можете сделать пейвол в алерте. Но, вероятно, не стоит.
• Как делать успешные мобильные приложения. Разбираем пример торговой сети в Казахстане
• Abysmal revenue stats of 30K mobile apps show why devs keep pushing for subs
Кроссплатформа
• Интеграция нативных SDK во Flutter-приложение
• Leveraging Key-Value Observing in Kotlin Multiplatform for iOS
• Slint v1.5 - a modern, declarative GUI toolkit - released with Android support
• keamansaryyev/lan-file-sharing-app-using-only-dart-and-flutter-92529a1e6df0">I made LAN file sharing app using only Dart and Flutter
iOS
• Swift Translate: автоматический перевод String Catalog
• Understanding visionOS
• Using @_silgen_name to call private Swift code and improve build times
• Tips and Considerations for Using Lazy Containers in SwiftUI
• guycohendev/local-spm-mastering-modularization-with-swift-package-manager-xcode-15-e37b14c36199">Local SPM — Mastering Modularization with Swift Package Manager
#ios
Discord открывает свою платформу для разработчиков. С 18 марта все разработчики Discord получат доступ к новому Embedded App SDK, который позволит им создавать специальные встроенные приложения. В приложениях будут подписки и одноразовые платежи и если вам кажется, что это все фигня - Discord для детей и вообще несерьезно - то подумайте о каком-нибудь Snapchat, где линзы зарабатывают миллионы, или, прости Господи, Roblox, который выплатил разработчикам под миллиард.
Разработка
• Discord открывает SDK для разработки встроенных игр и приложений
• Microsoft открывает бесплатный доступ к GPT-4 Turbo в Copilot
• How to find great senior engineers
Маркетинг
• Приложения с подпиской 2024 — отчет RevenueCat
• Google Play анонсирует новые функции для игр
• Как персонализация на основе ИИ выведет продвижение мобильных приложений на новый уровень
• Turning organic success into long-term revenue
Кроссплатформа
• Как быстро получать данные из ОС Аврора через интерфейс D-Bus во Flutter-приложении
• harpreetkaurbains/how-to-manage-keystore-paths-in-flutter-android-651e66a8f00c">How to manage Keystore Paths in Flutter (Android)
• Goodbye PWA, Hello PWA — Apple And Progressive Web Apps
iOS
• Разработка, управляемая тестами (TDD), для исправления ошибок
• jpmtech/using-apples-openapi-generator-to-make-and-mock-network-calls-in-swiftui-0644fd3993b8">Using Apples OpenAPI Generator to Make and Mock Network Calls in SwiftUI
• ragnorak-dev/navigation-between-modules-in-ios-3cd4f349a3f4">Navigation between modules in iOS
• Do you know what view.layoutIfNeeded() actually does?
• From Slow to Fast: Profiling SwiftUI Applications for Peak Performance - SwiftUI Testing Tutorial
#ios
Приложения с подпиской 2024 — отчет RevenueCat
У RevenueCat вышло ключевое исследование мобильных подписок - с цифрами, бенчмарками, мнениями и всем необходимым. Вот некоторые цифры.
1. В среднем 1.7 % скачивающих превращается в платящих пользователей в первые 30 дней, что немного больше, чем в прошлом году. Разница между нижним квартилем (.6%) и верхним квартилем (4.2 %) по-прежнему поразительна.
2. Большинство пользователей начинает триал в течение 24 часов после загрузки приложения, при этом по количеству немедленных стартов лидируют Утилиты (86.0%) и Бизнес (85.1%).
3. В этом году коэффициент конверсии из пробной версии снизился до 37.3% (по сравнению с 40.5% в прошлом году), что намекает на изменения в поведении пользователей.
4. За последний год как 14-дневный, так и 60-дневный Realized Lifetime Value (RLTV) значительно вырос, причем смешанный показатель D14 RLTV по всем магазинам вырос с $0.06 до $0.08, а D60 - с $0.08 до $0.1. Североамериканский 14-дневный RLTV в 4 раза превышает среднемировой показатель - $0.35 по сравнению с $0.08.
5. В среднем только 17% приложений достигают ежемесячного дохода в $1 тыс, но дальше уже проще - из них 59% дальше достигают $2.5 тыс. и уже 60% из них достигают $5 тысяч.
Android
• Прекратите спорить в Code Review — начните внедрять правила линтера
• Чистка Android-проекта для уменьшения размера APK, ускорения сборки и улучшения опыта разработки
• Кот в мешке: мастерство обработки ошибок внешних ключей SQLite
• State of Dependency Management in Android Studio
• Hilt, ViewModels & Assisted Injection
• A Weekend AI Project: Running LLaMA and Gemma AI Models on the Android Phone
• Monetizing Marvels: A Developer’s Guide to In-App Purchases on Android
#android
Apple разрешает распространение приложений с сайтов
Теперь благонадежные разработчики смогут распространять приложения с сайта.
1. Необходимо 2 года "хорошего поведения" в App Store (то есть Fortnite сразу нет 😀).
2. Необходим 1 миллион установок за предыдущий год.
3. Каждая установка за следующий год свыше 1 миллиона будет стоить €0.50 (Core Technology Fee).
4. Apple предоставит авторизованным разработчикам доступ к API, которые облегчат распространение их приложений через Интернет, интеграцию с системными функциями, резервное копирование и восстановление приложений пользователей и многое другое.
Лучшее из вчерашнего в #Android - Прекратите спорить в Code Review. Начните обеспечивать выполнение с правилами Lint (сcылка)
Инженеры не предназначены для запоминания информации. Но мы точно можем создать инструменты, которые будут делать это за нас. Всякий раз, когда мы согласовываем стиль кода, архитектуру нашего проекта или вообще любые лучшие практики, которым мы должны следовать, чтобы обеспечить здоровую и поддерживаемую кодовую базу, нам нужно будет создать автоматизацию, которая будет их выполнять. Это и есть правила Lint.Поставьте 10х👍, если хотите русский перевод.
Android
• Google вводит новые сборы с разработчиков в рамках соблюдения DMA
• Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
• Разработка новостного приложения. Часть 3
• Legado: читалка для Android
• Новый Fused Orientation Provider обеспечивает получение точных данных об ориентации устройства
• Imperative, declarative, object oriented, functional: four of a Kotlin kind
• Stop Debating in Code Reviews. Start Enforcing with Lint Rules
• How to create Glovo-like main screen animation using Jetpack Compose
• michalankiersztajn/kotlin-design-patterns-abstract-factory-explained-79c6594d7a70">Kotlin Design Patterns: Abstract Factory Explained
• Designing your account deletion experience with users in mind
• Downloadable and Preloaded Fonts on Android
#android
DetailsPro - это no-code инструмент проектирования на основе SwiftUI.
• Создавайте с помощью таких представлений SwiftUI, как VStack, Text, Image и др.
• Создавайте реальные дизайны без написания кода
• Экспорт в Xcode, Swift Playgrounds и др.
Сайт: https://detailspro.app/
Платформа: iOS
По граблям шрифтов
Подборка всех материалов за прошлую неделю - изоляция в iOS, адаптация UI/UX для людей с проблемами зрения, сложно ли сейчас быть Богом программистом, весенние выпуски маркетологов в мобайле, сериализация и десериализация и многое другое. Заходите!
Google вводит новые сборы с разработчиков
Сегодня компания Google представила более подробную информацию о сборах, которыми будет сопровождаться ее план по соблюдению нового европейского закона о цифровых рынках.
1. Для тех, кто будет предлагать в Европе внешние покупки, запускается программа «Внешние предложения» (External offers program).
2. Фактически это дублирование Core Technology Fee от Apple - просто плата за платформу Android. "Плата за услуги Google Play никогда не была просто платой за обработку платежей - она отражает ценность Android и Play и поддерживает наши инвестиции в Android и магазин приложений, позволяя реализовать функции для пользователей и разработчиков, на которые рассчитывают люди".
3. Будет две комиссии - плата за первоначальное приобретение, которая составляет 10% для покупок в приложениях или 5% для подписки и плата за постоянные услуги, которая составляет 17% для покупок в приложении или 7% для подписки.
4. То есть в реальности суммарные платежи вне Google Play будут на 3 пп меньше, чем в нем - например, 12 против 15 для подписки.
5. Разработчик может отказаться от постоянных услуг и соответствующих сборов через два года. Но нужно будет согласие пользователей.
Android
• Apollo Kotlin: сильно типизированный, кэширующий GraphQL-клиент
• Microsoft прекращает работу Windows Subsystem for Android
• Новый Text-To-Speech движок в Wear OS
• Как увеличить шрифт так, чтобы контейнер не поехал? Адаптация UI/UX для людей с проблемами зрения в XML и Compose
• How to own a legacy Android codebase in 2024?
• Kotlin Variance... without Generics!
• Prominent Disclosure and Consent Requirement
• Jetpack Compose Tips and Conventions for the @Composables to Make Them Better
• mohit2656422/top-10-work-manager-questions-2024-3631683bf290">Top 10 Work Manager Questions 2024
• oguzhanaslann/android-project-cleanup-for-smaller-apks-faster-builds-and-a-better-development-experience-830bfcb0032b">Android Project Cleanup for Smaller APKs, Faster Builds, and a Better Development Experience
#android
Microsoft прекращает работу Windows Subsystem for Android
Microsoft прекращает поддержку подсистемы Android в Windows 11 в следующем году.
1. Софтверный гигант впервые объявил о работе Android-приложений в Windows 11 с помощью Amazon Appstore почти три года назад, но теперь эта Windows Subsystem for Android перестанет поддерживаться, начиная с 5 марта 2025 года.
2. Сегодня пользователи Windows 11 уже не могут искать приложения Amazon Appstore или связанные с ними приложения для Android в Microsoft Store.
3. Разработчики больше не смогут представлять новые приложения для Windows 11 после 5 марта 2024 года, но разработчики существующих приложений смогут продолжать выпускать обновления приложений до тех пор, пока работа Amazon Appstore на Windows 11 не будет полностью прекращена.
И что: странный шаг учитывая то, как все прекрасно могло бы быть. Впрочем, полтора года назад сам Google запустил бета-версию Google Play Games — платформу, которая позволяет любому желающему играть в игры для Android на ПК с Windows. Так что надежда на нормальную кроссплатформенную работу все же есть.
ЕС по антимонопольному иску Spotify оштрафовала Apple на 1.84 миллиарда евро. И тут даже как-то сочувствие к Apple проснулось. Как пишет Apple, Spotify добился ведущего положения на музыкальном рынке вообще и на iOS в частности во многом как раз с помощью Apple, и при этом ничего ей не платит. "Команда App Review рассмотрела и одобрила 421 версию приложения Spotify - обычно в течение одного дня - и часто ускоряет рассмотрение по просьбе Spotify. Для того чтобы создать инструменты, технологии и рынок, которыми Spotify пользуется каждый день, компании Apple требуются постоянные усилия и большие инвестиции. Мы даже летали с нашими инженерами в Стокгольм, чтобы лично помочь командам Spotify. В результате, когда пользователь открывает приложение Spotify, слушает музыку в дороге или просит Siri воспроизвести песню из его библиотеки, все просто работает. И опять же - Spotify ничего не платит Apple". В общем, рекомендую прочитать не только новость, но и ответ Apple - нестандартно эмоциональный и интересный.
Разработка
• ЕС оштрафовала Apple на 1.8 млрд евро по антимонопольному иску Spotify
• Как я перестал бояться и полюбил автоматизацию мобильных приложений — Robot Framework
• Increase Test Fidelity By Avoiding Mocks
• Why Bad Design is Good
Маркетинг
• Маркетологи в мобайле (Spring Edition): Мария Миткевич (Мегамаркет)
• Что ученые знают про темные паттерны в дизайне: как повышают конверсию и насколько роняют доверие?
Кроссплатформа
• Навигация по страницам во Flutter
• Flutter: Modularized Dependency Injection