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
Видео и подкасты за неделю:
• (iOS Ru)
Custom Segmented Control
• (iOS En)
Building Complex Scroll Animations With New iOS 17 APIs
• (iOS En)
SwiftUI Widgets | App Groups | Charts | Expense Tracker App
• (iOS En)
How To Create A Submission Form In Xcode 15
• (iOS En)
This is the CRAZIEST Swift code you'll ever see
• (iOS En)
SwiftData CloudKit
• (iOS En)
SwiftUI Animated Toasts
• (And Ru)
Как устроен Gradle Config Cache. Лучшие Практики. Интервью с инженером команды Gradle
• (And Ru)
Android System Design: делаем библиотеку Firebase
• (And En)
(W)rap - Android Developers Backstage
• (And En)
Introducing Gemini, Google at NeurIPS 2023, and more dev news!
• (And En)
Performance Optimization with @Stable and @Immutable in Jetpack Compose
• (And En)
Demystifying Pixel Shaders (AGSL)
• (Crs Ru)
Мультиплатформенная разработка на чистой Java
• (Crs En)
A novel architecture for Multiplatform applications with Pavel Lahoda
• (Dev Ru)
Что такое observability мобильного приложения
• (Dev Ru)
Разработка Авто.ру и роль руководителя в команде
• (Dev Ru)
Мобильные релизы в Авито
• (Dev Ru)
Силиконовая Долина глазами российского разработчика
• (Dev Ru)
Релокация на Кипр
• (Dev En)
Do You Have to Learn Clean Architecture as a Beginner?
С вас традиционный 👍 и поделиться подборкой с коллегами!
В AppsFlyer опубликовали 5 трендов 2023 года с их пролонгацией на 2024. Вкратце - затраты на рекламу приложений снизились; неорганические установки iOS выросли на 9% - хороший знак после 15% падения в 2022; доход от покупок в неигровых и игровых приложениях вырос на 19% и 11% соответственно - и это приятно; ремаркетинговые конверсии на Android упали на 9% - Индия и Бразилия подпортили рынок; общее количество загрузок приложений выросло всего на 2% - после 10% роста в 2022 году. В общем ничего необычного, но для укрепления понимания советую почитать.
Разработка
• 13 советов для начинающих разработчиков, которые уже прочитали все остальные советы
• История разработки приложения для складных смартфонов Samsung. Часть 2 — гайдлайны
• Автоматизированное тестирование событий аналитики в мобильном приложении: насколько это реально и оправдано
• How to Scale an App to 10 Million Users on AWS
• We Can’t Hire You
Маркетинг
• Spill, инклюзивная альтернатива X, запускает бету на iOS и Android
• Claim, социальная сеть, позволяющая пользователям зарабатывать и обмениваться вознаграждениями, привлекает $4 млн
• 5 трендов в области маркетинга приложений 2023 — и их проекция на 2024
Кроссплатформа
• Globe (a Flutter & Dart deployment platform) is now in public preview
• How we built it: Ask Dash — A generative AI Flutter application
iOS
• BadgeIcon: системные иконки для SwiftUI
• tahabebek/scalable-and-modular-system-design-for-the-simplest-ios-app-7a1a3873992b">Scalable and Modular System Design for the simplest iOS App
• bhuravaneprathamesh/creating-a-scrolling-parallax-effect-with-swiftui-037029863eb8">Creating a Scrolling Parallax Effect with SwiftUI
• SwiftUI View Models: Lifecycle Quirks
• kodekarim/become-more-senior-ios-developer-with-these-4-xcode-tips-tricks-d470d8e5878d">Become More Senior iOS Developer with these 4 Xcode Tips & Tricks
• ❸☻- Simulation Emojimix on Xcode
#ios
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 положил начало тому Интернету, который мы знаем сегодня.
⚡️25 декабря стартует новый легендарный онлайн-курс Kotlin Backend Developer Professional
Успейте поступить в группу в этом году.
✅Новогодний SALE
✅Обновленная программа курса
✅Преподаватели - ведущие эксперты международных компаний
Обучение на курсе позволит:
• освоить разработку на Kotlin и профессиональную бэкенд-разработку;
• научиться использовать Kotlin для разработки серверных приложений;
• применять асинхронное и многопоточное программирование с корутинами;
• использовать Kotlin совместно с различными фреймворками;
• строить хранилища на базе SQL, NoSQL и NewSQL;
• писать приложения с монолитной, микросервисной и бессерверной архитектурами.
🎄ПРОЙТИ ТЕСТ и получить новогодний бонус: https://otus.pw/xHeY/?erid=LjN8KWwi1
Легендой курса является разработка стартапа – экстремального проекта, в котором сочетаются высокая неопределенность и жесткие ограничения по времени и ресурсам.
При поступлении в группу возможны разные способы оплаты и рассрочка платежаРеклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963
Android
• Подключение сканера к Android или как почувствовать себя кассиром
• Do You Have to Learn Clean Architecture as a Beginner?
• Demystifying Kotlin: Understanding the Inner Workings of Inline Functions
• marco-cattaneo/how-to-handle-single-event-in-jetpack-compose-f90b6220e8c8">How to handle single-event in Jetpack Compose
• Android Launch Modes Explained
#android
Что нового в AOSP 14
После выхода каждой новой версии iOS разработчики делают ее анализ (вот, например, последний). Android исследуют меньше, тем ценнее эти данные. Серджио Прадо и Крис Симмондс недавно рассказали о том, что нового в AOSP 14 в своем видео и опубликовали сводные таблицы.
1. Размер исходников вырос почти в 2 раза - с 87 Гб в AOSP 8 (все дальше сравнивается с ним) до 165 Гб.
2. Таргетов в 3 раза - с 32 до 83.
3. Количество исходников на Rust увеличилось в 8 раз - с 1009 до 8609.
4. Время сборки на стандартной машине увеличилось с 2:30 до 8:50. Объем билда с 87 до 150 Гб.
5. Количество процессов в рантайме 306/288, потоков 1377/13332, системных сервисов 277/303, потребление памяти увеличилось вдвое - с 1.8 до 3.5 Гб.
И что: Android стремительно развивается. Понадобится ли ему замена для слабых телефонов и кто ею станет - вот интересный вопрос.