Разработка
• Жутко, но факт: как Uber тестирует платежи в продакшене
Маркетинг
• Приложение ChatGPT поставило рекорд по выручке
• Кейс Ozon и Bidease: как снизить CAC и CPO более чем на 30%
Кроссплатформа
• xayilmaz/how-to-develop-a-super-app-with-react-native-fe18fbe002c5">How to Develop a Super App with React Native?
• alexey.inkin/deep-dive-into-writing-macros-in-dart-3-5-a1dd50914a7d">Deep dive into writing macros in Dart 3.5
#mobiledev
iOS
• Как автоматически обнаруживать утечки памяти в CI/CD с помощью UI-тестов
• Disk — хранение структур, изображений и данных
• Exploring HealthKit: Working with State of Mind APIs
• bellaposa/ios-app-reverse-engineering-de33ab6ca462">iOS App Reverse Engineering
• Have Fun with Apple’s Virtualization.Framework
#ios
Давно хочу сделать уютный ламповый чат для инди-разработчиков (проектов). Вход только с указанием продукта, может быть по подписке, обсуждаем всякую индюшатину - ниши, аналитику, хаки, код, пейволы и пр. Не для Enterprise, а что можно сделать совсем или почти бесплатно в рамках пет-проектов. Интересно?
Разработка
• Flighty использует машинное обучение, чтобы предсказывать задержки рейсов
• VK проведет конференцию по мобильной разработке — VK JT Mobile
• Препарируем электрохомяка
• The Senior Engineer Illusion: What I Thought vs. What I Learned
• How Uber Tests Payments In Production
Маркетинг
• Маркетологи в мобайле: Денис Лазаричев (руководитель проектов performance-
Кроссплатформа
• PWA вместо приложения: плюсы, минусы, подводные камни
• What’s new in Flutter 3.24
• Getting started with Flutter GPU
• mouhanedakermi383/custom-render-boxes-and-painting-in-flutter-dbabe02094aa">Custom Render Boxes and Painting in Flutter
iOS
• Дизайн-система в SwiftUI
• В чём отличие асинхронности и многопоточности — вопросы с собеседований
• iOS Clean Architecture — чистая архитектура, MVVM и Combine
• Exploring SwiftUI: Creating a BottomSheet
• Nested Grid Layout Anomaly: Analysis Approach and Resolution Strategies for SwiftUI Layout Issues
• How to automatically manage, monitor & rollout new machine learning models across your iOS app user base
• How to automatically detect memory leaks on CI/CD using UI tests
#ios
Не очень понял как так получилось, но лидер июльского топа загрузок в России - CHOOLBOY RUNAWAY. Игра про школьника, которому нужно сбежать от родителей, получила за месяц почти 4.5 миллиона установок и опередила Телеграм и Wildberries, а TikTok и WhatsApp так вообще вместе взятых. Сколько заработала не очень понятно, так как IAP нет, есть только реклама. Но, кажется. неплохо. Так что мораль - никогда не надо недооценивать силу школьников 👨🎓
Разработка
• ОС «Аврора» — веб-сервер в кармане
• Trade My Spin строит бизнес на поддержанных тренажерах Peloton
• FlowMapp/what-type-of-loading-and-progress-indicators-implement-in-the-app-4efc0a1657d8">What Type of Loading and Progress Indicators Implement in the App?
• "20% for tech debt" doesn't work
Маркетинг
• Самые скачиваемые и зарабатывающие приложения в России в июле 2024
Кроссплатформа
• pomis172/understanding-composited-layers-to-improve-the-performance-of-flutter-apps-7b91079b4dd1">Understanding Composited Layers to improve the performance of Flutter apps
• Convert Your Native Project to Kotlin Multiplatform
• How BigPay Increased Flutter Developer Velocity
iOS
• SwiftUI Design System
• Useful packages to improve your SwiftUI development workflow
• islammoussa.eg/implementing-seamless-app-version-management-in-ios-with-cloudkit-bf5715b78283">Implementing Seamless App Version Management in iOS with CloudKit
#ios
Android
• Google Play сможет обновлять сторонние приложения
• Compose Game Engine — 2D игровой движок
• Нужно ли учить Java для Android-разработки в 2024
• «Арендовал телефон — стал фермером»: знакомство с Mobile Farm
• Hassle-free Snackbar in Jetpack Compose
• Making security easy: How we are helping you fix vulnerabilities in your Android apps
• Jetpack Compose Previews: Delving Deep Into Their Inner Workings
• michalankiersztajn/clean-datasources-in-android-aadc5e1aca5f">Clean Data Sources in Android
#android
«У нас закончились столбцы» — лучшая худшая кодовая база
Хотите ужасов? Их есть у меня ☺️ Джимии Миллер написал о лучшей худшей кодовой базе, которую он видел. В ней БД была полным месивом, важные данные редактировались вручную, главные экраны загружались по неск минут. И все же... Она была свободна. От архитектуры, согласований, стилей кода и прочего.
За всю мою последующую карьеру мне никогда не доводилось работать в такой удивительно уродливой кодовой базе. Все уродливые кодовые базы, с которыми я сталкивался потом, так и не преодолели свою потребность в согласованности. Возможно, в данном случае кодовая база была покинута «серьезными» разработчиками задолго до этого. Остались лишь разношерстные стажеры и младшие разработчики. А может быть, дело в том, что между этими разработчиками и пользователями не было никакой прослойки: ни переводов, ни требований, ни карт. Просто вы стоите за столом представителя службы поддержки и спрашиваете, как сделать их жизнь лучше.
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
Почему Metal перестал быть страшным
• (iOS Ru)
Локализация iOS-приложения за 1$ в 2024 году
• (iOS En)
SwiftUI Floating Bottom Sheets
• (iOS En)
How to Refactor SwiftUI into Reusable Views
• (iOS En)
SwiftUI App Intro Animation's - Shape Morphing Effect
• (iOS En)
Xcode File Headers and Macros
• (iOS En)
How to Use TextField Keyboard Focus in SwiftUI with FocusState
• (And Ru)
Нужно ли учить Java для Android-разработки в 2024
• (And En)
Compose Tips for Delightful UI
• (And En)
Compose Migration Side Effects - What Can Go Wrong?
• (And En)
Building Libraries for the Next 25 Years
• (And En)
Turbocharge Your Data: Harnessing Kotlin and gRPC to Handle Real-Time Data From Connected Cars
•(And En)
Grow with the Flow: How Kotlin Flow Became a Game Changer for our Business
• (And En)
Coroutines: Concurrency in Kotlin
• (Crs Ru)
KMP на ОС Аврора: проблемы и пути их решения
• (Crs En)
The Kotlinx DateTime API for Compose Multiplatform
• (Crs En)
How to Implement Drag & Drop in Jetpack Compose
• (Crs En)
Hitchhiker’s Guide to Kotlin Multiplatform Libraries
• (Dev Ru)
Алгоритмическая сессия на собеседовании + Все собеседования
• (Dev Ru)
Автоматическая генерация верстки под Server-driven UI из макетов Figma
• (Dev Ru)
Учимся договариваться о деньгах — Офферы, Зарплаты, Повышение
• (Dev Ru)
Дизайн системы — это слишком модно, возможно они вам не нужны
• (Dev En)
How to get a FAANG Dev Job in your 40s
Что вы посмотрели за неделю?
#ios #android #mobile #video
Android
• ImageCropView — обрезка изображений в Jetpack Compose
• Selenoid без симуляции: настройка, отладка и автоматизация на физическом Android-устройстве
• anandgaur22/android-interview-questions-with-kotlin-coroutines-3870a714924a">Android Interview Questions with Kotlin Coroutines
• Mastering Regex Groups
• Advanced layout animations in Compose (Shared elements)
#android
App Highlights в Google Play генерирует странные обобщения
Google пытается внедрить искусственный интеллект во все, начиная с рабочих пространств, таких как Docs и Sheets, и заканчивая голосовыми помощниками на Android, где Google Assistant освобождает место для Gemini. Аналогичным образом усилия ИИ касаются и Play Store, где якобы превосходный навык обобщения контента должен облегчить процесс установки и принятия решений о покупке благодаря новому разделу App Highlights.
• Новый раздел начал появляться на отдельных страницах приложений недавно вместе с виджетом “Коллекции” от Google. Он должен содержать список особенностей приложения, объясняющий основные моменты и дополняющий предоставленные разработчиком изображения и скриншоты.
• Но что-то пошло не так и ИИ ожидаемо начал галлюцинировать. Так, например, для WhatsApp ИИ выбрал редактирование аудио и аудиоформаты в качестве основных функци. Такое же описание было замечено и в приложении Phone by Google, что позволяет предположить, что это может быть текст-заготовка до следующего обновления. Но это в любом случае выглядит некрасиво.
• Описание приложения Google немногим лучше, но в нем также упоминалась «система навигации на основе жестов, аналогичная iPhone X» в качестве ключевой особенности.
И что: а) внедрять ИИ все таки нужно с осторожностью; б) улучшения Google Play как обычно делают все только хуже.
Android
• Вопросы доступности при использовании кастомного макета стопки карт
• Нужно ли учить Java для Android-разработки в 2024
• Architecture related decisions in Android - Response classes
• galou.minisini/advanced-kotlin-coroutine-cheat-sheet-for-android-engineer-15e0d180fc1f">Advanced Kotlin Coroutine Cheat sheet
• sandeepkella23/assisted-injection-a-new-update-in-hilt-0e142cdd344e">Assisted Injection a New Update in Hilt
#android
Apple выпустила библиотеку гомоморфного шифрования для Swift
Гомоморфное шифрование - это криптографическая техника, которая позволяет производить вычисления на зашифрованных данных, не раскрывая операционному процессу лежащие в их основе незашифрованные данные.
В Apple используют гомоморфное шифрование в своей работе, поэтому они рады поделиться этой Swift-реализацией с сообществом, чтобы другие могли использовать ее и вносить свой вклад.
Одним из примеров использования этой реализации в iOS 18 является новая функция Live Caller ID Lookup, которая предоставляет услуги определения номера абонента и блокировки спама. Live Caller ID Lookup использует гомоморфное шифрование для отправки зашифрованного запроса на сервер, который может предоставить информацию о телефонном номере без того, чтобы сервер знал конкретный номер телефона, указанный в запросе.
Android
• Giphy Trending — популярное с Giphy
• Kotlin Design Patterns & Best Practices - Part 1: Build a Chess Game
• imara.dharma/android-mvvm-architecture-interview-questions-785840b7dac6">Android MVVM Architecture Interview Questions
• Command Your User Inputs with Jetpack Compose— Text Field Features Hidden in Plain Sight
#android
Топ-3 приложения Short Drama стриминга заработали $3 млн в день
Весной я писал про новый тренд в стриминге - «короткометражные драмы» (Short Drama). Тогда остался вопрос - сколько продлится этот бум короткометражек. Пока рост не заканчивается.
• AppFigures показывает, что в прошлую среду три лучших коротких стриминга — DramaBox, ShortMax и ReelShort — заработали чуть больше 3 миллионов долларов. И все это всего за один день.
• Из этих 3 миллионов долларов DramaBox получил 913 тысяч долларов, ShortMax — 640 тысяч долларов, ReelShort — 581 тысячу долларов, а остальное Apple и Google забрали себе в виде налогов.
• Интересно также, что хотя большая часть доходов поступает, как и следовало ожидать, из App Store, значительный кусок денег все же приходится на Google Play. Почти половина для ShortMax.
• Все становится еще интереснее, когда мы смотрим на рост. У ReelShort, который первый побил рекорды в начале этого года, доходы по сравнению с январем выросли на 34%. Можно было бы сказать, что это очень хороший показатель, но DramaBox превзошел его с 235%, и, прежде чем вы слишком поразитесь этой цифре, доход ShortMax в этом году вырос на 642%.
И что: вправо вверх! Трудно понять, чем так привлекательны эти приложения и их контент, впрочем явно я не целевая аудитория. Ясно, что они ловко монетизируют своих пользователей. В отличие от традиционных стримеров, которые берут подписку, они берут плату за за эпизоды, но с помощью валюты в приложении. Как это делают и самые популярные игры. Так что стоит поучиться этому.
Android
• Пишем своё приложение для установки PIN на другие приложения
• Что стоит знать о Jetpack Compose: руководство для начинающих
• michellbak/building-an-effective-abstraction-layer-for-ui-resources-on-android-1806448caf50">Building an effective abstraction layer for UI resources on Android
• sandeepkella23/how-suspend-functions-work-in-kotlin-under-the-hood-in-android-01b1ad641869">How Suspend Functions Work in Kotlin: Under the Hood in Android
• MutableState or MutableStateFlow: A Perspective on what to use in Jetpack Compose
• ps.sujith/decompile-and-recompile-apk-using-apktool-beginners-guide-4ad03c2c5b8f">Decompile and Recompile APK using APKTOOL : Beginners Guide
#android
Жутко, но факт: как Uber тестирует платежи в продакшене
Тестирование в проде давно стало предметом для шуток и мемов. А вот, например, Uber там проводит большую часть тестов системы оплаты - одной из важнейших подсистем для приложения такси. Почему так?
Тестовы среды ограничены и в них невозможно реализовать все условия реального мира. Ошибки, которые в них можно выявить, просты и элементарны, а глубинных проблем вы никогда не поймете. Поэтому быстро прогнали тесты - и в прод.
Uber перерос идею о том, что дефекты могут быть полностью устранены на этапе тестирования.
Вместо того чтобы напрягаться по поводу идеального релиза, Uber внедрил инструменты для раннего обнаружения производственных сбоев и быстрого и простого отката к заведомо безопасному состоянию.
Эти инструменты соответствуют трем ключевым концепциям: Развертывание с учетом бизнес-показателей, тщательный выбор региона первого развертывания и постепенное развертывание.
Android
• Google TV Streamer — преемник Chromecast и центр умного дома
• Google запускает базу знаний о безопасности Android-приложений
• Precise Intent Resolution - Android 15
• Applying the Strategy Pattern in Kotlin
• The best way to load data in ViewModels
#android
Google запускает базу знаний о безопасности Android-приложений
База знаний по безопасности приложений Android (Android Application Security Knowledge Base, AAKB) содержит рекомендации по написанию безопасного программного обеспечения для Android. Она представляет собой хранилище распространенных проблем в коде с примерами их устранения и пояснениями по реализации конкретных моделей.
• База знаний была составлена с учетом того, что разработчикам необходимо знать не только о том, какие уязвимости были обнаружены в их приложениях, но и о том, как устранить проблемы и как избежать подобных неприятностей в будущем.
• Цель AAKB — создать руководство по написанию безопасного программного обеспечения для Android. Информация об уязвимостях и советы соответствуют стандартам OWASP MASVS, которые являются отраслевыми стандартами безопасности для мобильных приложений.
Руководство доступно на домашней странице AAKB или прямо в Android Studio, которая «ссылается на AAKB в результатах проверок линтера».
Android
• Реализация Server-Driven UI в Android
• В Android 15 режим edge-to-edge обязателен, но Google добавил возможность отказаться от него
• WhatsApp Clone Compose — копия WhatsApp на Compose и Stream SDK
• ccansuccanturk/fts4-full-text-search-in-android-273366e488ae">Full-Text Search in Android: Integrating FTS4 with Room
• My notes on Android optimization. Part 1. Measuring startup time
• Android Device Streaming: Announcing Early Access to Samsung, Xiaomi, and Oppo Device Labs
#android
У мобильного рынка новый победитель - MONOPOLY GO! быстрее всех заработала 3 миллиарда долларов. За 473 дня против 594 у предыдущего победителя, Genshin Impact. Интересно, что разработка MONOPOLY GO! заняла целых 7 лет и один из директоров Scopely Уолтер Драйвер подчеркнул, что процесс был долгим и сложным, отметив: «Есть старая поговорка, что большинство мгновенных успехов создаются десятилетиями, и в случае с MONOPOLY GO! это очень верно».
Разработка
• Алгоритмическая сессия на собеседовании
• Автоматическая генерация верстки под Server-driven UI из макетов Figma
• Учимся договариваться о деньгах — Офферы, Зарплаты, Повышение
• Самые высокооплачиваемые вакансии июля в сфере разработки приложений
• How to perform geoqueries on Firestore (somewhat) efficiently
• The way we interact with apps is changing, so should the way they are designed.
Маркетинг
• MONOPOLY GO! быстрее всех заработала $3 млрд
Кроссплатформа
• KMP на ОС Аврора: проблемы и пути их решения
• Полный гайд по тестированию на Flutter. Часть 6: Тестовые двойники: Faking vs Mocking
• Архитектура Flutter проекта простым языком. Clean Arch (MVVM, DI, Bloc, Inversion of Control)
iOS
• Как iOS-команда Medium эффективно работает с legacy кодом
• Переводим текст в SwiftUI-приложении с помощью фреймворка Translation
• Как пиратские приложения обходят проверку App Store
• Почему Metal перестал быть страшным
• Локализация iOS-приложения за 1$ в 2024 году
• SafeDI — безопасная Compile-time инъекция зависимостей в Swift
• Non-Sendable types are cool too you know
• Async await in Swift: The Full Toolkit
• How to add animation to MeshGradient in SwiftUI
• alessandromanilii/olympic-logo-in-swiftui-dee37cbd53f1">Olympic Logo in SwiftUI
• iOS App Launch Optimization: How Cityflo Achieved 2.22x Faster Load Times
#ios
Конвейеры симуляции
В новом дайджесте конвейеры мобильного развертывания за $0 и нестрашный Metal, Selenoid без симуляции и странные описания в Play Store, адаптивная верстка на React Native, упадок мобильной разработки, оптимизация пейвола и многое другое. Подключайтесь!
Исследователи безопасности обнаружили интересную уязвимость в некоторых дейтинг-приложениях. Хотя ни одно из этих приложений не указывает точное местоположение в их профилях, они используют точное местоположение для функции «фильтры». Чтобы определить точное местоположение целевого пользователя, исследователи использовали новую технику, которую они назвали «предсказательной трилатерацией» (oracle trilateration). На первом этапе человек, который хочет определить местоположение своей цели, «приблизительно оценивает местоположение жертвы», например, на основе местоположения, отображаемого в профиле цели. Затем злоумышленник использует фильтры и по земле перемещается с определенным шагом “до тех пор, пока приложение не укажет, что жертва больше не находится поблизости, и так для трех разных направлений. Теперь у злоумышленника есть три позиции с известным точным расстоянием, и он может трилатеризировать жертву”.
Разработка
• Bumble и Hinge позволяли определять местоположение пользователей с точностью до 2 метров
• I recreated Shazam's algorithm with Go
Маркетинг
• Рынок приложений в первом полугодии 2024 года — отчет Apptica
• ИИ генерирует странные описания в Play Store
Кроссплатформа
• Адаптивная верстка на React Native
• App clip with React Native and New Arch (and Swift)
• Shake It Up with CMPShakeDetection: Integrating Fun in Compose Multiplatform
iOS
Автор приложения про “самолетный радар для малышки” написал о том, как он без затрат поднимает CI на основе Fastlane и GitHub Actions. Для больших проектов, наверное, не подойдет, но если у вас есть пет или инди проект - посмотрите. И для понимания процессов и для ускорения релизов.
• Конвейеры мобильного развертывания за $0
• How to programmatically parse the contents of an XCResult bundle
• Translating text in your SwiftUI app with the Translation framework
• How the Medium iOS team works effectively with legacy code
• Building an iOS Networking SDK
#ios
Google предлагает новый полный "путь обучения" по основам машинного обучения (Machine Learning Engineer). Как пишет Google, инженер по машинному обучению проектирует, создает, производит, оптимизирует, эксплуатирует и обслуживает ML-системы. В рамках этого курса вы пройдете через подборку курсов, лабораторных работ и тестов, которые позволят вам получить реальный практический опыт использования технологий Google Cloud, необходимых для работы такого инженера. После прохождения курса вы сможете получить сертификат Google Cloud Machine Learning Engineer. В потоке всего 15 курсов, каждый отдельный требует от 8 до 32 часов. Впрочем, все можно изучать самостоятельно и бесплатно.
Разработка
• Инженер по машинному обучению — новый путь обучения от Google
• I Built a 2D Game in 40 Minutes with Ebiten
• 80% of developers are unhappy. The problem is not AI, nor is coding
Маркетинг
• Как интернет-аптека снизила стоимость установок приложения и увеличила количество заказов на сайте
Кроссплатформа
• Desktop app development with Flutter
• Build an Uber clone with Flutter and Supabase
iOS
• DominantColors — главные цвета на изображении
• Apple выпустила библиотеку гомоморфного шифрования для Swift
• Командуем Алисой и ее Умным Домом с Apple Watch и других устройств Apple
• How to Tile Images in SwiftUI
• Xcode is actually a great IDE
• Navigation Patterns in SwiftUI
#ios
С мест снова докладывают, что нативная мобильная разработка пришла в упадок. Начинается все с алфавитного супа из сладких шаблонов проектирования, добавляется любовью всех программистов к усложнению, приправляется Биг Техом в лице Google и Apple, которые постоянно что-то меняют просто для того, чтобы менять, да еще берут за это 30%. Получается, что для мобильных устройств становится все сложнее разрабатывать приложения и разработчики покидают платформы из-за разочарования и раздражения. Куда покидают? В веб. Говорят, там такого нет, да еще все бесплатно. Так что если вам все надоело в мобайле - бросайте все ехай(те) на... веб.
Разработка
• Упадок мобильной разработки
• Going Indie: From Side Project to Going Independent
• Google's secret to painless code reviews
Маркетинг
• Оптимизация пейвола — история успеха
• Топ-3 приложения Short Drama стриминга зарабатывают $3 млн в день
Кроссплатформа
• Reducing App Size and Memory Usage in Flutter
• How to Combine animations with AnimatedBuilder
iOS
• Вышла бета-версии iOS 18.1 с зачатками Apple Intelligence
• Accessibility Setting Nuggets from iOS 18
• Async and Await in Swift: Advanced Guide for Senior iOS Developers
• Announcing Swift Homomorphic Encryption
• The Meme that gave me Imposter Syndrome
#ios
Перевел статью Uber о том, как они в предверии WWDC 2022 реализовывали Live Activity. Из интересного - прокидывание ресурсов из приложений в уведомления с помощью костылей, "полуописательный" DSL, отдаваемый сразу на iOS и Android, разработка Out Of App Service, отвечающего за балансировку количества обновлений, доставляемых в службу Apple Push Notifications Service, ну и в целом, как устроена разработка в компании размера Uber (планирование на полгода вперед, my ass!).
Разработка
• Личный бренд разработчика
• Роман Елизаров про Kotlin, корутины и работу в Jetbrains
• Ход королевы: как российское шахматное приложение покорило мир
• The Decline Of Mobile Development
• How Passwordless Authentication Works - A Deep Dive
• Perfectionism - one of the biggest productivity killers in the engineering industry
Маркетинг
• В Google Play появились «Коллекции» и «Комиксы»
• Epic удаляет Fortnite из Galaxy Store
• Сеть Chick-fil-A запустила в приложении игру и достигла наибольшего количества ежедневных загрузок в истории
• A Paywall Optimization Success Story
Кроссплатформа
• Fantasy Premier League — фэнтези-футбол на Kotlin Multiplatform
• Особенности сервиса Яндекс Про и будущее Flutter
• Flutter Dev Podcast: навигация во Flutter
• Why Kotlin Multiplatform Teams Should Share Source, not Binaries