☕️ CocoaPods прекращает развитие и переходит в режим поддержки
CocoaPods уже около 13 лет, и за это время платформа настолько упростила процесс работы с библиотеками, что де-факто превратилась в способ обмена кодом в сообществе iOS и Mac.
В 2015 году Apple объявила о том, что проект CocoaPods будет заменен собственным решением, поскольку они собираются создать свой собственный менеджер пакетов - Swift Package Manager. Этот шаг фактически уничтожил весь энтузиазм разработчиков CocoaPods, замедлив активное развитие проекта, поскольку конкуренция с Apple на их собственной территории редко стоит часов, потраченных на волонтерскую работу.
Cейчас CocoaPods переходит в то состояние, когда работа будет обусловлена только внешними причинами. Это могут быть проблемы безопасности или изменения в Xcode, которые требуют изменить некоторые настройки и сделать новую сборку. Никаких новый фич не будет.
Долгосрочный план - через несколько лет сделать проект Read-only. В целом же разработчикам рекомендуют переходить на Swift Package Manager.
Android
• Cat Activity — трансляция активности в IDE в Discord
• galou.minisini/advanced-kotlin-flow-cheat-sheet-for-android-engineer-cb8157d4f848">Advanced Kotlin Flow Cheat sheet (for Android Engineer)
• Made by Google 2024
#android
Если вы думаете, что в дейтинге ничего нового не изобрести, то вы сильно ошибаетесь. Представляю Thursday - дейтинг, который работает только по четвергам. Более того - в полночь все совпадения исчезают. Идея заключается в том, что ограничение доступа только одним днем в неделю побудит потенциальных пользователей быстрее назначить встречу в реальной жизни - как раз (наверное) на пятницу. Мораль - каким бы абсурдным ограниче лично вам не казалось, кто-то может придумать как извлечь из него выгоду.
Разработка
• Apple готовит новый Mac Mini на M4
• Тулкиты кодогенерации Android vs iOS
• Ускоряем карьерный рост в FAANG
• Алгоритмы — самый провальный этап собеседований
• Алгоритм Дейкстры — вопросы с собеседований
• Cursor, конкурент GitHub Copilot, привлек Cерию A на $60 млн при оценке в $400 млн
• Архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем
• Variability, Not Repetition, is the Key to Mastery
• Following Industry Trends Can Be a Career Trap
• How I Created 175 Fonts Using Rust
Маркетинг
• Дейтинг-приложение Thursday работает только по четвергам
Кроссплатформа
• Полный гайд по тестированию на Flutter. Часть 7: Ошибки, которые усложняют написание тестов
• Piloting Kotlin Multiplatform is Easy. Scaling is Hard.
#mobile #dev
iOS
• Apple объявила о новой структуре сборов для приложений в ЕС
• Swift Semantic Search — семантический поиск в реальном времени на устройстве
• Итоги одного года мобильной разработки с использованием NLP
• Combine с нуля — реактивщина это просто
• Swift Navigation: Powerful navigation tools for all Swift platforms
• Embedded Swift Tutorial - Getting Started (Everything you need to know)
• Key Lessons When Moving Towards a Modular Codebase
#ios
🔥 Начните изучение SwiftUI с Otus. Присоединяйтесь к открытому уроку и узнайте, как создать видеоплеер на SwiftUI и работать с AVPlayer.
👉 На открытом вебинаре «Пишем приложение-видеоплеер на SwiftUI» 13 августа в 20:00 мск мы разберём всё, что нужно знать, чтобы создать простое и функциональное приложение на SwiftUI.
🔆 Вы узнаете:
- как создать простое приложение на SwiftUI;
- как воспроизвести аудио и видео в iOS-приложении;
- как использовать UIView в SwiftUI и взаимодействовать с ним.
👉 Вы научитесь работать с AVPlayer, делать простую верстку с SwiftUI и встраивать UIView в SwiftUI.
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cz0VLb
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Apple объявила о новой структуре сборов для приложений в ЕС
После июньского решения Евросоюза, согласно которому политики Apple и App Store официально нарушают Закон о цифровых рынках, компания Apple объявила о внесении очередных изменений. В частности, эти изменения касаются правил, связанных с размещением разработчиками приложений внешних ссылок для информирования пользователей об альтернативных способах оплаты.
• Ранее Apple применяла строгие правила, определяющие, как приложениям разрешается размещать ссылки. Требовалось, чтобы ссылка была статической и вела непосредственно на собственный сайт, без каких-либо параметров для идентификации вошедшего пользователя в URL. Это ограничивало возможности приложений напрямую направлять пользователей на веб-страницу, где они могли заплатить за функции в своем аккаунте.
• Согласно сегодняшним изменениям, все эти ограничения теперь отменены. Приложения могут предлагать действующие ссылки с любым количеством динамических URL. Эти ссылки могут вести пользователя куда угодно, в том числе для продвижения других каналов продаж, например альтернативных магазинов приложений. URL-адреса могут содержать параметры, если эти параметры не используются для рекламы или профилирования пользователей.
• Apple также обновила страницу раскрытия информации для пользователей, добавив более дружелюбный дизайн и включив в интерфейс переключатель, позволяющий пользователям в будущем отказаться от просмотра страницы раскрытия информации при переходе по внешним ссылкам на покупки.Core Technology Fee
• Взамен Apple вводит двухуровневую систему сборов для приложений, которые ссылаются на веб-страницы для оплаты. Кроме Core Technology Fee. это теперь плата за первоначальное приобретение (Initial Acquisition Fee) и плата за услуги магазина (Store Services Fee).
• Изменения запутаны — настолько, что даже Spotify пока не совсем понимает, что с ними делать,. Однако компания все же осудила изменения, основываясь на своем нынешнем понимании того, как будет работать новая политика:
На первый взгляд, требуя до 25% за базовое общение с пользователями, Apple в очередной раз грубо игнорирует фундаментальные требования Закона о цифровых рынках (DMA). Европейская комиссия ясно дала понять, что взимание периодической платы за такие базовые элементы, как ценообразование и ссылки, неприемлемо. Мы призываем Комиссию ускорить расследование, ввести ежедневные штрафы и обеспечить соблюдение DMA.
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
Google только что провел презентацию своих новых устройств Made by Google 2024. Выше даю ссылку на обзор TechCrunch, но в целом ничего революционно нового не появилось. Как и в случае с Apple, Google сделал акцент на внедрение ИИ - Gemini будет работать на Pixel локально и делать все уже более или менее виденное (самари звонков, обработку фотографий, поиск товаров по изображениям и т.п.). Может быть завтра подъедет еще информация, но пока как то "скучно, девочки" (С).
Разработка
• How we deleted 4195 code files in 9 hours
• Enterprise Mobile Apps Development Principles
Маркетинг
• Patreon будет платить 30% комиссию Apple
Кроссплатформа
• Внедрять Kotlin Multiplatform легко. Масштабировать сложно.
• Что думают про Flutter техлиды: инсайты из опроса
• Rust GUI library via Flutter, done simple
• punnyarthabanerjee/foreground-services-in-flutter-run-tasks-when-your-app-is-minimized-dbc24f2c099d">Foreground Services in Flutter: Run tasks when your App is minimized
iOS
• Реверс-инжиниринг iOS-приложения
• Как вернуть контроль над состоянием данных с RemoteResult
• Tracking geometry changes in SwiftUI
• Cancellable withObservationTracking in Swift
#ios
Android
• Используем библиотеку Android Security Lints для Android
• Zoomable — увеличение жестами в Jetpack Compose
• Когда ваше приложение умирает – жизненный цикл activity в Android для QA
• Android Release Automation - Our Journey to Fully Automated Weekly Releases
• Composing Suspend Functions
• Using Clean Architecture on Android, is it an overkill?
#android
Как автоматически обнаруживать подводные камни
Подборка всех материалов за неделю - автоматическое обнаружение утечек памяти в CI/CD с помощью UI-тестов, эффективная работа с legacy кодом Medium и новая версия Flutter, знакомство с Mobile Farm, тестирование платежей в проде, дейтинг-приложение, работающее только по четвергам и многое другое. Подключайтесь!
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
Итоги одного года мобильной разработки с использованием NLP
• (iOS Ru)
Combine с нуля — реактивщина это просто
• (iOS En)
Building Compositional Grid Layout With iOS 18 APIs
• (iOS En)
The Best iOS Dev Portfolio Strategy
• (iOS En)
How to Reduce Log Verbosity in the Xcode Debug Console
• (iOS En)
Getting the MOST out of Xcode 16
• (iOS En)
Building App Intro Animations with Shape Morphing Effect Using SwiftUI
• (And En)
Targeting Android 15 - Why Your App Is NOT Ready
• (And En)
Channels in Kotlin Coroutines
• (And En)
Guide to Improving Compose Performance
• (And En)
Background Work in Android: Strategies and Best Practices
• (And En)
Applying the Strategy Pattern in Kotlin
• (Crs En)
Lifecycle path to Multiplatform
• (Crs En)
Kotlin Multiplatform in Google Workspace
• (Crs En)
KMP in Action A Production Case Study
• (Dev Ru)
Тулкиты кодогенерации Android vs iOS
• (Dev Ru)
Ускоряем карьерный рост в FAANG
• (Dev Ru)
Алгоритмы — самый провальный этап собеседований (+ все собеседования)
• (Dev En)
Operating Systems Course for Beginners
Что вы посмотрели за неделю?
#ios #android #mobile #video
Разработка
• Жутко, но факт: как 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