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
Разработчики игр для Playdate заработали $544,290.12
Исполнилось два года с того момента, как команда Panic выпустила Playdate, свою уникальную портативную игровую систему с ручкой, и год с открытия магазина игр Catalog .
1. С момента запуска магазина было продано более 150,000 игр. Это дало разработчикам $544,290.12 валового дохода - после уплаты налогов, комиссии за обработку и 25% доли дохода Panic за распространение.
2. Покупателям было продано более 70,000 Playdate. 38 000 пользователей Playdate, около 53%, совершили покупку в Каталоге. Около 32,000 пользователей, которые не купили ни одной игры, все еще играют в игры, включенными в Playdate Season One.
3. Средняя цена игры Playdate составляет $5.36. Цены на игры Playdate зависят от разработчика и могут быть как низкими — $1, так и высокими — $15. Самые популярные регионы для покупки игр — США, Великобритания, Германия, Канада и Япония.
4. Panic предоставляет SDK для создания игр Playdate на языках C и Lua с соответствующим симулятором. Есть и пример создания игр на Swift.
И что: вроде не очень большой рынок, но активный и увлеченный - будет только расти. Для хобби-проектов - самое оно.
Видео и подкасты за неделю:
• (iOS Ru)
А так ли нужна Swift Modern Concurrency?
• (iOS Ru)
Мгновенный фидбэк: как оперативно получать отзывы о приложении в App Store
• (iOS En)
Your guide to Metal ray tracing
• (iOS En)
Integrate Screen-Sharing Into a SwiftUI App
• (iOS En)
SwiftUI Custom Transitions
• (iOS En)
Building Netflix UI Animations
• (And Ru)
Устройство Android Music SDK или как мы встроили музыку в суперапп-приложение
• (And Ru)
Интеграция MediaPipe в Android-приложение видеоконференцсвязи
• (And En)
Now in Android: 103 - Android 15 Beta, Gemini in Android Studio, Google Drive improvements, & more
• (And En)
MVVM vs. MVI - Understand the Difference Once and for All
• (And En)
The ONLY Thing to MASTER as an Android Developer (And Why 99% FAIL!)
• (And En)
Boosting Bazel adoption on Android with automation
• (And En)
Inline Functions: inline, crossinline, and noinline
• (Dev Ru)
Инженерная культура BigTech: работа мечты или испытание на прочность?
• (Dev Ru)
Как устроена мобильная разработка в Кинопоиске
• (Dev Ru)
Пробить стеклянный потолок и стать сеньором
Посоветуйте в комментариях интересные каналы по мобильной разработке? 🌐 @AppFiles
Нашел на Reddit забавный пост с 5 уроками по результатам 5 лет разработки. За 5 (пять) лет чувак сделал 1 (одно) приложение (ну да, да, front-end, back-end, dev-ops и т.д., но все же) и делится опытом. Собственно, все советы применимы практически к любой области/ Смотрите сами - в скобках моя альтернативы:
1. Flutter (iOS/Android/..) достаточно.
2. Сообщество сделало это до вас
3. Просите помощи. ИЛИ НЕ ПРОСИТЕ
4. Игнорируйте ненавистников
5. Лучшие знания бесплатны
А какие уроки вы вынесли из своей карьеры? ☺️
Разработка
• Using server-side Swift for machine learning processing
• Basic Things
Маркетинг
• Как повысить рейтинг приложения: практическое руководство по запросу отзывов
Кроссплатформа
• 5 уроков после 5 лет разработки на Flutter
• Advanced Theming Techniques in Flutter: Leveraging Extensions for Dynamic UIs
• Accessibility in Flutter on the Web
Вышла 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
❓Хотите повысить качество и читаемость своего кода в мобильной разработке? Присмотритесь к Flutter и его возможностям
Как взаимодействовать с JS-библиотеками и запускать нативный Kotlin/Swift-код без использования платформенных каналов и FFI?
Все это и даже больше обсудим на открытом практическом уроке от OTUS. Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex.
На вебинаре разберем:
- Native assets как альтернативу Platform Channels / FFI для мобильной разработки;
- взаимодействие с Java-кодом через библиотеки jni / jnigen;
- проблему взаимодействия с существующими JS-модулями в Flutter Web и новые библиотеки для доступа к JS-объектам;
- примеры использования нативных библиотек для задач высокопроизводительных вычислений во Flutter-приложениях.
Встречаемся 24 апреля в 20:00 мск в преддверии старта курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!
👉 Посетите бесплатный урок: https://otus.pw/6WiI/Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как быстро пробить стеклянный потолок
Традиционная подборка всех материалов за прошлую неделю - чистая архитектура и MVVM в iOS, закан RxJava и критических оповещений на Android, опыт внедрения компонентной разработки, смартфон для джаваскриптера-олдфага, практическое руководство по запросу отзывов и многое другое. Заходите!
Google объединяет команды Android и аппаратного обеспечения
Все ради ускорения внедрения ИИ.
1. Сундар Пичаи объявил о существенной внутренней реорганизации, в том числе о создании новой команды под названием «Платформы и устройства» (Platforms and Devices), которая будет курировать все продукты Google Pixel, весь Android, Chrome, ChromeOS, Photos и многое другое.
2. Руководить командой будет Рик Остерлох, который ранее занимал должность вице-президента по устройствам и сервисам, курируя все аппаратное обеспечение Google. Хироши Локхаймер, долгое время возглавлявший подразделения Android, Chrome и ChromeOS, займется другими проектами внутри Google и Alphabet.
3. Причина радикальных изменений, как утверждается, заключается в том, чтобы обеспечить «более высокое качество продуктов и опыта», «ускорить экосистемы Android и Chrome» и «быстрее доносить лучшие инновации до партнеров». Проще говоря, компания хочет еще больше ускорить процесс внедрения искусственного интеллекта.
И что: на протяжении многих лет Google заявлял, что старательно отделяет свои собственные разработки в области аппаратного обеспечения от работы с более широкой экосистемой Android, чтобы не создавать привилегий для собственных устройств и не осложнять отношения с такими компаниями, как Samsung. Означают ли новые изменения окончание разделения Pixel и Android? Внутри Google говорят, что совсем нет, снаружи кажется, что немножко да.
Android
• Introduction to Foundational Tools in Android
• Some Best-Practices for State Management in Jetpack Compose
• samirdubey/demystifying-jni-boost-performance-and-access-native-features-f5308c227ff0">Demystifying JNI: Boost Performance and Access Native Features
#android