iOS
• Типизированные ошибки (typed throws) в Swift с примерами
• Уязвимости в CocoaPods позволяли манипулировать библиотеками
• Макросы — напишут код за вас, но есть нюанс…
• Mastering the Swift Testing Framework
• Mastering ScrollView in SwiftUI. Scroll Phases
• Advanced Async Sequences in Swift
• Swift 6: Incrementally migrate your Xcode projects and packages
#ios
Figma отключит ИИ-функцию, которая копирует дизайн других приложений
Не, ну а как его еще тренировать? 🤖
• На прошлой неделе Figma представила ИИ-функцию Make Design, которая позволяет генерировать макеты и компоненты пользовательского интерфейса на основе текстовых подсказок. «Просто опишите, что вам нужно, и функция предоставит вам первый набросок», — так компания анонсировала запуск функции.
• Компания объяснила, что она не обучалась на контенте Figma, файлах сообщества или дизайне существующих приложений.
• Однако, при просьбе сделать дизайн погодного приложения, Make Design постоянно воспроизводит приложение Погода от Apple.
• По словам гендира Figma проблема заключается в слишком низкой вариативности, а вовсе не в использовании чужих приложений.
И что: сейчас Figma временно отключила функцию Make Design. До тех пор, пока команда не будет уверена, что может быть «ответственной за результаты». То есть, похоже, навсегда.
Android
• Маппинг данных в Kotlin
• sujathamudadla1213/when-should-you-use-stateflow-over-livedata-in-android-development-11e0030bf6c8">When should you use StateFlow over LiveData in Android development?
• simonmisles/understanding-viewmodel-persistence-during-configuration-and-screen-rotation-88227033b6df">Understanding ViewModel Persistence During Configuration and Screen Rotation
• hasina.anddev/android-adventure-flow-of-views-to-composable-flow-3b77bf2545da">Android Adventure: Flow of Views to Composable Flow
• mpavicic99/integrating-code-formatting-into-your-android-projects-663d0056dbe7">Integrating Code Formatting into Your Android Projects
#android
Пройдите новый опрос Developer Nation - ответьте на ряд вопросов о языках программирования, инструментах разработчика и платформах. Ваши ответы помогут людям и компаниям заметить новые тенденции и создать лучшие инструменты для поддержки разработчиков. Опрос охватывает 13 областей разработки, включая веб и мобайл, десктопы и облака, промышленный IoT, игры, машинное обучение и ИИ. Он доступен на 10 языках, в том числе и на русском. Каждый, кто завершит опрос, получит бесплатный виртуальный пакет с доступом к бесплатным ресурсам. И вот еще - как оказалось, не все сервисы оказались идиотами, так что поддержите Россию в этом мировом опросе. Вперед!
Разработка
• Самые высокооплачиваемые вакансии июня в сфере разработки приложений
• Роль дизайнера в проекте
• Что дальше после разработчика в Google
• Все софт скиллы — про преодоление страха и силу воли
• LLM Compiler оптимизирует код и компиляторы
• Aptabase — открытая аналитика для приложений
• Уязвимость в Rabbit R1 позволяет третьим лицам просматривать ответы ИИ
• How Google migrated billions of lines of code from Perforce to Piper
Маркетинг
• AAA-игры не пользуются спросом на iOS
• Directo упрощает прямое бронирование жилья с помощью расширения Chrome
• Маркетологи в мобайле: Ольга Бигбашева (Rendez-Vous)
Кроссплатформа
• PeopleInSpace — люди в космосе Kotlin Multiplatform
• mobileatexxeta/enhancing-flutter-apps-implementing-unique-charts-540fc1ab2749">Enhancing Flutter apps: Implementing unique charts
iOS
• Apple выпустит AirPods с камерами
• Мне кажется, или SwiftUI еще не готов к проду? — обсуждение на Reddit
• XCStrings Tool — константы для строк локализации
• А так ли нужны акторы в Swift Concurrency?
• Почему паттерн Синглтон небезопасен в iOS-разработке
• Swift 5.9: разбираем интероп и «женим» с С++
• Реактивный Swift Concurrency
• Mixing colors in SwiftUI and Xcode 16
• Displaying tips based on parameters and events with TipKit
• Build a Jenga game in Vision OS
• AdAttributionKit: What subscription apps need to know
#ios
Как мы искали применение техдолгу
Новая подборка всех статей за неделю - поиск применения App Clip и небезопасность Синглтона, инструменты Android-разработчика и победа над техдолгом в RuStore, архитектура кроссплатформенного многомодульного приложения, миллионы за считыватели QR-кодов, как мог бы выглядеть Windows Phone в 2024 и многое другое. Подключайтесь!
Разработка
• Google анонсирует новые Pixel 13 августа
• 8 микрокомпьютеров для работы с искусственным интеллектом
• ozanani/software-architecture-is-hard-71fe3ddafb60">Software Architecture is Hard
• Getting 100% code coverage doesn't eliminate bugs
Маркетинг
• Must-know LTV benchmarks for app marketers
Кроссплатформа
• sepehrtabeian/improve-your-dart-code-with-dependency-injection-understanding-loose-and-tight-coupling-4637968b925a">Improve Your Dart Code with Dependency Injection: Understanding Loose and Tight Coupling
• Advanced Theming Techniques in Flutter: Effortless Color Schemes
Android
• Scroll Block — трекер использования социальных сетей для Android
• Почему умение дебажить один из самых важных навыков для разработчика
• Как мы победили техдолг в RuStore
• 7 Kotlin Stdlib Features You Might Have Overlooked
• hrdebraj/unleashing-the-debugging-magic-cracking-android-native-shared-libraries-77efdfdf2556">Unleashing the Debugging Magic: Cracking Android Native Shared Libraries
• 4 Strategies to Secure API keys in Android Applications
#android
Android
• Топ-10 вопросов о корутинах 2024
• Как мы создали свой инструмент для доставки сборок Android-приложений
• Инструменты Android-разработчика
• Low performer в Android 2024
• How Baseline Profile Improve Skeelo Android App Performance
• A robust MVI implementation with Jetpack Compose
• How to Use ViewModel with Jetpack Compose
#android
RuStore станет обязательным
В Госдуму внесли законопроект, обязывающий продавать в России смартфоны и планшеты с установленным RuStore.
• В пояснительной записке необходимость принятия инициативы объясняется тем, что отдельные производители, прежде всего производители Apple, ограничивают установку российских приложений. Законопроект запрещает установку запретительных условий и обязывает продавать устройства с уже установленным на них магазином RuStore.
• Правда, iOS-версии магазина приложений RuStore еще нет. В случае принятия законопроекта до ее окончательного внедрения нововведения коснутся только устройств под управлением операционной системы Android.
• Однако, один из авторов проекта написал, что iOS-версия RuStore уже разработана и может появиться у пользователей техники Apple на следующий день после вступления закона в силу.
• Он отметил, что инициатива упростит жизнь российских разработчиков, которые сталкиваются с проблемами при размещении своих приложений в App Store. Принятие проекта также избавит российских пользователей от риска «нарваться на фейковые и мошеннические аппы, которых, в App Store хватает».
Предполагается, что изменения должны вступить в силу с 1 сентября 2025 года.
Android
• iCore — модульные компоненты для быстрого создания Android-приложений
• Как устроены аннотации в Kotlin. Часть 1
• Подробное руководство по Logcat в Android Studio с примерами
• Как избавиться от рекурсии, или Как мой код попал в Google
• Микширование аудиопотоков в Android
• Как мы победили техдолг в проекте Android RuStore
• What Are Dynamic App Shortcuts?
• Seamless Screenshot Testing for Compose with Screenshotbot
• Using Lists in Compose Previews
• The Starter kit for Android Platform Engineering
• Automatic (almost) resource generation from Figma for Compose
#android
Владельцы iPhone платят миллионы за считыватели QR-кодов
Люди часто интересуются, есть ли еще возможность заработать на простых приложениях, и удивляются, когда получают ответ «да».
Например, есть Scan QR Code - приложение доступно только для iPhone. По подсчетам AppFigures, оно принесло $937 тысяч чистого дохода. Чистый доход — это то, что разработчик East End Technologies оставил себе после уплаты “налога Apple”.
Всего, с момента выхода в конце 2022 года приложение было загружено 3.5 млн раз и принесло $9 млн чистой прибыли. За функцию, встроенную в iOS 🙈
Интересно узнать, приносят ли такие доходы другие сканеры QR-кодов? Можно найти все приложения, в названии которых упоминается «QR», а затем отфильтровал их, чтобы включить только те, которые заработали более 1000 долларов за последние 30 дней. Можете ли вы догадаться, сколько таких приложений? 63! 49 в App Store и 14 в Google Play, опубликованные 62 разработчиками. Один из них опубликовал два приложения.
За последние 30 дней эти 63 приложения принесли более $4 миллионов чистого дохода из App Store и Google Play, хотя большая часть дохода - более 90% - была получена в App Store.
И что: абсолютно точно вы можете зарабатывать деньги с помощью простого приложения. Просто нужно найти правильную нишу.
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
iOS-приложения под защитой Apple! Или нет?
• (iOS En)
Explore Swift performance
• (iOS En)
Xcode 16 Navigation Shortcuts in 12 Minutes
• (iOS En)
SwiftUI Scroll To Hide Header View - iOS 18
• (iOS En)
Dark mode icons in iOS 18 and Xcode 16
• (iOS En)
Mesh Gradient & Floating Tab bar (iPadOS)
• (iOS En)
iOS 18 Control Center Widget - SwiftUI
• (iOS En)
Image Carousel in SwiftUI
• (And Ru)
Как избавиться от рекурсии, или Как мой код попал в Google
• (And Ru)
Микширование аудиопотоков в Android
• (And Ru)
Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
• (And Ru)
Как мы победили техдолг в проекте Android RuStore
• (And En)
AI development assistance - Android Developers Backstage
• (And En)
Simplifying Kotlin Build Configuration with Amper
• (And En)
Why we can't have nice things in Kotlin
• (And En)
Kotlin Language Features in 2.0 and Beyond
• (And En)
Mastering WebRTC for Large Conference Calls on Android
• (And En)
Записи докладов KotlinConf'24
• (Crs En)
What Is Kotlin Multiplatform And How Does It Work?
• (Crs En)
Building Your First Compose Multiplatform Hello World App
• (Crs En)
10 Takeaways for React Native Devs from the App.js conference
• (Dev Ru)
Как решать задачи на Leetcode
• (Dev Ru)
ИИ в работе: как упростить жизнь мобильного разработчика
• (Dev Ru)
Дали менторить джуна… Все пропало?
• (Dev Ru)
Как устроен сетевой код в играх
Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке?
#ios #android #mobile #video
Android
• Kaml — YAML для kotlinx.serialization
• Как я исследовал приложение Zomato, чтобы создать свою собственную систему уведомлений
• App Architecture: Deeplinks
• mohit2656422/top-10-coroutines-questions-2024-11233141634a">Top 10 Coroutines Questions 2024
• What is faster and in which tasks? Coroutines, RxJava, Executor?
#android
erid:LjN8KXEY5
Баерские посиделки: инсайты, нетворкинг и панорамные виды Москвы🎺
Эй, перформанс-маркетинг спецы, User Acquisition гуру, трафик-менеджеры и медиабаеры!
Приглашаем вас на митап, где секреты закупки трафика будут литься рекой, а море нетворкинга не будет знать берегов.
В программе:
🟢Дмитрий Матюшин, 2LEADS: "VTA всему голова?": все про работу с ин-апп трафиком, VTA-атрибуцию, борьбу с каннибализацией.
🟢 Алексей Федин, Magnetto.Pro: "Mini apps в Telegram: новый источник рекламного инвентаря": кейсы и цифры запусков рекламы в мини-аппах.
🟢Полина Кушнир, 2LEADS: "Антифродовая аналитика: как это работает": кейсы работы с антифродом, нюансы его работы.
Не упустите шанс прокачать свои навыки, расширить связи и зарядиться!
🔪Когда: 27 июня, 19:00
🗾Где: Шмитовский пр., 3, стр. 1
Регистрация
Реклама ООО"ТУЛИДС" ИНН 6317122270
Уязвимости в CocoaPods позволяли манипулировать библиотеками ☕️
Пишут, что уязвимы были миллионы iOS и macOS приложений. Конечно, это не совсем так, но все же.
• Первая из трех уязвимостей, обнаруженных EVA, связана с небезопасным механизмом проверки электронной почты, используемым для аутентификации разработчиков отдельных библиотек.
• Вторая уязвимость позволяла злоумышленникам получить контроль над Pod-ами, которые были заброшены их разработчиками, но продолжали использоваться приложениями. Эта функция работала 10 лет.
• Третья уязвимость позволяла злоумышленникам выполнить код на магистральном (trunk) сервере.
Открытой эксплуатации уязвимостей вроде не было. Мантейнеры CocoaPods все исправили, Исследователи советуют разработчикам, использующим CocoaPods в своих приложениях, всегда проверять зависимости CocoaPods и запускать сканирование безопасности для обнаружения вредоносного кода во всех внешних библиотеках.
Вчера появились слухи о том, что в новых AirPods планируют сделать ИК-камеры, которые смогут “видеть” пространство вокруг. Камера будет определять, когда окружение пользователя меняется, обычно из-за того, что он двигает головой. В частности, говорят, что если пользователь поворачивает голову и смотрит в определенном направлении, Apple Vision Pro будет знать, что нужно подчеркнуть звук, связанный с тем, на что он смотрит. Но вероятных возможностей, конечно, гораздо больше. Еще при выходе первых наушников я говорил, что потенциал такого носимого компьютера даже больше, чем у смартфона (и появления устройств нового поколения, вроде всяких Rabbit R1, только подтверждают это). Так что даже как то жаль, что Apple развивает AirPods такими неспешными темпами 🎧
Разработка
• Защита персональных данных в мобильных приложениях: как не нарушить закон
• Developer workflow tips no one tells you about
• The gifts of 40
Маркетинг
• Fortnite и Epic Games Store запускаются на iOS в Европе
Кроссплатформа
• Dropdown — выпадающее меню на Compose Multiplatform
• Xamarin alternatives for cross-platform mobile development
• Exploring the Viability of Cross-Platform UI Development with Compose Multiplatform
• How we built it: Creating the I/O Crossword puzzle, powered by AI
iOS
• Typed throws in Swift explained with code examples
• Consolidated ViewState
• SwiftUI and Accessibility: Creating Inclusive iOS Applications (eBook)
• Exploring the Navigation Split View
#ios
Android
• Как запускать задачи в фоне на Android. РАЗБОР
• Эволюция Android тестов с Marathon Test Runner
• Mastering SDUI: A Deep Dive into Server-Driven UI
• Migrating from Play Core Library
• Все видео droidcon Italy 2023
• Android Studio — Show Color and Icon Previews in Autocompletion
• duaaawan/pinterest-inspired-android-ui-development-with-jetpack-compose-1090d7b9ee99">Pinterest-Inspired Android UI Development With Jetpack Compose
• How LiveData Updates 100 Observers in Android
#android
Мне кажется, или SwiftUI еще не готов к проду? — обсуждение на Reddit
Примерно раз в полгода обсуждаем, готов ли SwiftUI к проду или нет. Автор главного поста в этом треде страдает от многих аспектов и его ответ - не особо:
SwiftUI делает простые вещи более простыми, а сложные — еще более сложными. Конечно, на SwiftUI очень приятно писать базовые приложения в стиле самой iOS, но по мере усложнения приложения это становится крайне неприятным.
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
А так ли нужны акторы в Swift Concurrency?
• (iOS Ru)
Swift 5.9: разбираем интероп и «женим» с С++
• (iOS Ru)
Реактивный Swift Concurrency
• (iOS En)
SwiftUI Custom Time Picker Like Apple Timer App
• (iOS En)
iOS 18 TextField Selection API - SwiftUI
• (iOS En)
Xcode 16 Navigation Shortcuts in 12 Minutes
• (And Ru)
Как запускать задачи в фоне на Android. РАЗБОР
• (And Ru)
Эволюция Android тестов с Marathon Test Runner
• (And En)
Now in Android: 108 - Android 15 Beta 3, Google AI Studio, Gemini in Android Studio, and more
• (And En)
Compose UI for... a Light Switch
• (And En)
Write your own Kotlin lint checks
• (And En)
Tap it! Shake it! Fling it! Sheep it! - The Compose Gesture Animations Dance
• (And En)
Animations with Jetpack Compose
• (And En)
7 Features in Kotlin's Standard Library that You Might Have Overlooked
• (Crs En)
How to Share Resources in Compose Multiplatform
• (Crs En)
Expect/Actual in Kotlin Multiplatform
• (Crs En)
Kotlin Multiplatform Alchemy: Making Gold out of Your Swift Interop
• (Dev Ru)
Все софт скиллы — про преодоление страха и силу воли
• (Dev Ru)
Что дальше после разработчика в Google
• (Dsg Ru)
Роль дизайнера в проекте
Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке?
#ios #android #mobile #video
iOS
• Использование TextRenderer для создания выделенного текста
• Как я участвовал в iOS Widget Challenge и что из этого вышло
• kalidoss.shanmugam/why-singleton-is-not-safe-in-swift-for-ios-development-c4e231cb49a7">Why Singleton is Not Safe in Swift for iOS Development
• ryan_willis/navigating-accessibility-a-swiftui-vs-uikit-comparison-40dfc94cfffa">Navigating Accessibility: A SwiftUI vs. UIKit Comparison
• How to quickly run your iOS app in a different language
• iOS 18 TextField Selection API - SwiftUI
#ios
Еврокомиссия предварительно выдала заключение, что Apple таки нарушает основополагающие принципы DMA. В данном конкретном случае, по мнению Еврокомиссии, сторонние разработчики должны иметь возможность бесплатно информировать клиентов об альтернативных возможностях покупки и прямо указывать цены за них. Но расследование ведется и в отношении CTF, и в отношении комиссии Apple за оплату в интернете, и за сложную установку сторонних магазинов. Грозит Apple 10% от мирового оборота, так что несложно предположить, что все эти вещи компания скоро отменит/изменит 🈸
Разработка
• Как мог бы выглядеть Windows Phone в 2024
• Our Experience with CodeRabbit: A Game-Changer in Automated Code Review
Маркетинг
• RuStore станет обязательным
• 6 шагов успешного продвижения e-commerce приложения — кейс Технопарк и Rocket10
• Apple нарушает закон ЕС о цифровых рынках
Кроссплатформа
• Flutter: Detecting Cyclic Dependencies in a Monorepo
• shakilbd/kotlin-multiplatform-vs-flutter-08f8f6178011">Kotlin MultiPlatform vs Flutter
iOS
• InjectionIII — Hot Reloading для Swift
• Running a package from Xcode Build phase
• Using multi-step animations in SwiftUI
• Using TextRenderer to create highlighted text
#iOS
Еще одна новинка WWDC - Apple анонсировала открытие нового API, позволяющего разработчикам интегрировать инструмент перевода Apple в свои приложения. Можно переводить строки, тексты, наборы строк и т.п. Работает все на основе собственного приложения Translate, его словарей и моделей - я так понял, что если их нет, то и перевода нет (впрочем, это не точно). Это так же означает, что работает все на устройстве и не требует денег. Так что если вы запарились копировать/вставлять все в онлайн переводчики - Apple все придумала за вас.
Разработка
• Как решать задачи на Leetcode
• ИИ в работе: как упростить жизнь мобильного разработчика
• Дали менторить джуна… Все пропало?
• Как устроен сетевой код в играх
• Как я развиваю свое приложение для хранения прочитанных книг?
• From the 80's to 2024 - how CI tests were invented and optimized
• Programmers Should Never Trust Anyone, Not Even Themselves
Маркетинг
• Владельцы iPhone платят миллионы за считыватели QR-кодов
• WWDC 24: что нового во встроенных покупках
• Google приостанавливает распространение игр на реальные деньги в Play Store
Кроссплатформа
• Архитектура кроссплатформенного многомодульного приложения
• Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
• What can I do with “Extension Types” in Dart?
• Measure and optimize your Flutter app size
iOS
• Hero анимация в SwiftUI с помощью NavigationTransition
• Apple открывает Translate API
• Xcode 16 потребует 16 Гб для работы Predictive Code Completion
• Как мы искали применение App Clip… и нашли?
• AccessorySetupKit будет проще подключать сторонние устройства
• TPPDF — создание PDF для iOS и macOS приложений
• iOS-приложения под защитой Apple! Или нет?
• Exploring Translation Framework: Language Availability
• What’s new in SwiftUI for iOS 18
• Extend your Xcode Cloud workflows
• Is it just me or I still find SwiftUI lacking in major areas as my app scales up?
#ios
WWDC 24: что нового во встроенных покупках
Коллеги из Apphud написали для нас обзор WWDC по встроенным покупкам. Вот что вышло:
• Устаревание StoreKit 1
• Улучшения в StoreKit 2
Win Back предложения
StoreKit Views
Улучшения тестирования покупок в приложениях
• Xcode 16
• AdAttributionKit
Интересная статья по “усталость” (Fatigue) Senior-разработчиков. Термин “усталость” тут , конечно, слегка неправильный, но в позиции автора с ростом карьеры разработчики накапливают мудрость и усталость. Усталость в данном случае - от освоения новых технология и переход на осозннанную разработку. Переход к более утонченной стратегической роли в инженерной карьере. Когда вы делаете не меньше, а по-другому, и, что самое важное, вы делаете то, что имеет значение. Так что замедлитесь и устаньте от бесконечного кода. Начните думать
Разработка
• Усталость Senior-разработчиков
• WebView: быстрый релиз, никаких ревью в сторах, а минусы есть?
• Let’s write a video game from scratch like it’s 1987
Маркетинг
• Varioqub: за Mann-Whitney замолвите слово
Кроссплатформа
• 10 Takeaways for React Native Devs from the App.js conference
• The Ultimate Guide to React Native Optimization (2024 edition)
iOS
• У Apple «очень серьезные» проблемы с DMA
• Эти айфоны ещё будут жить: пишем и деплоим свои приложения из XCode на старые iPhone
• Preparing your App Icon for dark and tinted appearance
• Swift Testing: Getting Started
• iOS CI/CD With Azure DevOps: Automate Your Release Process
#ios
Как я исследовал приложение Zomato, чтобы создать свою собственную систему уведомлений
Если вам в приложении не хватает каких-либо функций - можно сделать их самому! Например, в приложении Zomato для Android нет нормального уведомления для отслеживания статуса заказа. Заходить постоянно в приложение лень? Лень. Разработчик взял снифер, отследил конечные точки, взял из них информацию и написал собственное подобие Live Activity с данными о доставке практически в реальном времени.
И что: будь как автор! Не нравится - сделай сам 🥗