The Composable Architecture: мои 3 года использования
The Composable Architecture только что исполнилось 4 года, а вот Род Шмидт рассказывает о реальных трех годах использования TCA в продакшене. Как обычно, “реальность далека от юношеских песен”, и в архитектуре есть сложности с пониманием и использованием, с постоянными переменами, есть архитектурные проблемы, проблемы с производительностью и работой нескольких команд над одним проектом.
TCA — это сторонний фреймворк, не поддерживаемый Apple, и он зависит всего от двух гениальных парней, на которых вы, по сути, ставите всё — всю свою кодовую базу. Это фреймворк, основанный на функциональном программировании, который противоречит объектно-ориентированному наследию и влиянию SwiftUI. Возможно, вы будете более продуктивны в работе с новыми разработчиками и добавлении функций с другой архитектурой и все же сможете достичь желаемой дисциплины с помощью MVVM или Чистой архитектуры.
Android
• Android мигрирует с Google Fit API на Android Health
• Всегда ли нужна чистая архитектура?
• A Step-by-Step Guide to Performing Data Analysis With Kotlin DataFrame
• Tools and libraries to help your Wear OS app satisfy Google Play app quality requirements
• Readability of Optimized Kotlin Code
• Update Your Compass — New Android Orientation API
#android
Видео и подкасты за неделю:
• (iOS En)
Design and build apps for watchOS 10
• (iOS En)
Make features discoverable with TipKit
• (iOS En)
Share files with SharePlay
• (And Ru)
Всегда ли нужна чистая архитектура?
• (And En)
What’s new in Android Studio Jellyfish
• (And En)
Now in Android: 104 - Android Studio Jellyfish, A/B testing power consumption, AndroidX, and more
• (And En)
Learn to Build a Multi-Module Running Tracker App + Wear OS App
• (And En)
Three Simple Rules for Subtypes
• (Dev Ru)
Будущее магазинов приложений
• (Dev Ru)
100% способ пройти собеседование
• (Dev Ru)
Как увеличить свою продуктивность. Полный гайд по Notion
Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке? 🌐 @AppFiles
Android
• Android 15 заставит приложения переходить в темный режим, даже если они его не поддерживают
• FlowExt — расширения для Flow
• Находим и увольняем low-перформеров
• Вышла Android Studio Jellyfish
• Survey View — опросы и анкеты на Jetpack Compose
• How to effectively A/B test power consumption for your Android app’s features
• Kotlin Coroutine mechanisms: runBlocking v. launch
• Toggle Labels With Icons - Personalizing Accessibility
• The Road Less Starred: Lessons Learned from My Markdown Twain Library
• Reversing a Bluetooth LE gadget protocol
• Working On A Multiple Library Project
#android
Вышла Android Studio Jellyfish
Вышел официальный стабильный релиз Android Studio Jellyfish (2023.3.1). Он призван повысить эффективность вашей разработки под Android и создания высококачественных приложений нового поколения.
Что нового:
• ИИ-помощник Gemini in Android Studio стал стабильным и теперь доступен в более чем 200 странах (в России недоступен).
• Модульные разрешения на вход в сервисы — новый поток входа позволяет выбрать только те интеграции со службами Google, которые вы хотите включить.
• Android Device Streaming, powered by Firebase работает прямо в AS и позволяет безопасно подключаться к удаленным физическим устройствам Android, размещенным в защищенных центрах обработки данных Google.
• В App Quality Insights упростили анализ сбоев.
• Встроенный инспектор макетов (Layout Inspector) теперь по умолчанию встроен в окно инструмента Running Devices. Такая интеграция позволяет экономить экранное пространство, централизовать рабочий процесс в едином окне инструментов и обеспечивает значительный прирост производительности.
• App Links Assistant поддерживает проверку глубоких ссылок.
• Установка базового профиля — Baseline Profiles повышают скорость выполнения кода примерно на 30% с первого запуска за счет отсутствия шагов интерпретации и компиляции just-in-time (JIT) для включенных путей кода. Android Studio Jellyfish теперь компилирует эти базовые профили, когда на устройство устанавливается любая не отлаживаемая сборка.
Скачать новую версию Android Studio Jellyfish вы можете уже сейчас на официальном сайте.
Google проводит сокращения в командах Flutter, Dart и Python
В преддверии ежегодной конференции для разработчиков I/O, которая пройдет в мае, технологический гигант сократил персонал в таких ключевых командах, как Flutter, Dart, Python и других, согласно сообщениям пострадавших сотрудников, опубликованным в социальных сетях. Google подтвердил факт увольнения, но не назвал конкретные команды, роли и количество уволенных.
1. Новостью №1 стало увольнение всего американского отдела, занимавшегося развитием языка Python. Задачи теперь будет делать отдел в Германии. Вероятно, так дешевле.
2. Однако PM из Flutter и Dart сообщил, что увольнения затронули «множество команд» и что «многие замечательные проекты потеряли людей».
3. «Мы опечалены, но продолжаем упорно работать над I/O и далее», — написал один из руководителей Google Кевин Мур в сообществе разработчиков Flutter на Reddit, где добавил, что Flutter и Dart пострадали не больше и не меньше, чем другие команды. «Мы знаем, что вы очень сильно переживаете за проект, команду и потрясающую экосистему, которую мы построили вместе. Вы нервничаете. Я понимаю. Мы понимаем. Вы делаете ставку на Flutter и Dart. Я тоже. И Google тоже».
И что: ранее Тим Снит, директор по продукту и UX Flutter и Dart, перешел в Apple и в совокупности кажется, что будущее Flutter туманно. Однако в реальности это действительно больше похоже на оптимизацию, и вряд ли Google прекратит развитие платформы.
RevenueCat привлек $12 млн в рамках Серии C
И компания запускает RevenueCat Billing, который позволяет разработчикам интегрировать покупки подписок в любой веб-сайт.
Про продукт:
1. В ЕС вступил в силу закон о цифровых рынках, который вынудил Apple открыть iPhone и App Store для конкурентных продуктов. В том числе для оплаты продуктов на сайтах.
2. Компания утверждает, что пошла в этом направлении благодаря заинтересованности разработчиков. Даже если у них не было веб-приложения, многие разработчики хотели перевести своих клиентов на веб-платежи.
3. Теперь, даже если разработчики обрабатывают платежи через Stripe или другие компании, они получают данные и информацию в том же формате и на том же дашборде, где они уже управляют данными о покупках в приложениях.
Про инвестиции:
4. Интересно 1: Новая Серия С $12 миллионов. Предыдущая была $40 млн. Сокращение, конечно, не свидетельство проблем, но все же почему столько?... "Мы можем сделать так много вещей, используя капитал! А делать это на основе прибыли - просто замедлять наше развитие. Поэтому, пока есть доступ к инвестициям, самое лучшее для наших клиентов и инвесторов - это взять их и потратить быстрее"
5. Интересно 2: Компания говорит "наш главный конкурент - это “собрать поток монетизации самостоятельно”".
6. Интересно 3: RevenueCat пока не является прибыльной компанией, но "прибыльность всегда на горизонте".
Android
• N8 — библиотека навигации на основе состояний
• K2 Compiler Performance Benchmarks and How to Measure Them on Your Projects
• App Architecture: How to map data between layers
• noob-programmer/kotlins-explicit-backing-fields-a-cleaner-way-to-work-with-mutablestateflow-926e2dbc946e">Kotlin’s Explicit Backing Fields: A Cleaner Way to Work with MutableStateFlow
#android
Пишете на Swift под iOS? Или на Java/Kotlin под Android? Для вас есть работа в Тинькофф.
18 и 19 мая пройдет Mobile Weekend Offer для разработчиков с опытом от 3 лет. Так можно попасть в команду еще быстрее: пройти все этапы собеседования за выходные и получить оффер на неделе.
Если устроитесь, будете решать сложные финтех-задачи, развивать продукты для миллионов и расти в сильной команде. Топовый стек, достойная оплата и ДМС со стоматологией тоже будут.
Проверьте свои силы — оставьте заявку до 15 маяРеклама. АО «Тинькофф Банк», ИНН 7710140679
Кстати про «айфон в виртуальной реальности» - аналитик пишет, что Apple сократила заказы на Vision Pro еще до того, как она начала продажи за пределами США. Его источники утверждают, что теперь Apple рассчитывает продать всего 400-450 тысяч устройств в 2024 году, тогда как прогноз составлял 700-800 тысяч гарнитур. Мне кажется, что и 400К гарнитур не предел сокращения, а кроме того, вероятно, Apple теперь скорректирует свою дорожную карту развития, возможно, отодвигая будущее недорогой гарнитуры смешанной реальности на более поздний срок.
Разработка
• Apple сократила заказ Vision Pro
• Микроанимация и ховер-эффекты в интерфейсе: как улучшить пользовательский опыт
• Why we suck at estimating software projects
• I'm a programmer and I'm stupid
Маркетинг
• Glance продвигает свой экран блокировки в США
Кроссплатформа
• Flutter and Dart at Google Cloud Next
iOS
• Оптимизируем обновление местоположения с помощью CLLocationUpdate в Swift
• EeveeSpotify — получение бесплатного Spotify Premium
• kodekarim/90-of-ios-dev-are-unhirable-15f175993b7e">90% of .iOS Dev are unhirable?
• Foundational Tools in iOS
• What are lazy vars in Swift?
• How one line of code led to +50% faster Swift compilation for tens of thousands of teams
• Audio Input Device Switch Management in AVAudioSession
#ios
Horizon OS, на которой работают все гарнитуры Quest, открывают для сторонних производителей. Уже объявлено, что Asus будет использовать Horizon OS для создания новой «производительной игровой» VR-гарнитуры, а Lenovo для «устройств смешанной реальности для продуктивности, обучения и развлечений». Как пишет Андрей Себрант, “когда появилась VisionOS от Apple и их модная дорогая гарнитура Vision Pro, Цукерберг в разных местах отмечал, что не важно, кто будет «айфоном в виртуальной реальности» — важно, кто займет там место Android со всей его огромной экосистемой и тучей устройств всех ценовых категорий”. Можно конечно поспорить и сказать, что «айфоны» получают львиную долю прибыли на рынке смартфонов, что ой как важно, но в целом кто станет Android кажется уже понятно.
Разработка
• Horizon OS открывается для сторонних компаний
• Как рефакторинг чуть не разрушил мой брак
• Preventing Fraud at Robinhood using Graph Intelligence
• I accidentally built a meme search engine
Маркетинг
• Маркетологи в мобайле: Галина Голубева («Национальная Лотерея»)
• Mood.camera делает из iPhone старую фотокамеру
• Улучшили результаты рекламы iOS-приложения, увеличив число покупок в 8 раз
Кроссплатформа
• Создавайте виджеты главного экрана iOS с помощью Flutter
• Beyond Code Generation: Crafting Custom Hive Adapters
• flutterbaba/how-to-block-screenshots-in-your-flutter-app-b9438e915aaf">How to block Screenshots in your Flutter app
iOS
• Improve Test Clarity (TDD with SwiftUI)
• Streamlined Location Updates with CLLocationUpdate in Swift
• Dynamic gradient using the average image color in SwiftUI
• How to use SwiftData outside SwiftUI
• Using @Environment in SwiftUI to link Swift Package dependencies
#ios
К вопросам о кликбейтных заголовках 😀 Пришла статья "Как рефакторинг чуть не разрушил мой брак".
👍 если хотите прочитать, 😱 если ну его
Android
• Google объединяет команды Android и аппаратного обеспечения ради скорости и искусственного интеллекта
• Droid-ify — клиент F-Droid с материальным дизайном
• Устройство Android Music SDK или как мы встроили музыку в суперапп-приложение
• Интеграция MediaPipe в Android-приложение видеоконференцсвязи
• Using XML Views in Compose
• I Removed JetPack Compose from My App
• A Pattern for Composing Flow Operations
• Beware of Build Time Bloat
• Migrating from the ClickableText composable to LinkAnnotation
• Dot. Dash. Design
• Ready, Aim, Release: Android app rollout tips
#android
Традиционно почти в начале месяца обозрел топы скачиваемых и зарабатывающих приложений в России. В них практически без изменений (лидирует Телеграм), но интересно, что хит марта - приложение PetTalk, которое обещала перевод с собачьего и кошачьего - очевидно выпилили из Google Play (если успели потестить - напишите в комменты, что это было). Оказывается, что если приложение выглядит, пахнет и ощущается как скам, то оно и на самом деле является скамом. Так что до исполнения мечты о разговоре с кошками/собаками/рыбками все таки осталось еще несколько лет.
Разработка
• Будущее магазинов приложений
• 100% способ пройти собеседование
• Как увеличить свою продуктивность. Полный гайд по Notion
• Что такое Градиентный спуск
• Бинарный поиск — вопросы с собеседований
Маркетинг
• Приложения для знакомств быстро растут
• У Airbnb лучший по загрузкам квартал в истории
• Как увеличить возврат инвестиций в продвижение на 657%: кейс bush.production и «Арабикл»
• Самые скачиваемые и зарабатывающие приложения в России в апреле 2024
Кроссплатформа
• How to publish a Kotlin Multiplatform Android app on Play Store with GitHub Actions
• Using Jetpack Room in Kotlin Multiplatform shared code
• Show Info Message on both Android/iOS - MessageBar KMP Library
iOS
• SwiftOBD2 — набор инструментов для работы с OBD2
• YMFF — управление фичами и фиче-флагами
• Swift 6: Access level on import statements
• How to refactor code with regular expressions
• 4 years of the Composable Architecture
• The Composable Architecture: My 3 Year Experience
• Testing Network Layers with Stubs, Mocks, and Spies
• Inspectors in SwiftUI
• Extracting app logs from an .xcresult
#ios
LinkedIn теперь тоже игровой бизнес. Начиная с сегодняшнего дня, пользователи мобильных приложений LinkedIn могут играть в одну из трех игр — Pinpoint, Queens и Crossclimb. Впрочем, решение LinkedIn заняться играми-головоломками не должно удивлять. Компании, занимающиеся производством цифрового контента, с трудом зарабатывают деньги: доходы от рекламы сокращаются и Google делает все возможное, чтобы уменьшить прибыль издателей. Поэтому добавление «игрового» контента оказалось очень ценным. Это уникальный способ привлечь новых пользователей и заинтересовать старых, чтобы в конечном итоге заставить их потратить деньги. А в ваше приложение можно добавить игры? 🎲
Разработка
• В LinkedIn добавили игры
• Самые высокооплачиваемые вакансии апреля в сфере разработки приложений
• Выход сериал Fallout привел к значительному росту доходов мобильной игры
• Google проводит сокращения в командах Flutter, Dart и Python
• Поиск в ширину — вопросы с собеседований
• Как проходит архитектурная секция в команду мобильной разработки Яндекс 360
• Настройка CI/CD
• Особенности построения интерфейса для разных платформ
• Встраиваем Unity в мобильное приложение. Боль и костыли
• Как сделать игру интересной
• Microsoft открыла код MS-DOS 4.0
• 5 tips for a successful (iOS) take-home project
• Case Study: Designing a Financial Advisory Platform UX and UI
Маркетинг
• RevenueCat привлекает $12 млн в рамках Серии C и расширяет управление подписками в Интернете
• Большой гид по гиперказуальным играм: от механик до монетизации
Кроссплатформа
• 4 урока после 4 месяцев разработки на Flutter
• Jetpack Compose for iOS: Interoping with native Components
• Creating a React Native “Curved Bottom Bar” with Handwritten SVG
iOS
Apple убрала CTF для некоторых категорий - практически для всех, кроме совсем больших 👇
• Apple уточняет условия CTF и вводит правила для iPadOS
• Организация и поддержка нативных UI-тестов в iOS
• Поля содержимого в SwiftUI
• EasyCrypto — новые технологии в отслеживании криптовалют
• Developing Embedded Applications with Swift
• Safely unwrap optional values in SwiftUI bindings
• How to add a privacy manifest file to your app for required reason API usage?
• Asking AI to Refactor Swift Code
• How to solve problems with bitwise operators in Swift
• The ContentUnavailableView In SwiftUI
#ios
Оптимизируем эволюцию
Первый рабочий день (ака четверг) - самое время вспомнить, что было на прошлой неделе. Это проще всего с помощью нашего еженедельного дайджеста - в нем гистограммы и локации в iOS, ViewModel и координаторы в Android, виджеты в Flutter, дизайн-система, Fallout в Excel, заработки разработчиков игр для Playdate и многое другое. Заходите!
Видео и подкасты за неделю:
• (iOS Ru)
Организация и поддержка нативных UI-тестов в iOS
• (iOS En)
SwiftUI Range Slider
• (iOS En)
Swift Server Side Meetup
• (iOS En)
SwiftData Value Transformers With Transformable
• (And Ru)
Находим и увольняем low-перформеров
• (And En)
Why YOU Have the WRONG Focus as an Android Developer
• (And En)
4 Ways To Debug Recomposition in Your Jetpack Compose UI
• (Dev Ru)
Как сделать игру интересной
• (Dev Ru)
Встраиваем Unity в мобильное приложение. Боль и костыли
• (Dev Ru)
Особенности построения интерфейса для разных платформ
• (Dev Ru)
Как проходит архитектурная секция в команду мобильной разработки Яндекс 360 (+ все собеседования)
• (Dev Ru)
Настройка CI/CD
Посоветуйте в комментариях интересные каналы по мобильной разработке? 🌐 @AppFiles
Хорошо, Apple Search Ads запускается в Бразилии, главной стране Южной Америки и одном из главных рынков мобильных приложений в мире. Хочу сделать обзор того, что там популярно, какие заработки и т.п. Может быть не только по Бразилии, но и по некоторым другим странам. Интересно? Работаете в ЛатАм?
Разработка
• Разработчик сделал ролевую игру Fallout в Excel
• (Кликбейт) 90% iOS-разработчиков ненанимаемы?
• ИИ-помощник для программирования Augment получает $252 млн
• Women Who Code закрывается
• Apple выпускает модели искусственного интеллекта с открытым исходным кодом, которые работают на устройстве
• 4 Software Design Principles I Learned the Hard Way
• The Road Less Starred: Lessons Learned from My Markdown Twain Library
Маркетинг
• Apple Search Ads запускается в Бразилии и других странах Латинской Америки
Кроссплатформа
• I've spent 4+ weeks working on Hermio using Flutter. Here are 4 Lessons I've learned
• Powerful Dart typedef
iOS
• SwiftUI loading states with a twist; Solving a mutation puzzle
• How to Mirror Any View in SwiftUI?
• batrakov.vitaly/adapting-uihostingcontroller-to-changes-in-swiftui-view-size-da11a0994a1e">Adapting UIHostingController to changes in SwiftUI View size
#ios
Разработчик сделал ролевую игру Fallout в Excel
С выходом сериала Fallout на канале Prime Video мир вновь переживает возрождение интереса к постапокалипсису.
1. Разработчик Dynamic Pear — далеко не новичок в создании игр в приложении Microsoft для работы с электронными таблицами. Он уже создал множество проектов, от похожей на Baldur’s Gate ролевой игры до хоррор-выживания.
2. Теперь он вернулся с версией Fallout. Но похоже это, конечно, на Fallout 1 и 2, где путешествия по миру происходят по карте, на которой вы перемещаете точку. Зато в игре есть квесты (да, квесты в Excel), а также полноценная боевая система со статистикой, расчетом атак и повышением уровня.
3. Самое приятное, что если босс застанет вас за игрой в рабочее время, вы сможете как-то объяснить, что то, что сейчас происходит на экране, очень важно для работы. В конце концов, это же в Excel, верно?
И что: если серьезно, а ваше приложение/продукт можно заменить продвинутой таблицей? Может и правда заменить?
Android
• Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 3
• Jetpack Compose для ленивых
• Code Sketching with Kotlin Notebooks: Developer Guide
• Kotlin: An Illustrated Guide - Generic Variance
• Kotlin Coroutines 101: Async Programming in Practice
• Update Your Compass — New Android Orientation API
#android
🚀 Подключайся к Usetech Mobile MeetUp (UMM) #1
Не попал на весенние конференции по мобильной разработке или не удалось задать вопросы экспертам? 6 мая в 15:00 по Мск присоединяйся к первому онлайн-митапу по мобильной разработке от ГК Юзтех.
В программе:
🔊«SwiftUI сейчас. Стек, советы, рекомендации» Анна Жаркова, лид мобильной разработки в ГК Юзтех
🔊 «НЕмультиплатформенные привычки Android разработки» Алексей Панов, техлид инфраструктуры мобильных приложений в Контур
🔊 «Пять лет с Flutter: эволюция кроссплатформенности» Евгений Сатуров, руководитель команды Flutter-разработки в SURF
Регистрируйся на митап по ссылке.
🤩 Авторы самых интересных вопросов получат фирменных юзтех-уточек в подарок!Реклама. ООО "ЮЗТЕХ ПРОФЕШНЛ". ИНН 7717745183.
Android
• Firebase Kotlin SDK — Kotlin-first SDK для Firebase
• Безопасность Android-приложений. Реверсим OWASP MASTG Crackme 1
• Обзор архитектуры Compose с использованием паттерна «координатор»
• How to detect Process Death issues
• Android Navigation: Up vs Back
• fvilarino/shared-element-transitions-in-jetpack-compose-8f553078101e">Shared Element Transitions in Jetpack Compose
• riztech.dev/enhancing-retrofit-api-calls-in-android-using-interceptors-4c39433f1985">Enhancing Retrofit API Calls in Android Using Interceptors
#android
Как рефакторинг чуть не разрушил мой брак
Я не говорю, что код должен жить вечно. Требования меняются, появляются новые технологии.
Я хочу сказать, что разработчики должны быть гораздо осторожнее в определении понятия «устаревший» и в том, насколько активно они прибегают к рефакторингу.
Ваша роль как менеджера заключается в том, чтобы помочь команде найти баланс — представлять разработчиков, бороться за время для рефакторинга, когда вы считаете, что это необходимо, но также представлять бизнес-сторону и давать отпор, если вы считаете, что рефакторинг не является критичным в данный момент.
Из аналитики AppFigures узнал о новом тренде - приложениях для стриминга «короткометражных драм» (Short Drama). Четкого описания не дается, но очевидно, что это сериалы, снятые в формате коротких мобильных видео. Что в них интересного? Во-первых, некоторые из этих приложений имеют огромные подборки видео, и хотя контент не совсем соответствует качеству Netflix, он и не является кустарным. Во-вторых, монетизация - большинство приложений для просмотра короткометражных фильмов требуют не подписки, а покупки монет, а затем их использования для просмотра контента. Наконец, за последний год доход, полученный приложениями с короткими драмами, вырос более чем на 13,000% — с сотен тысяч до десятков миллионов долларов. В марте они получили более $65 млн. потребительских расходов по всему миру. В январе 2023 года было менее $500 тыс — рост на 13,000% всего за год.
Разработка
• Сделайте что-то реальное в свободное время
• Как устроена мобильная разработка в Кинопоиске
• Пробить стеклянный потолок и стать сеньором
• Инженерная культура BigTech: работа мечты или испытание на прочность?
• Дай знать, где ты находишься: как мы разработали навигатор по Эрмитажу
• From Hired!… to Fired! Avoid these 2 Developer Career Death Traps
• Top 10 Cognitive Biases in Product Design
• UI/UX Case Study: Designing a gamified app to help users manage screen time
Маркетинг
• Разработчики игр для Playdate заработали $544,290.12
• Новый тренд в стриминге зарабатывает миллионы
• Линеаризация: зачем и как укрощать ratio-метрики в A/B-тестах
Кроссплатформа
• Create a multiplatform app using Ktor and SQLDelight
• React Native Masters: Tips for Building React Native Apps that Run Smoothly
iOS
• Создаем гистограмму с помощью Swift Charts
• Zephyr — синхронизация UserDefaults через iCloud
• А так ли нужна Swift Modern Concurrency?
• Мгновенный фидбэк: как оперативно получать отзывы о приложении в App Store
• My favorite Xcode keyboard shortcuts to be more productive
• Trigger value pattern in SwiftUI
• Deep Dive Into Macros
• Initializing @MainActor type from a non-isolated context in Swift
• Getting started with Apollo iOS for GraphQL in Swift
#ios