Android
• Debugging Google Maps App Issue on Android
• Debugging the recomposition in Jetpack Compose
• Clok: The math behind the clock
#android
Мобильный опыт 2023
Компания Embrace выпустила отчет The State of Mobile Experience 2023. В нем исследуются основные проблемы пользователей мобильных приложений и их разработчиков.
Например, традиционный предмет исследования — по какой причине пользователи готовы удалить приложение.
1. На первом месте сбои - 32% (точно удалю) + 28% (скорее всего удалю).
2. На втором неотзывчивые кнопки (22% + 29%).
3. На третьем фризы (28% + 23%).
4. Далее невозможность заполнить формы, медленный запуск приложения, долгая загрузка видео и изображений.
5. При этом фризы хотя бы раз в день встречает 44% пользователей, а креши 45%. Как они живут с такими приложениями - большой вопрос.
И что: в мире мгновенного удовлетворения потребностей и постоянно совершенствующихся технологий пользователи приучены ожидать от своих устройств все более быстрого ответа и безошибочной работы. Так что тестированию и отслеживанию быстродействия/сбоев надо уделять особое внимание.
Android
• Stable Diffusion AI: свой генератор изображений для Android
• Оптимизация анимации на Compose: крутим лоадеры, ищем неочевидные функции
• williamrai13/how-i-became-an-android-developer-4b4dfa230fcf">How I became an Android Developer
• Android 13 Runtime Notification Permission: XML & Jetpack Compose Guide
• Debugging Alarms with ADB
• margin555/using-string-resources-in-a-viewmodel-e334611b73da">Using String Resources in a ViewModel
#android
В Xcode наконец-то можно попробовать TipKit - новый фреймворк для показа всплывающих подсказок. Работает пока не до конца, но судя по описанию выглядит довольно функционально и полезно. А еще Kotlin Multiplatform Mobile (KMM) всех задолбал и превращается просто в Kotlin Multiplatform (KMP) - чтобы не путать всех с мобильными платформами (ибо сейчас он поддерживает еще веб и десктопы).
Разработка
• Kotlin Multiplatform Mobile (KMM) превращается в Kotlin Multiplatform (KMP)
• Об одном подходе к исследованию вероятностных характеристик на примере реального продукта
• Explaining Vector Databases in 3 Levels of Difficulty
• 5 UX Secrets Behind the Success of Threads App by Meta
Маркетинг
• Самые скачиваемые и зарабатывающие приложения в России в июле 2023
• Bloom учит Поколение Z инвестициям
Кроссплатформа
• Intercepting Ktor Network Responses in Kotlin Multiplatform
• A Deep Look Into Flutter Databases
• How we reduced bundle size by 15% with patching package
iOS
• Добавляем обучающие моменты в приложения с помощью TipKit
• iTorrent: торрент-клиент для iOS
• jacobmartinbartlett/unit-testing-with-async-await-123c6c4a6fbd">Unit Testing with async/await
• iOS Interview Guide: Custom higher-order functions in Swift
• Modularised Navigation in SwiftUI — An Enum-based Approach
• The Large Title UINavigationBar Glitches and How to Fix Them
• Localization testing in Xcode
• SwiftUI Tutorial: Navigation
#ios
Сейчас в App Store и Google Play представлено 746 тыс. мобильных игр. 70% мобильных игр находятся в Google Play, а остальные 30% — в App Store. В AppFigures провели исследование - в каких странах больше всего выпускают (издают) мобильные игры (как это сделать по описанию в магазине не совсем понятно, но пусть). США лидируют с огромным отрывом - там сделано 32.6% всех игр. На втором месте Китай с “всего” 5.1%. Россия с 3% на 5 месте, между Германией и Индией. Самая хорошая цифра в другом - в июне в двух магазинах было опубликовано 17 тысяч новых игр, что является самым высоким показателем по количеству новых релизов за месяц в этом году. А вы сколько новых игр скачали в прошлом месяце? 🙂
Разработка
• Какие страны выпускают больше всего мобильных игр?
• Исследование State of Databases 2023
• Что такое магистральная разработка
• Алгоритмическое собеседование в Яндекс в прямом эфире
• Постоянные отказы на собеседованиях: что мне делать
• На шаг ближе к метавселенной, или Как мы оживили аватары пользователей в VK Звонках
• Как сделать аналог Firebase App Distribution
• Ozon Tech Intro Meetup: как работают системы поиска, рекомендаций и рекламы
• Iosevka: шрифт для кода
• Эвристики Нильсена на примере реальных приложений
• Что порой кроется за «успехом»
• A WWDC Design Lab Made My App So Much Better
• Before you try to do something, make sure you can do nothing
Маркетинг
• DSP: различия и преимущества lookalike и предиктивных моделей. Часть #2
• Pokemon Sleep набрал 2 млн установок
• Rewind выпустил приложение для iPhone, которое поможет вам запомнить всё
• $18.2 млн в Серии B: Airvet — телемедицина для домашних животных
Кроссплатформа
• Кодогенерация для Flutter: что, как и зачем
• Будущее iOS-разработки на Flutter
• jacobras/popular-apps-using-kotlin-multiplatform-kmp-in-2023-and-what-you-can-learn-from-them-1f94d86489b7">Popular apps using Kotlin Multiplatform (KMP) in 2023 — and what you can learn from them
• Scale McDonald's with KMM
iOS
• Distributed actors и где они обитают
• Apple определила API, использование которых надо будет объяснять
• Thread Safety в Swift
• Adding teachable moments to your apps with TipKit
• Swift Macros
• Composable Architecture 1.0
• Animating Carrousel Transitions in SwiftUI
• DocC Tutorial for Swift: Automating Publishing With GitHub Actions
• Observation Framework in iOS 17
• Crafting a Swift Package Plugin for App Data Protection
#ios
Видео и подкасты за неделю
• (iOS Ru)
Distributed actors и где они обитают
• (iOS En)
TipKit - iOS 17 - SwiftUI
• (iOS En)
OSLog and Logger
• (iOS En)
Radial Layout With Gestures - SwiftUI
• (iOS En)
Inout Parameters and Mutating Functions
• (iOS En)
How to master Combine like a Pro – The Basics
• (iOS En)
SwiftUI NavigationStack Hero Animation Effect - Custom Matched Geometry Effect
• (And Ru)
Секретная фича в Android Studio: логируем, пока дебажим, не меняя сам код
• (And En)
Now in Android: 87 - Android 14 Beta 4, Google Play policy update, and Compose Performance
• (And En)
What's new in Android Studio - Giraffe
• (And En)
Text Fields - UX With Material3
• (And En)
Buttons - UX With Material3
• (Crs Ru)
Кодогенерация для Flutter: что, как и зачем
• (Crs En)
Build an iOS & Android app in 100% Kotlin with Compose Multiplatform
• (Dev Ru)
Ozon Tech Intro Meetup: как работают системы поиска, рекомендаций и рекламы
• (Dev Ru)
На шаг ближе к метавселенной, или Как мы оживили аватары пользователей в VK Звонках
• (Dev Ru)
Как сделать аналог Firebase App Distribution
• (Dev Ru)
Алгоритмическое собеседование в Яндекс в прямом эфире
• (Dev Ru)
Постоянные отказы на собеседованиях: что мне делать
• (Dev En)
The ultimate guide to A/B testing
Посмотрели какое-то другое интересное видео? Отправьте боту🧑🏻💻
Вышло второе наше интервью с Андреем Белоусом - на этот раз про поиск работы в Европе. Главных совета 3 - итеративно улучшаться в разработке, прокачивать софт-скилы и язык. Вес остальное более менее в рамках разумного. Андрей еще готов отвечать на вопросы - о чем вам было бы интересно поговорить? Скидывайте темы или прямо вопросы в комментарии.
Разработка
• Работа в Европе для мобильных разработчиков
• Новая AR-платформа Mirrorscape улучшает Dungeons & Dragons
• Stability AI выпускает Stable Diffusion XL 1.0
• Проектируем функционал сторис
• Building Startups as a Developer: Learning from My Mistakes
• Automating Web Scraping with ChatGPT Code Interpreter
Маркетинг
• Маркетинг подписных приложений 2023 — отчет AppsFlyer и Liftoff
• Google Play начнет пессимизировать приложения, не поддерживающие планшеты
Кроссплатформа
• Под капотом анимаций в React Native. Часть 1/2: Animated and Bridge
• Integrate Apple Sign-In on Android using Flutter
• namtarr/kmm-in-a-simple-language-learning-app-was-it-worth-it-d685463174c7">KMM in a simple language learning app: was it worth it?
• migalv/improve-your-flutter-app-performance-with-this-small-trick-110681a4d480">Improve your Flutter app performance with this small trick
iOS
• Библиотека криптования ChaCha20
• Разбираю Swift Runtime на детали
• Superwall: Remote Paywall Configuration on iOS
• iOS Development with Factory: The Power of Dependency Injection
• onlyapps/how-to-create-and-publish-your-own-swift-package-manager-spm-library-6704063bcc8c">How to Create and Publish Your Own Swift Package Manager (SPM) Library
• paereson/how-to-deal-with-custom-fonts-in-swift-and-swiftui-f7886a824ac8">How to deal with custom fonts in Swift and SwiftUI
• ahmetenesirmak/swift-access-control-a649560d9532">Access Control in Swift
#ios
Android
• Вышла стабильная версия Android Studio Giraffe
• A Step-by-Step Guide to Building a Timeline Component with Jetpack Compose
• Jetpack Compose — The order of modifiers does matter
• Nibel: A Navigation Library for Adopting Jetpack Compose in Fragment-Based Apps
• sumitkmr/coroutines-masterclass-chapter-1-foundation-of-coroutines-8ef5bd677016">Coroutines Masterclass: Chapter-1: Foundation of Coroutines
• Exploring Differences Between lateinit and lazy in Kotlin
#android
🔥 Приглашаем 1 августа в 20:00 мск, на открытый вебинар "Как Swift может помочь с заглушками сервисов или как не зная других языков стать фулстек iOS разработчиком с использованием фреймворка Vapor" в Отус.
❗️Вебинар является бесплатной частью онлайн-курса "iOS Developer. Professional".
🟠 На вебинаре мы расскажем, как можно использовать фреймворк Vapor 4 для создания бэкенд-сервисов и как это может помочь iOS-разработчикам, которые не знают других языков программирования. Обсудим создание своего API, организацию БД и другие задачи, которые можно решить с помощью Vapor. Также мы рассмотрим элементы реактивного программирования SwiftNIO 2, разработанные Apple, и их роль в экосистеме Vapor.
📚 Этот вебинар будет полезен всем iOS-разработчикам, которые хотят научиться писать сервисы и использовать Vapor, даже если они владеют только Swift.
👉 Запись на вебинар: https://otus.pw/gMLQ/
Нативная интеграция. Информация о продукте www.otus.ru
Android
• Фризы и ANR? Проверьте утечки памяти!
• Molecule: создание потоков StateFlow в помощью Jetpack Compose
• mmbialas/the-hottest-jetpack-compose-projects-and-libraries-on-github-in-2023-83c0e6c54d4f">Jetpack Compose: Unveiling the Hottest Projects and Libraries on GitHub in 2023
• mahmoud.afarideh/rich-ui-models-in-android-using-mvvm-and-jetpack-compose-929c1e0308fd">Rich UI Models in Android using MVVM and Jetpack Compose
• Android Security: Securing your Gradle builds from baddies
#android
Kotlin Multiplatform Mobile - самая модная тема мобильной разработки этого года. 26 июля состоится X5 Kotlin Multiplatform Meetup, где спикеры обсудят:
- Как используется KMM в B2B на примере приложения «Пятёрочка»
- В чем выгода от использования KMM
- Что можно сделать общими между платформами
- Тонкости внедрения
- Плюсы и минусы технологии
➡️ Спикеры из Х5 Tech и MTC. После выступлений - круглый стол, к которому присоединится разработчик из VK.
🔔 Начало в 19:00
Офлайн и онлайн
Зарегистрироваться
В iOS-разделе вышла статья о [безответной] любви к Objective-C. Как во всякого такого рода послания понять, что хочет сказать автор, не очень просто, но все же, кажется, он говорит о том, что язык уже вошел в “зал мировой славы” и ничто оттуда его уже не уберет. А вы любите язык, на котором разрабатываете?
Разработка
• 43% программистам снится работа
• Спрос на разработчиков игр в России упал почти на 40%
• Архитектура сложных клиентских приложений
• Podlodka #327: Event-Driven архитектура
• Qodana вышла из предварительной версии
• GitHub запустил Copilot Chat
• NativePHP: десктопные приложения на PHP
• Cocos Creator: Это самый мощный игровой движок, о котором вы не знали
• Game On: UI Design Meets Gamification
• Chat with your databases using LangChain
Маркетинг
• Reddit после закрытия API: загрузки выросли, но доходы упали
• DSP: инструкция по применению. Использование неатрибуцированных данных для улучшения предиктивных алгоритмов. Часть #1
• Как работает мозг пользователя и формируется привязанность
Кроссплатформа
• Прокрутка во Flutter: меняем законы физики
• Beginner’s guide on Flutter for iOS developers
• Server-Driven UI Implementation from Scratch in Flutter
iOS
• Создаем дефолтные аватары пользователей в SwiftUI
• visionOS 30 Days: уроки разработки для visionOS
• How to use type erasure in Swift with a real example
• Advanced async testing: Unstructured concurrency
• Animate background with color gradient in SwiftUI
• Understanding iOS Memory Management With Toy Analogies
#ios
На iOS вышла The Composable Architecture 1.0 от Point Free. Она призвана решить основные архитектурные проблемы и сделать код тестируемым, простым, композитным. Правда, в примере показывают, как делать простой кликер. На это нужно раз в 10 больше кода, чем на “ванильном SwiftUI”. Так что кто его знает, на больших проектах может и пригодится, а так… 👨💻
Разработка
• Snapchat запустил новую программу вознаграждения создателей AR-линз
• Как маленькая нейроязыковая модель в Клавиатуре победила серверные подсказки
• Модерируемое юзабилити-тестирование: от идеи до задачи в таск-трекере
• How DoorDash Migrated from StatsD to Prometheus
• omarmahin0/oride-ux-case-study-bbcfe4d03ef4">ORIDE — UX Case Study
Маркетинг
• Какая конверсия в платящего пользователя хорошая?
• Amazon Clinic заработал во всех штатах
Кроссплатформа
• Мобильная мультиплатформенная разработка в McDonald’s
• How To Use Lints In Flutter
• Storing data from the Flutter app → Google Sheets
• muralitharan0002/enhance-your-react-native-application-performance-27bfe3578ac4">Enhance your React Native Application Performance
iOS
• The Composable Architecture достигла версии 1.0: что это такое
• Elevate User Experience: Create Default Avatars in SwiftUI
• Streamlining Similar View Controllers: A Swift Tutorial to Embrace the Refactor Mindset
• Mastering StoreKit 2
• How to automate taking screenshots with fastlane for iOS
#ios
Android
• Лучший спутник в вашем творческом процессе: Android Studio Bot VS ChatGPT для разработчиков
• How to create a chatbot with Firebase Firestore and PaLM on Android
• Try the K2 compiler in your Android projects
• Android Worldwide July 2023
• Gradle Cache: Your build’s best friend
• Firebase Dynamic Links Depricated! Migrate to Android App Links
• Passing events from Composable functions to MVI ViewModels
#android
Самые скачиваемые и зарабатывающие приложения в России в июле 2023
Установки
Неудивительно, что при всем ажиотаже Threads от Instagram* занял в установках первое место. По оценке AppMagic, новая социальная сеть получил в России более 3 миллионов установок.
1. Threads, an Instagram app
2. Telegram
3. Wildberries
4. Yandex with Alice
5. drivee
6. TikTok
7. OZON: товары, продукты, билеты
8. Free VPN Proxy by Planet VPN
9. WhatsApp Messenger
10. Авито: квартиры, авто, работа
Заработок
Лидер ВКонтакте заработал за месяц более $1 миллиона. Телеграм на третьем месте около $850,000.
1. VK: social network, messenger
2. Royal Match
3. Telegram
4. PUBG MOBILE
5. Roblox
6. Gardenscapes
7. FaceApp: Perfect Face Editor
8. Homescapes
9. Litres: Books and audiobooks
10. Tanks Blitz PVP битвы
Интересный запуск
В Google Play вышло приложение "Яндекс Смена: поиск подработки", новое приложение для поиска дополнительного заработка, местный аналог When I Work. За три недели приложение набрало в России уже около 15,000 установок и постоянно растет. Мог ли кто-нибудь кроме Яндекса такое запустить? Это интересный вопрос.
Поставьте 👍, если интересен такой формат.
Android
• Compose Adaptive Scaffold: простая поддержка больших экранов
• Секретная фича в Android Studio: логируем, пока дебажим, не меняя сам код
• Прикладное adb (Android Debug Bridge) для зумеров
• Designing a Functional Library
• Jetpack Compose for Maps
• Deep dive into Live Edit for Jetpack Compose UI
• Modelling the domain layer using composable use cases
• Lazy Grids for Android TV using Jetpack Compose
• Fluent and Fun Clean Architecture using Kotlin
#android
Разбираем фризы неизменной ценности
Новый еженедельный дайджест - 111 материалов! Прочитайте, поставьте 👍 и обязательно поделитесь с коллегами. Еще у меня есть канал IT Insights, где новости и статьи про код, технологии и все самое интересное за пределом мобайла. Вот, например, там была интересная ссылка "Исчерпывающее руководство по локальному запуску Llama 2" - как запустить модель Llama 2 на M1/M2 Mac, Windows, Linux или даже на телефоне.
💻 Прислать материал для дайджеста можно сюда
Apple определила API, использование которых надо будет объяснять
На WWDC компания объявила, что разработчики должны будут указывать причины использования отдельных API в декларации конфиденциальности своего приложения.
1. Сделали это, конечно, во имя конфиденциальности и безопасности, чтобы по ним не отслеживали отдельных пользователей.
2. Среди API - File timestamp API, определяющие даты создания файлов, System boot time API, раскрывающие информацию о времени работы ОС, Disk space API, дающие информацию о доступном пространстве в хранилище.
3. User defaults API, самая простая "официальная" система для хранения настроек и прочей информации, тоже попал под раздачу. Впрочем, вероятно, UserDefaults надо будет запрашивать при доступе к данным только сторонних приложений?
4. Все это касается и сторонних SDK, за них тоже надо будет отчитываться.
5. Начиная с осени 2023 г. при загрузке в App Store Connect нового приложения или обновления приложения, использующего API, для которого требуется указание причины, вы будете получать уведомление, если в декларации конфиденциальности вашего приложения не указана утвержденная причина. А начиная с весны 2024 г. это станет обязательным.
И что: всё во имя человека, для блага человека. И мы даже знаем имя этого человека 🍏
Android
• Настраиваем интерфейс Android-приложения с помощью тем
• SQLDelight: типобезопасные Kotlin API из SQL
• Переиспользование модулей в многомодульных Android приложениях
• Error Handling in Clean Architecture using Flow and Jetpack Compose
• Kotlin Enum Class
• Simplify Dependency Management for Android Projects with Gradle Version Catalog and Dependabot
• rahmicemreunal/navigating-the-complexities-building-a-scalable-multi-module-navigation-architecture-in-android-bbf4ddc18911">Navigating the Complexities: Building a Scalable Multi-Module Navigation Architecture in Android
#android
Вы давно просили - и вот свершилось. Канал с английскими материалами - Mobile Economy. Как там будет все развиваться пока не совсем понятно, но вы все равно подписывайтесь 🙂 А еще есть apptractor">блог на Medium с теми же самыми английскими дайджестами.
Разработка
• Умные колонки Assistant не перейдут на Fuchsia
• Значение совещаний и некоторые альтернативы
• Platform engineering is just DevOps with a product mindset
• A comprehensive guide to running Llama 2 locally
Кроссплатформа
• The Top 5 Flutter State Management Solutions: A Deep Dive
• FlutterCon 23 Resources
iOS
• Design Patterns In Swift: паттерны проектирования на Swift
• Эксперты App Store: онлайн-сессии в августе
• chloehoulihan/chloes-opinionated-and-biased-law-of-swiftui-905e07563a8d">Chloe’s Opinionated and Biased Law of SwiftUI
• mobile_44538/integrating-the-swift-estimoteuwb-sdk-into-your-swiftui-project-a8e6fe709410">Integrating the Swift EstimoteUWB SDK into your SwiftUI project
• mihailsalari_76470/embracing-the-future-with-swift-concurrency-a-comprehensive-overview-d43b566e08b8">Embracing the Future with Swift Concurrency: A Comprehensive Overview
• Why you should use OSLog in 2023
#ios
Apple начал прием заявок на выдачу разработчикам гарнитуры Vision Pro. Планируется, что с ней будет вся сопутствующая помощь от экспертов компании по разработке для visionOS, а для всех - открытые уроки в разных городах. Занятно, что саму гарнитуру надо будет держать под строгой охраной, без доступа к ней родственников, друзей и прочих, под замком и никогда не оставлять без присмотра.
Разработка
• Apple принимает заявки на Vision Pro Developer Kit
• assafelovic/the-ultimate-tech-stack-for-building-ai-products-497cfa9139cb">The Ultimate Tech Stack for Building AI Products
• On Becoming a VP of Engineering, Part 1: The Path to VP + Part 2: Doing the Job
Маркетинг
• У Flipper Zero появился магазин приложений
Кроссплатформа
• Full Guide on Building your first Kotlin Multiplatform Project with Kobweb
• Unifying Video Players: Compose Multiplatform for iOS, Android & Desktop
iOS
• Как в Swift Package Manager сэкономить гигабайты трафика и места на диске
• OptionSet в деталях
• ganeshrajugalla/swift-property-wrappers-to-the-rescue-5ec1010d42d1">[Swift] Property wrappers to the rescue!
• Adopting Efficient Networking Practices in iOS Apps
• Refactoring our Swift SDK
#ios
У Flipper Zero появился магазин приложений
Flipper Zero — "хакероское" портативное многофункциональное устройство, оснащенное беспроводными радиомодулями.
1. В официальном приложении теперь есть "магазин" приложений. Он устанавливает приложения непосредственно на Flipper по Bluetooth.
2. Все приложения проверяются командой Flipper, что позволяет быть уверенным в том, что они не сломают устройство.
3. Главный операционный директор Flipper Devices Алекс Кулагин сказал: «Команда надеется, что запуск магазина предоставит разработчикам массовый канал распространения их приложений и экспериментов».
4. К моменту запуска в магазине уже около 100 приложений. Среди них есть множество небольших утилит, таких как игра в кости, калькулятор резисторов, пульт управления камерой по Bluetooth, пара приложений Pomodoro, шестнадцатеричный редактор, приложения, позволяющие взаимодействовать с внешними устройствами.
5. О монетизации, конечно, пока речи не идет.
И что: всем нужны магазины приложений - это прекрасный (и дешевый) способ расширить свою экосистему за счет энтузиастов. А вы в вашем продукте можете сделать "магазин приложений"?
Android
• 5 советов Kotlin-разработчикам для повышения чистоты кодовой базы
• Упрощаем и укрощаем UI для Android с помощью аннотаций
• Learn Kotlin Flow: изучаем Kotlin Flow на реальных примерах
• saulmm2/android-gradle-precompiled-scripts-tomls-kotlin-dsl-df3c27ea017c">Using Version Catalogs from Gradle Precompiled Scripts with Kotlin DSL
• How to Inject Navigation Argument Directly into View Model with Jetpack Compose and Hilt
• Android Adaptive Icons
• Screen Transition Animations with Jetpack Navigation
• Freezes & ANRs? Check memory leaks!
• bhavnathacker14/migrate-your-multi-module-app-to-agp-and-gradle-8-0-with-android-studio-flamingo-d558e4621aaf">Migrate your Multi-Module App to AGP and Gradle 8.0 with Android Studio Flamingo
• Threads Invitation Card with Jetpack Compose
#android