У Data.ai вышел годовой отчет State of Mobile 2024 - много данных по рынку, категориям, странам. Всего пользователи потратили в магазинах 171 миллиард долларов, это рост на 4%. На приложения из них ушло 64 миллиарда. Больше всего выросли категории Развлечения, Социальные Медиа и Утилиты/Продуктивность. Топ категорий по тратам - OTT, Dating, Короткие видео, Видео-шаринг, Комиксы. В общем - более 100 страниц и желательно к изучению.
Разработка
• Quora получила $75 млн на развитие ИИ-платформы Poe
• Принципы функционального программирования — Обучающий курс Университета Карнеги-Меллона
• How to use stacked PRs to unblock your entire team
• Product Management is broken, a change is coming
Маркетинг
• State of Mobile 2024 — годовой отчет Data.ai
• PhotoRoom, ИИ-приложение для обработки фотографий, привлекает еще $60 млн
Кроссплатформа
• Implementing Clean Code Principles in Flutter Programming
• Flutter 3.18 | Top 8 Feature
iOS
• SwiftEasyPop: алерты и тосты в SwiftUI
• Влияние AnyView на производительность SwiftUI
• Swift Note: How to write code faster by using Xcode Snippet
• Using @Binding with @Environment(Object.self)
• 2018.itsuki/horizontal-scrollable-buttons-tabs-with-indicators-7aafafbbaae2">Horizontal scrollable buttons (tabs) with Indicators
• redhotbits/testable-swiftui-views-dd268d15a10e">Testable SwiftUI views using async/await
• A Girl and her @ViewBuilder
• Perception: A back-port of @Observable
• StoreKit testing in Swift
#ios
Наконец-то Google перешел от завоевания рынка к созданию действительно удобной для пользователей среды. На CES компания объявила сразу о целом ряде нововведений в Android, которые помогут устройствам лучше работать друг с другом (и с людьми).
Это:
• Output Switcher 2.0 на Android U упростит обмен потоками между устройствами и управление всем из одного места.
• Передача данных на устройства поблизости - пользователи смогут передавать текущую музыку с телефона Pixel Pro на подключенный планшет Pixel Tablet, просто поднеся телефон ближе к подключенному планшету. Эта функция требует интеграции Output Switcher в качестве предварительного условия.
• Google Cast для коротких форм - Google Cast будет лучше работать с TikTok.
• Google и Samsung объединяют Nearby Share и Quick Share в единое решение, которое будет работать на всех типах устройств в экосистемах Android и Chromebook. Google также объявила о сотрудничестве с производителями ПК, такими как LG, чтобы распространить Quick Share на ПК под управлением Windows в качестве предустановленного приложения.
• Fast Pair для сопряжения устройств появится и в Chromecast с Google TV.
Подробнее тут, а как с этим работать тут.
Android
• Compose Drag And Drop: перетаскивание в Compose-проектах
• Добавь немного сахара в Espresso или как писать UI тесты под Android
• Сколько памяти нужно для сборки: Android-разработчикам о JVM
• Android Auto: как Organic Maps переносили в машину
• AnimatedBottomBarCompose: анимированный TabBar для Jetpack Compose
• Как я попробовал написать авиасимулятор
• Пример исследовательского реверс-инжиниринга приложения Zone Launcher
• Exploring use of Gemini Generative AI APIs in a Kotlin/Compose Multiplatform project
• Removing Ambiguity in Kotlin Function by Reference
• Free hand draw polygon in Google Maps Compose
#android
• Mastering Android Dynamic Feature Module Delivery
• Mastering Lazy Lists in Jetpack Compose with Data Classes and MVI
OpenAI запускает GPT Store
OpenAI планирует запустить магазин пользовательских приложений, основанных на ее ИИ-моделях (например, GPT-4), на этой неделе.
1. Магазин GPT был анонсирован в прошлом году во время первой ежегодной конференции для разработчиков, но его запуск позже был отложен — из-за перестановок в руководстве, которые произошли в ноябре.
2. Сторонние GPT (их называют во множественном числе - GPTs) не требуют опыта программирования и могут быть как простыми, так и сложными по желанию разработчика. Например, GPT можно обучить работе с коллекцией кулинарных книг, чтобы он мог отвечать на вопросы об ингредиентах для конкретного рецепта. Или GPT может получить собственные кодовые базы компании, чтобы разработчики могли проверить их стиль или сгенерировать код в соответствии с лучшими практиками.
3. Разработчики могут просто набрать на простом языке те возможности, которые они хотят предложить в своем GPT, и инструмент OpenAI для создания GPT, GPT Builder, попытается создать чатбота на базе ИИ для их выполнения.
4. Пока неясно, будет ли магазин GPT Store работать по какой-либо схеме разделения доходов и будут ли там продажи вообще. об этом обещают рассказать на этой неделе.
И что: первые, как обычно, получают больше. А в целом интересно, как OpenAI переходит от чат-бота к платформе.
Весь год я находил для вас самые интересные новости и статьи о разработке мобильных приложений и их маркетинге, технологиях и мобильном рынке.
Это самые популярные статьи AppTractor.ru за год:
1. Что нужно и чего не нужно делать во время Code Review
2. Что такое Внедрение зависимостей и как это использовать в разработке
3. ARPU и ARPPU: одна буква и принципиальные отличия
4. Как настроить Charles
5. 6 алгоритмов, которые должен знать каждый разработчик
6. Ангелы Charles: как сниффер поможет разработчикам мобильных приложений
7. Мобильные модальные окна: 8 лучших примеров использования
8. Концепции Jetpack Compose, которые должен знать каждый разработчик
9. Принципы SOLID в Swift
10. Что такое событийная (Event Driven) архитектура
11. Как правильно хранить пароли в базе данных
12. compileSdkVersion и targetSdkVersion: в чем разница?
13. По ложному пути: катастрофа последнего обновления Duolingo
14. Архитектура VIPER простыми словами
15. Большая языковая модель на вашем компьютере — момент Stable Diffusion продолжается
Еще раз с Новым Годом и Рождествами 🎄 Хороших приложений!
Видео и подкасты за неделю:
• (iOS Ru)
SwiftData: новый persistence framework от Apple
• (iOS En)
Simple, Clean Empty States in SwiftUI - ContentUnavailableView
• (iOS En)
SwiftUI Parallax Scroll Effect
• (iOS En)
SwiftUI Pie & Donut Charts
• (iOS En)
SwiftData Storing Images and Bug Fixes
• (iOS En)
SwiftUI App Theme Switcher - Dark Mode Switch
• (And Ru)
Android Auto: как Organic Maps переносили в машину
• (And Ru)
Сколько памяти нужно для сборки: Android-разработчикам о JVM
• (And Ru)
Добавь немного сахара в Espresso или как писать UI тесты под Android
• (And En)
I've Built an Android App With Google's New AI Gemini
• (And En)
Top 3 Hacks to Remove LazyColumn Lag in Jetpack Compose
• (Crs En)
Best Practices for Developing Amazing Kotlin Multiplatform Apps with Pamela Hill
• (Dev Ru)
Как работает видеостриминг в мобильных приложениях
• (Dev Ru)
Sber ML Meetup: AutoML, трейдинг и мультимодальность
• (Dev Ru)
Как мы ВКонтакте ускоряем получение результатов тестов
• (Dev Ru)
Тестируем с широко закрытыми глазами
• (Dev En)
Microsoft Azure Fundamentals Certification Course
В комментариях поделитесь интересным видео, который вы посмотрели!
Android
• Простой вопрос по Android Core, на который даже сеньоры отвечают неправильно
• Зачем и как в Альфе была написана библиотека для скриншот тестов под Android
• Mastering Android Dynamic Feature Module Delivery
• hossein_kheirollahpour/implementing-authentication-with-jwt-in-android-without-using-a-library-5b01ea53a9e9">Implementing Authentication with JWT in Android (without using a library)
• android-world/optimizing-jetpack-compose-with-stable-smart-recomposition-strategies-81147b779a0a">Optimizing Jetpack Compose with @Stable: Smart Recomposition Strategies
#android
Наши коллеги из Rocket10 и Bidease подвели итоги уходящего года. Героями предновогодних выпусков «Маркетологи в мобайле» стали ведущие специалисты из компаний inDrive, Sunlight, Fonbet, «Национальная Лотерея» и др.
Ребята рассказали о трендах в performance-маркетинге, поделились интересными бизнес-решениями и посоветовали, на какие источники трафика стоит обратить внимание в 2024 году.
Ссылки на выпуски:
• Часть 1
• Часть 2
Microsoft давеча окончательно переименовала Bing Chat в Copilot и выпустила выпустила Android-приложение для него. Приложение Copilot очень похоже на ChatGPT, с доступом к функциям чатбота, генерации изображений с помощью DALL-E 3, собственно там вроде как даже есть бесплатный доступ к новейшей модели GPT-4 от OpenAI. Из России традиционно недоступно, но с VPN все работает. Так что теперь у нас аж 3 более или менее действующие платформы - ChatGPT, Bard и Copilot.
Разработка
• Microsoft выпустила приложение Copilot для Android
• Как проектировать системы уведомлений в приложениях: дизайн, этапы и нюансы архитектуры
• Спринты — самая большая ошибка в программной инженерии, примите eXtreme Go Horse
• A programming language coding in a grid
• 10 Things Software Developers Should Learn about Learning
Маркетинг
• Маркетологи в мобайле. Итоги года 2023. Часть 2
• AppStore не пропускал нашу регистрацию из-за санкций, но мы всё же выпустили приложение для тех, кто следит за здоровьем
• Japan to crack down on Apple and Google app store monopolies
Кроссплатформа
• ximya/save-your-time-by-handling-flutter-imports-boosting-productivity-with-single-import-82d16dbca0f5">Save Your Time by Handling Flutter Imports: Boosting Productivity with Single Import
• Dart: Object-Oriented Programming (OOP) - Full Course
• lidhin/simplifying-flutter-with-extensions-a33d43d31998">Simplifying Flutter with Extensions
iOS
• Прививка от созависимости. Зачем нужен DI и как он работает в iOS-приложениях hh.ru
• Conway's Game of life with SwiftUI
• jpmtech/getting-started-with-instruments-a35485574601">Getting Started with Instruments
• Jager-yoo/optimizing-ios-widget-network-calls-with-temporary-caching-e32c01570a5c">Optimizing iOS Widget network calls with temporary caching
• adityagi02/creating-a-signature-view-in-swiftui-a-step-by-step-guide-575bb08d20af">Creating a Signature View in SwiftUI: A Step-by-Step Guide
#ios
Новостей особых в выходную неделю нет, поэтому вот вам новое исследование Developer Nation. Пройдите опрос, внесите свой вклад в будущее сообщества и получите ценные призы - вплоть до MacBook Pro 13" M2.
Разработка
• The 10 best UX interactions of 2023
• noriller/sprints-the-biggest-mistake-of-software-engineering-34115e7de008">“Sprints”: The biggest mistake of Software Engineering
Маркетинг
• У трекеров сна лучший год
• Нужен ли был кому-нибудь Beeper Mini?
Кроссплатформа
• NativeScript в мире кроссплатформенной разработки
• Use ONNX Runtime in Flutter
iOS
В первой статье - интересные фишки и оптимизации SwiftUI.
• Мастерство работы в SwiftUI
• On-Demand Resources in iOS
• How to Optimize Your Xcode Project for Fast Test Feedback
• Discovering iOS memory leaks: A case study with Firefox app
• Breaking Language Barriers: How We Added Right To Left Compatibility to the Trendyol iOS App
• RIB Architecture in iOS Swift
#ios
На прошлой неделе Beeper, который сначала научился прокидывать сообщения в iMessage с Android, а потом отчаянно боролся с рогатками Apple, заявил о прекращении борьбы. “Мы не можем победить в игре в кошки-мышки с крупнейшей компанией на Земле”, - говорят авторы. Хорошее в этом то, что разработчики выложили бридж к iMessage, приложение для Mac и iPhone в открытый доступ. Плохое - то что Apple в очередной раз доказала свои неконкурентные политики. Штош. Будем ждать, когда ЕС признает iMessage платформой и принудит открыть мессенджер.
Разработка
• Beeper отказывается от борьбы с Apple и выкладывает код в open source
• Самые высокооплачиваемые вакансии декабря в сфере разработки приложений
• Тренды UX/UI-дизайна 2024
• Разработка Авто.ру и роль руководителя в команде
• Что такое observability мобильного приложения
• Мобильные релизы в Авито
• Силиконовая Долина глазами российского разработчика
• Релокация на Кипр
• Apple разработала прорывной метод запуска LLM на устройствах с ограниченной памятью
• Секрет внутренней связи: откровения Маруси о том, как она научилась слушать себя
• flutterwtf/how-to-improve-user-experience-latest-ux-ui-design-trends-for-2023-cad4f54a9843">How to Improve User Experience: Latest UX/UI Design Trends for 2023
• Best engineers are focusing on helping others
Маркетинг
• Рынок приложений 2023 — Ксения Юркина, Apptica
• Маркетинг мобильных приложений на волне роста во всем мире: и вот какие регионы в топе
Кроссплатформа
• Мультиплатформенная разработка на чистой Java
• Integrating Google Sign-In into Kotlin Multiplatform
• How we built the Super Dash demo in Flutter and Flame in just six weeks
• The Problem With State Management, and Why It Shouldn’t Be a Problem
iOS
• Enchanted: приложение для собственной языковой модели Ollama
• Custom Segmented Control
• Build your first app with SwiftUI and SwiftData
• jpmtech/swiftui-navigationsplitview-30ce87b5de03">SwiftUI NavigationSplitView
• abegehr/testing-swiftdata-migrations-7a612da2c91c">Testing SwiftData Migrations
• maxkalik/ui-throwback-creating-a-retro-progress-bar-for-ios-using-calayers-9539baf65fc3">UI Throwback: Creating a Retro Progress Bar for iOS using CALayers
#ios
Android
• Google улучшает трансляции в Android
• Building Real-Time Location Tracking in Android
• Reshaping the Network Layer: Transitioning from Retrofit to Ktor
• bhoomigadhiya/android-development-in-2023-a-year-of-evolution-ff5c122fad1e">Android Development in 2023: A Year of Evolution
• Kotlin Tricky Output Questions
• Boosting Kotlin Performance: Essential Knowledge in 15 Best Practices
• Synchronous and Asynchronous runs: run, runCatching, runBlocking and runInterruptible in Kotlin
• Safely Navigating the Transition: From Gson to kotlinx.serialization
• Using C/C++ in Android: A Comprehensive Guide For Beginners
#android
Влияние AnyView на производительность SwiftUI
AnyView — это представление без типа (type-erased), которое может пригодиться в контейнерах SwiftUI, состоящих из разнородных представлений. В таких случаях вам не нужно указывать конкретный тип всех представлений, которые могут находиться в иерархии. При таком подходе можно избежать использования дженериков, что упрощает код. Однако его использование может сопровождаться снижением производительности. Как известно, SwiftUI полагается на тип представлений для вычисления разниц (диффинга). Если это AnyView (который, по сути, является оберткой), SwiftUI будет сложно определить идентичность представления и его структуру, и он просто всегда будет перерисовывать всё представление, что не очень эффективно.
В этой статье на примере Stream SDK отслеживаем производительность ленты (заминки анимации и FPS) - без AnyView и с ним.
С мест докладывают, что у Duolingo лучший год - как по установкам, так и по деньгам. Чистая выручка Duolingo (после “налогов” магазинов) в 2023 году составила $339 млн. Это на 57% больше, чем в прошлом году, и на 2,725% больше, чем в 2018. Что касается загрузок, то в 2023 году Duolingo получил 134 миллиона новых установок из App Store и Google Play. Это на 30% больше, чем в 2022 году, и на 179% больше, чем в 2018. Это не такой рост, как у доходов, но очень хорошо для признанного лидера. Так что в целом все, кто жалуется на злобную зеленую сову, могут идти лесом 🛍
Разработка
• Тестируем с широко закрытыми глазами
• Как работает видеостриминг в мобильных приложениях
• Unity сокращает 25% своего персонала
• Обзор Mac Mini (M2, 2023): лучший настольный компьютер за свои деньги
• Jan: открытый офлайн аналог ChatGPT
• OpenAI запускает GPT Store
• Software Quality
• Design better pagination
• UI/UX Design Trends For 2024
• How Uber Finds Nearby Drivers at 1 Million Requests per Second
• The biggest mistake you’re probably making for your FAANG/MAANG Interview prep
Маркетинг
• Язык успеха — Duolingo
Кроссплатформа
• Что нового во Flutter 3.16, ч.1
• Object Detection in React Native
iOS
• SwiftData: новый persistence framework от Apple
• Вышел Xcode с поддержкой Apple Vision Pro
• Вопросы с собеседований: Как устроено наследование в Swift
• ScrollView с прилипающим выделенным элементом на SwiftUI
• How we built a Swift macOS app that uses our Rust library
• AnyView’s impact on SwiftUI performance
• Can Swift Keep Its Compile-Safe Thread Management Promise?
• SwiftData Course
• Changing your iOS App Icon programmatically
• @Observable Macro performance increase over ObservableObject
#ios
Врываемся в новый год с первой рекламой Apple Vision Pro.
Apple откроет предварительные заказы на Vision Pro 19 января, а официально она будет доступна 2 февраля. Для разработчиков уже вышел Xcode 15.2 с полной поддержкой visionOS SDK.
@AppTractor
Итоги моего канала за 2023 год. По всем параметрам выросли 😌 По сайту еще подведу отдельно итоги, но и так спасибо, что читаете и участвуете!
Читать полностью…Последняя подборка в этом году. Всех с наступающим 🎄 Любви и хороших проектов, пусть все получится и приносит радость. Обнял ☺️
Разработка
• ATHYLPS: пет-проект, приносящий радость от экспериментов с технологиями
• Новый умный холодильник Samsung генерирует рецепты с помощью ИИ
• Ведущий дизайнер Apple перешел в компанию Джони Айва для работы над ИИ-устройством с Сэмом Альтманом
• Когда закончится эра безграмотных мобильных интерфейсов? Воспоминания о курсе эргономики 1985 года
• Stop saying “technical debt”
• Unwrapping the Delightful UX of the Chipotle App: A Case Study
• The IDEs we had 30 years ago... and we lost
• Developers experience burnout, but 70% of them code on weekends
Маркетинг
• Это база: как создать эффективный рекламный баннер в приложении
Кроссплатформа
• Я сделал Cardoteka и вот как её использовать [кто любит черпать]
• sebizaur/flutter-fails-how-to-avoid-the-top-5-mistakes-in-2023-b4c034eb8db9">Flutter Fails: How to Avoid the Top 5 Mistakes in 2023
iOS
• CodeEdit: редактор кода для macOS
• Как и зачем мы внедрили Snapshot Testing
• Comparing Swift Compiler Performance on Type Inference
• Rust API Bindings: Core Foundation Signed/Unsigned Conversion
• fsamuelsmartins/how-to-use-the-swiftuis-navigationstack-79f32ada7c69">How to use the SwiftUI’s NavigationStack
• shchukin-alex/lock-free-in-swift-memory-model-and-petersons-algorithm-f070581c2d75">Lock-Free in Swift: Memory model and Peterson’s algorithm
#ios
Мое новое легендарное интервью с Сергеем Опиваловым, Senior Software инженером в Gradle
Обсуждаем его пет-проект — приложение ATHYLPS, тренажер для математических навыков в покере.
⁃ Первое ядро, которое делает эвалюацию покерных рук и может генерировать рандомные раздачи для тренировки, было на Go.
⁃ Это ядро использовалось на Android и на iOS (Flutter).
⁃ В этом году получилось переписать ядро на Kotlin и было принято решение переезжать с Flutter на Kotlin Multiplatform.
⁃ Реализация ядра на Kotlin позволила наконец-то написать хорошие тесты для него, в том числе перформанс тесты на JMH.
Подробнее про разработку: https://apptractor.ru/info/interview/athylps.html
Android
• Bluetooth LE Spam: спам через BLE
• husayn.fakher/exploring-kotlin-deferred-10-questions-answered-e1ea98f644db">Exploring Kotlin Deferred: 10 Questions Answered
• AppBarLayout in Compose
• A Complete Guide to Android Foldable Devices: Unfolding the Future
• Compose Navigation — A great choice for large Android apps
• pnbharat/performance-optimization-in-jetpack-compose-e689660d4aac">Performance Optimization in Jetpack Compose
#android
Agile “по бразильской системе” - eXtreme Go Horse
Прекрасный юморной манифест для тех, кто устал от бесконечных скачек.
XGH не цепляется за сиюминутные течения, они для слабаков. XGH всегда использовался и будет использоваться теми, кто пренебрегает качеством. В XGH вы не думаете, вы делаете первое, что приходит в голову. Нет второго варианта, единственный вариант — самый быстрый.
Android
• Increase your app’s availability across device types
• Tiled Image Backgrounds in Jetpack Compose
• Simplifying Navigation in Multi-Module Android Apps with Compose Destinations
• Say Goodbye to Script Duplication: Gradle Convention Plugin for Android Code Reuse
• Yo Ho Ho and a Heap of Memory Leak Woes: LeakCanary to the Rescue!
• Offline mode in the Licious Rider App
• sujathamudadla1213/android-kotlin-coroutines-interview-questions-6118b7725f54">Android Kotlin Coroutines interview questions
#android
У трекеров сна лучший год
Отслеживание сна — большой рынок, который вырос на 28% и в 2023 году получил более 22 млн загрузок.
1. Лидеры - Sleep Cycle, ShutEye, BetterSleep и Pokemon Sleep.
2. ShutEye стал самым скачиваемым приложением из трех в 2023 году, получив 9.8 млн новых загрузок — на 51% больше, чем в 2022 году. BetterSleep занимает второе место с 8 млн загрузок, что на 127% больше, чем в прошлом году. А новичок Pokemon Sleep занял 3-е место с 6.7 млн новых скачиваний. Это впечатляющий результат, учитывая, что он был выпущен только летом. Приложение для сна Sleep Cycle заняло 4-е место с 4.8 млн новых загрузок. В отличие от остальных, количество загрузок Sleep Cycle снизилось по сравнению с 2022 годом — на 16%.
3. Загрузки — это хорошо, но доходы — еще лучше. И тут Pokemon Sleep обошел все три старых приложения, даже несмотря на то, что вышел в середине года.
4. Снорлакс заработал 26 миллионов долларов чистого дохода с момента выхода в июле. И что еще более интересно, скорость не снизилась с момента выхода, так что это не просто момент старта. ShutEye занял второе место с 17 млн долларов чистого дохода, а сразу за ним расположился Sleep Cycle с 16 млн долларов чистого дохода. BetterSleep не слишком отстает — 13 млн долларов. Все три компании выросли по сравнению с 2022 годом, но BetterSleep вырос больше всех — на 53% за год, а Sleep Cycle — меньше всех, всего на 2%.
И что: а) рынок сна - большой, и в установках, и в деньгах; б) можно делать 15 лет свое приложение, но придут покемоны и украдут весь сон ⛔️ ; в) интересно, что спрос на приложения для ментального здоровья значительно упал, так что может стоит совместить сон с медитациями?
Android
• Вопросы с собеседований: Object в Kotlin
• Как устроен Gradle Config Cache. Лучшие Практики. Интервью с инженером команды Gradle
• Android System Design: делаем библиотеку Firebase
• NanoKt: библиотека расширений для Android и Kotlin
• remember «Forever». Как сохранить скролл при уходе с экрана
• Compose walk-through part 2: Managing state
• Live Streaming and Audio Equalizer with ExoPlayer in Jetpack Compose
• How to automate the update process of dependencies?
• Boosting Bazel Adoption on Android With Automation
#android
Как управлять советами для начинающих
Собрал новый еженедельный дайджест. Если вам понравилось, поставьте 👍 и поделитесь с коллегами. Еще у меня есть канал IT Insights, где новости и статьи про код, технологии и все самое интересное, возможно и за пределом мобайла. Вот, например, 40 лет назад Netscape Navigator 1.0 положил начало тому Интернету, который мы знаем сегодня.