Mobile Development by AppTractor
11K subscribers
1.87K photos
38 videos
11 files
4.68K links
Цифры, советы и все интересное о разработке мобильных приложений и сервисов. Комментарии и вопросы можно писать прямо @lbogolubov

• Аудитория https://t.me/apptractor/1066
• Сайт https://apptractor.ru/
Download Telegram
Android

В этой статье Иван Кузнецов из Кинопоиска рассказывает о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.

Вопрос на 16 КБ: почему так важны изменения в памяти Android и как подготовить приложение
SnapNotify — Snackbar для Jetpack Compose
Как я научил Jetpack Compose показывать рекомпозиции в реальном времени
EncryptedSharedPreferences is Deprecated — What Should Android Developers Use Now?
Building Bulletproof Android Apps: Why MVI Architecture Changed My Development Game
5
Яндекс открыл регистрацию на Yandex Cup 2025 — международный чемпионат по программированию с финалом в Стамбуле и призовым фондом 12 млн рублей. В направлении мобильной разработки приз за первое место составляет 500,000 рублей. Пробный тур пройдет с 20 по 29 октября.

Разработка

Открыта регистрация на чемпионат Yandex Cup 2025
"Your" или "My" в пользовательском интерфейсе
7 Phrases I use to make giving feedback easier for myself
Auditing your Design system for accessibility

Маркетинг

Новое приложение Awake требует выполнения заданий, чтобы отключить будильник
Chat & Ask AI: $1 млн в месяц на шорткатах вместо промптов
7 smart ways to monetize low-intent users

Кроссплатформа

Kotlin Multiplatform: 7 Patterns for Truly Shared UIs
Opening URLs in Compose Multiplatform: Why Your Code Breaks on iOS 18 and How to Fix It
Voice Control in Flutter: How to Add Local Speech Recognition to Your App
👍3
🐥 iOS

Вышла новая версия Swift 6.2, направленная на повышение продуктивности разработчиков через улучшения языка, библиотек и рабочих процессов. Ключевым нововведением стала упрощенная модель многопоточности: теперь код по умолчанию может выполняться в главном потоке без специальных аннотаций, асинхронные функции стали интуитивнее, а для параллельного выполнения кода введен атрибут @concurrent. Это снижает сложность написания безопасного асинхронного кода и делает его поведение более предсказуемым. В области системного программирования Swift 6.2 предлагает инструменты для создания высокопроизводительного и безопасного низкоуровневого кода. Появились новые типы InlineArray (массив фиксированного размера с хранением на стеке) и Span (для безопасного доступа к памяти), которые помогают избежать ошибок и повысить производительность. Также расширены возможности Embedded Swift, улучшено взаимодействие с C++, и добавлена опциональная строгая проверка безопасности памяти, что важно для проектов с высокими требованиями к надежности. Среди прочих улучшений — официальная поддержка расширения для VS Code от Swift.org, ускорение сборки проектов с макросами и улучшенная отладка асинхронного кода. Библиотеки пополнились новым пакетом Subprocess для управления внешними процессами, обновленным NotificationCenter и новыми возможностями в фреймворке Swift Testing. Важным шагом стало добавление поддержки WebAssembly, что позволяет использовать Swift для создания клиентских и серверных веб-приложений.

The Dark Side of iOS Development: Why Everyone is Quitting
SwiftUI’s Canvas Revolution: How Apple’s New Drawing API Is Transforming iOS Development in 2025
Swift 6.2 Released
Feature flags in Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Android

Android кажется давно изученной системой, но на самом деле это настоящий айсберг, большая часть которого скрыта под водой. За привычным интерфейсом прячутся технологии и архитектурные фишки, о которых знают лишь настоящие знатоки. Пора перестать скользить по поверхности. Давайте вместе нырнем в глубины Android, чтобы понять, что скрывает зеленый робо-дроид.

Полный айсберг Android. Часть 1
Расширяем возможности GitHub Copilot для IDEA или как писать unit-тесты в пару кликов
Kotlin 2.2.20 for Android Developers: 5 Changes That Make Your Code Cleaner
Kotlin Sealed Classes Part 1 with Interview Questions
Mark your models as stable with the Compose runtime annotation library
👍3
У RevenueCat новый отличный гайд о том, как монетизировать пользователей, не высказывающих намерение к покупке подписки. Если краток, то это одноразовые покупки, предложение краткосрочных планов, что-то вроде reverse trial, очевидная реклама, чаевые, отложенные ограничения и реферальные программы. Надо пробовать.

Разработка

Заработал $5K в прошлом месяце на приложении для переименования файлов. Не секси, но работает.

Маркетинг


7 умных способов монетизировать пользователей с низкой мотивацией
Calm запускает отдельное iOS-приложение для сна
День 0

Кроссплатформа

StepsShare — трекер шагов на Compose Multiplatform
Stop Using MediaQuery in Flutter — It’s Killing Your UI (Do This Instead)
👍42
Почему каждый знакомый мне Senior разработчик планирует уйти

К вопросу о кризисе в IT. Топовая статья с Medium, в которой автор сетует на сложившуюся культуру разработки (обилие совещаний, корпоративный бюрократизм, создание ценности, но не получение денег от нее, технический долг, искусственные ограничения и т.п.) и говорит, что каждый его знакомый Senior планирует уйти с работы.
Senior разработчики — это канарейки в угольной шахте. Следующее десятилетие принадлежит:

• Независимым разработчикам, монетизирующим экспертные знания
• Небольшим командам, создающим специализированные продукты
• Консультантам, решающим конкретные проблемы
• Разработчикам, владеющим своей цепочкой создания стоимости

Традиционной занятости была оптимизирована для индустриальной эпохи — стандартизация, контроль и процессы. Информационная эпоха поощряет креативность, скорость и прямое создание ценности.

Исход не грядет, он уже наступил.

Предлагает несколько выходов, но, кажется, каждый из них достаточно оптимистичный. А вы как планируете продолжать карьеру?
👍4
iOS

Большинство из нас, изучив базовый init() в начале своего пути, на этом и останавливаются. Проблема в том, что такой подход заставляет каждый участок кода, создающий объект, знать слишком много о его внутренней структуре. В результате логика инициализации разбросана по всему проекту, код становится хрупким, а его поддержка усложняется. К счастью, система инициализации в Swift предлагает куда более мощные инструменты: пользовательские и вспомогательные инициализаторы. Вместо одного громоздкого init вы можете определить несколько кастомных инициализаторов, каждый из которых решает свою задачу: один для создания нового пользователя со значениями по умолчанию, другой — для разбора данных из JSON, а третий — специально для тестов. Вспомогательные инициализаторы (convenience initializers) идут ещё дальше, позволяя выстраивать гибкие цепочки конфигураций (например, для продакшена, разработки или тестов), которые в итоге вызывают один основной («designated») инициализатор. Такой подход не только делает код чище и семантичнее, но и кардинально упрощает тестирование, позволяя легко подменять зависимости и открывая дорогу к продвинутым паттернам, таким как Builder. В итоге объекты становятся проще в использовании, тестировании и поддержке.

ImmutableData — простое управление состояниями для SwiftUI
This One Swift Feature Will Change How You Write Code Forever
Swift 6.3 Unveiled: Why This Update is More Than Just a Dot Release for iOS
SwiftUI: Horizontal Dial Picker / Slider/ Ruler
How to use [weak self] in Swift Concurrency Tasks?
1
Android

Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW‑видео предпочитают не говорить. А именно о том, что эффективная съемка RAW‑видео на Андроид на сегодняшний день невозможна без "костылей" и ухищрений.

Андроид всё еще не готов к RAW-видео
Model View State Machine: MVS
MVS series: Building the State Machine
I Forced My App To Work Offline Only. Here’s the Architecture Shift That Happened
Avoiding Memory Leaks in Android: Best Practices for Developers
У компании, которую нельзя называть, вышли новые очки. Самые прикольные - Ray-Ban Display, они оснащены полноцветным экраном высокого разрешения в правой линзе, который можно использовать для просмотра сообщений, совершения видеозвонков, чтения субтитров в режиме реального времени, просмотра маршрутов и предварительного просмотра фотографий, которые вы можете сделать с помощью встроенной 12-мегапиксельной камеры. Дисплеем можно управлять с помощью браслета, скролируя экран, нажимая на кнопки и, наконец, набирая сообщения, используя различные жесты. Очки обеспечивают до шести часов работы от аккумулятора в смешанном режиме или до 30 часов при использовании складного зарядного футляра. Цена - от 799 долларов. Вторые по крутизне - Oakley Vanguard. Они отличаются обтекаемым дизайном, защитой от воды и пыли IP67, а также интеграцией с фитнес-приложениями, такими как Garmin и Strava, что позволяет вам задавать ИИ вопросы о ваших фитнес-данных и статистике. Кроме того, очки Vanguard оснащены 12-мегапиксельной камерой с углом обзора 122 градуса на переносице, которая позволяет записывать видео с разрешением до 3K и поддерживает новые режимы съёмки, такие как замедленная съёмка, покадровая съёмка и гиперлапс. Среди других отличительных особенностей — улучшенные динамики и до девяти часов автономной работы. Эти будут стоить 499 долларов. В общем, кажется, у компании, которую нельзя называть, кажется наконец-то получились красивые и функциональные очки. Пора писать приложения для них.

Разработка

Почему каждый знакомый мне Senior разработчик планирует уйти
M*** представила новые умные очки
Wasm 3.0 Completed

Маркетинг

Как заработать первые 1000 долларов на мобильном приложении за 8 простых шагов
Airbuds — это музыкальная социальная сеть, которую Apple и Spotify хотели бы создать

Кроссплатформа

Как создать собственный RenderObject
И ещё немного про то, что const в Dart надо ставить где попало
Google’s strategy: Kotlin and Flutter side by side? What’s the real long-term play?
Please open Telegram to view this post
VIEW IN TELEGRAM
Как заработать на Webview

Традиционный дайджест со всеми материалами за неделю - Swift Runtime и производительность iOS-приложений, вопрос на 16К и полный айсберг Android, проектирование интерфейсов по азиатски, 17 платящих клиентов за час из Tinder, реклама на холодильниках и многое другое. Заходите!
👍3
iOS

Тестирование на Swift долгие годы держалось на трех китах: XCTest, сторонние библиотеки и собственная смекалка. Но на WWDC 24 Apple представила новый, современный фреймворк — Swift Testing, который предлагает концептуально новый подход к тестированию. Кирилл Гусев из ОК рассказывает о том, какие возможности предоставляет Swift Testing.

Горизонтальный селектор/слайдер/линейка на SwiftUI
Foqos — блокировка приложений с помощью NFC-метки или QR-кода
Пишем видеоплеер под iOS с нуля
Новые подходы в Swift для тестирования: разбор технологии Swift Testing
Getting started with the Contacts framework
Listing contacts with the Contacts framework
The Hidden Complexity of iOS Audio Engineering: Lessons from the Trenches
Cancelling async tasks in SwiftUI
Create an Interactive Snippet Shortcut using App Intents
3
Android

Арсений Носов из Яндекса разбирает учебное Android‑приложение WeatherApp с ретро‑пиксельным UI. Автор хвалит модульность и сетевой стек, но показывает много типичных ошибок: дублирование кода, слабая типизация, null‑риски, хардкоды, отсутствие доменного слоя и локализации, неверное место логики и неконфигурируемые кастомные компоненты.

To Do — ведение дел на Jetpack Compose
Разбор кода: пиксельная погода на Kotlin
Проблема при выделении текста в TextView на Android 15+
Elevating media playback : A deep dive into Media3’s PreloadManager - Part 2
Clipping and Masking in Jetpack Compose
Card Corners in Jetpack Compose: Convex, Concave, Cut and Sharp
How We Built a Full-Fledged Soft Kiosk App on Android
Running a RAG powered language model on Android using MediaPipe
2
Shopify успешно перевел два крупнейших приложения — Shopify Mobile и Shopify Point of Sale (POS) — на новую архитектуру React Native, при этом сохранив еженедельный график релизов и обеспечив работу миллионов продавцов. Миграция затронула сложный код с сотнями экранов и нативных модулей, большим количеством кастомных компонентов и глубокой интеграцией с собственными библиотеками, такими как FlashList. Ключевые результаты: сохранили темп разработки на протяжении всей миграции; не допустили остановки разработки новых фичей; выявили и решили типовые проблемы миграции на большом масштабе. В этой статье они делятся подходом к миграции, ключевыми решениями и уроками, которые в компании извлекли, чтобы другие команды могли воспользоваться опытом.

Разработка

Офлайн-режим в мобильном приложении: зачем он нужен и как его реализовать
Какие запросы и куда отправляет MAX
Indoor-локация без дополнительных датчиков: Wi-Fi как единственный источник данных
Давайте потестируем Webview
Сколько кнопок нажимает ваш автотест?
Язык программирования Gleam — Gleam, Erlang VM, BEAM, Elixir vs Gleam

Маркетинг

Как разработчики используют локальные ИИ-модели Apple в iOS 26
Маркетологи в мобайле: Пётр Шапиро (ex-Head of Digital, Делимобиль)
Samsung начал показывать рекламу на холодильниках

Кроссплатформа

Как Shopify перевела свои крупнейшие приложения на новую архитектуру React Native
Compose Multiplatform 1.9.0 Released: Compose Multiplatform for Web Goes Beta
🤡7👍53👌1
iOS

Докладывают, что Apple переписывает части iOS на Rust. Что это значит? В краткосрочной перспективе не так уж и много. Вы же не запустите Xcode завтра и не обнаружите шаблон «Новый проект на Rust» рядом со SwiftUI. Но в долгосрочной перспективе вы увидите более безопасные фреймворки и повышенную производительность. И если Apple когда-нибудь раскроет API Rust, пусть даже частично, это может открыть двери для совершенно новой волны разработчиков iOS, которые никогда не прикасались к Swift, но любят системное программирование. Представьте себе будущее, в котором часть логики вашего приложения может работать на безопасном и быстром Rust, а пользовательский интерфейс останется на Swift. Как вам такое?

Разбираемся с existential container в Swift
Apple is quietly rewriting iOS and it’s not in Swift or Objective-C
Think You Know iOS? Try Solving These 11 Programming Challenges: Part 1
F💥cking DynamicProperty, how does it work?
4🤔3🤡3🌭1
Android

Геннадий Денисов из Яндекс Браузера днедавно в рамках одного проекта интегрировал С++‑код в мобильное приложение Браузера и в этой статье он делится основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями подхода.

ADB Keep Screen On — включенный экран при работе с ADB
Гайд по File Templates: как шарить шаблоны с однотипным кодом
Погружение в JNI: проблемы и решения при взаимодействии между JVM и нативным кодом
Introducing the Google Play Games Level Up program
Building a Modern Android Location Manager: From Legacy Approaches to Clean Architecture Excellence
Android Studio Otter | 2025.2.1 Canary 1 now available
1
У каждого разработчика иногда ночью возникают безумные мысли. У автора этой статьи она была простой: «Что, если я просто отключу интернет и посмотрю, как поведёт себя приложение?». И он так и сделал. Потянулся за стол, выдернул Ethernet-кабель из роутера и понаблюдал, как мигает маленький индикатор Wi-Fi, как будто всё в порядке. Но моё приложение знало правду. Экран входа мгновенно заблокировался. В ленте новостей не было ничего, кроме бесконечного спиннера. Даже страница настроек не работала — как будто для включения тёмного режима нужен интернет. Вот тут-то он и понял, что приложение на самом деле не было приложением. Оно было просто марионеткой, которой управлял интернет, дергая за все ниточки. А когда ниточки отключили, марионетка рухнула. И он принял решение - переделать приложение так, чтобы оно работало только в offline режиме.

Разработка

Я заставил мое приложение работать в офлайне — архитектурный сдвиг
Как небольшая библиотека, которую я создал, помогла мне найти новую работу
Как приручить бассейн: фильтрация, нагрев и химия без участия человека

Маркетинг

Как я получил первых 50 пользователей (не потратив ни копейки)
App Store Optimization: Real-world Best Practices

Кроссплатформа


Swift Is Going Multiplatform — And That’s Bad News for Kotlin
Why is Dart Still a Dead Language Outside of Flutter?
😁4👍31