TGViewer
Channel Public Channel
AppFiles - Mobile Development

AppFiles - Mobile Development

@applib

Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Subscribers
2.17K
Photos
3.2K
Videos
48
Links
4.3K

Showing posts older than #4369 · Back to latest

Older Posts 20 shown
Post #4368 342
Picture-in-Picture в iOS: от запуска до переключения контента

С системной функцией Picture-in-Picture (PiP) сталкивались, пожалуй, все владельцы iPhone: кто-то смотрит видео на фоне переписки, кто-то общается по видеосвязи в любимых мессенджерах. Для пользователя это просто удобство, а для разработчика видеосервиса - отдельный механизм со своей инфраструктурой, жизненным циклом и набором ограничений. В этой статье я разберу интеграцию PiP как встроенного плеера: от первого запуска до переключения контента. Поделюсь нюансами, с которыми вы точно столкнётесь на практике, и покажу, как обойти типовые грабли

Статья: https://habr.com/ru/companies/ivi/articles/1065430/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4367 332
Diligence - экраны "О приложении" на SwiftUI

Diligence — это легковесный пакет Swift, содержащий набор UI-элементов для создания About экранов приложений для iOS и macOS.

Diligence на GitHub: https://github.com/inseven/diligence
Платформа: iOS
⭐️: 21
 
👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4366 380
Наконец-то я нашел применение для .fixedSize

Если бы неделю назад мне сказали, что .fixedSize спасёт мне вторую половину рабочего дня, я бы рассмеялся.

Уже одно название словно предупреждает: этот модификатор загонит вас в угол. Кому вообще нужны представления, зафиксированные в статическом размере? Поэтому, как и многие разработчики на SwiftUI, я мысленно отправил его в категорию «модификаторы, которыми я никогда не воспользуюсь».

А затем мне досталась задача по компоновке, которую — вот неожиданность — можно было аккуратно решить только с помощью .fixedSize.

И она преподала мне урок, который стоило усвоить много лет назад: плохих API не существует — бывают лишь интерфейсы, для которых вы ещё не нашли подходящий сценарий. Каждый модификатор SwiftUI появился по определённой причине. Принципиально избегая какого-то из них, вы без всякой пользы сокращаете собственный набор инструментов.

Статья: https://apptractor.ru/info/articles/nakonets-to-ya-nashel-primenenie-dlya-fixedsize.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • 🤷‍♂ 1
  • 🤣 1
Post #4365 418
Tidy - управление задачами

Приложение для управления задачами со всеми необходимыми функциями.

Фичи:

• Повторяющиеся задачи — Создавайте задачи, которые повторяются ежедневно, еженедельно или ежемесячно.
• Вложенные подзадачи — Организуйте работу с помощью глубоко вложенных подзадач, без ограничений по глубине.
• Поиск — Быстро находите любую задачу с помощью встроенного поиска.
• Резервное копирование — Автоматическое и ручное резервное копирование; экспорт данных в файл JSON.

Tidy на GitHub: https://github.com/Gauravkr7488/Tidy
Платформа: Android
⭐️: 15

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4363 450
14 лет в Android-разработке, но кажется, что мобильная разработка умирает. Реально ли перейти в серверную разработку на Kotlin?

Общий настрой треда: переход из Android в бэкенд реалистичен, но Kotlin сам по себе не делает его простым. Большинство участников считают, что опыт старшего мобильного разработчика переносится частично: архитектурное мышление, Kotlin, корутины, проектирование интерфейсов программирования и опыт промышленной разработки остаются ценными. Однако серверная разработка требует отдельного набора знаний, и на собеседованиях придётся конкурировать с людьми, которые много лет работали с базами данных, распределёнными системами и инфраструктурой.

Статья: https://apptractor.ru/info/articles/14-let-v-android-razrabotke.html
Платформа: Android/карьера

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • ❤ 1
Post #4362 398
Одна строчка, которая пожирала нашу память

Утечки памяти могут быть очень незаметными, а их поиск иногда кажется пугающе сложным. Но не стоит их бояться. Да, сначала непросто сопоставить данные гистограммы или кратчайший путь до корня сборщика мусора с кодом, который вы написали. Однако после того, как вы поймёте принцип, анализ помогает не только устранить конкретную проблему, но и обнаружить другие, менее очевидные недостатки.

Эта история служит важным напоминанием:

Если contentType формируется из значения, уникального для каждого элемента на протяжении всего срока жизни списка, он засорит хранилище повторного использования Compose.

Статья: https://apptractor.ru/info/articles/odna-strochka-kotoraya-pozhirala-nashu-pamyat.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4361 363
Untold Engine - Swift/Metal XR-движок

Untold Engine — это XR-движок с открытым исходным кодом на Swift/Metal для высокопроизводительных приложений пространственной визуализации для платформ Apple, предоставляющий разработчикам полный контроль над рендерингом, шейдерами и конвейером обработки данных.

Untold Engine создан для разработчиков и команд, которые:

• Нужен полный контроль над рендерингом, шейдерами и системами движка Metal
• Предпочитают нативную архитектуру Swift + Metal на платформах Apple
• Разрабатывают приложения XR, 3D или пространственной визуализации
• Необходимо обрабатывать большие сцены, потоковые данные или пользовательские конвейеры обработки ресурсов
• Хотят открытый движок, который можно изучать, модифицировать, расширять и встраивать

Untold Engine на GitHub: https://github.com/untoldengine/UntoldEngine
Платформа: iOS
⭐️: 125
 
👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • 👎 1
Post #4360 386
Локальные LLM на iPhone: память, Core ML, MLX и ограничения

Поговорим про:

1. Архитектуру Apple Silicon и Unified Memory — почему не можем использовать всю доступную память;
2. Память, квантование и KV Cache — где приложения начинают падать и как это отловить;
3. Core ML и MLX — чем отличаются, где какой быстрее и почему нельзя всё запускать на нейронном процессоре;
4. Температуру и троттлинг — что происходит с телефоном на длинной сессии;
5. Гибридный пайплайн — как взять сильные стороны обоих фреймворков и получить стабильную генерацию. Это практический разбор с примерами кода, замерами на Llama 3 1B и выводами, когда локальная модель оправдана, а когда лучше использовать серверные модели.

Статья: https://habr.com/ru/articles/1064924/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4359 388
Strata - управление зависимостями между слоями архитектуры

Strata — это плагин Gradle, который контролирует явно заданный граф зависимостей между архитектурными слоями в многомодульной сборке. Каждый слой представлен уже существующим проектом верхнего уровня. Сам этот проект и все его дочерние проекты автоматически относятся к соответствующему слою.

Strata на GitHub: https://github.com/jzbrooks/strata
Платформа: Android
⭐️: 3

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4358 429
Верификация Android разработчиков: что будет с устройствами в России

Прошлым летом Google объявил, что на Android телефоны можно будет устанавливать приложения только от проверенных разработчиков. В этой статье SafeMobile рассказывает, что узнали - по мнению авторов статьи, в ближайшее время серьёзных изменений не ожидается:

• устройства без сервисов Google вообще не участвуют в проверке;
• Россия не входит в первую волну;
• Google заявляет об исключении для стран, находящихся под санкциями;
• приложения, устанавливаемые через корпоративные MDM-системы на управляемые устройства, не должны проходить такую верификацию.

Таким образом, российские устройства без Google Play и корпоративные устройства под управлением MDM должны продолжить работать как раньше. Однако разработчикам обычных приложений авторы рекомендуют заранее пройти полную регистрацию, особенно если APK распространяется напрямую или через сторонние магазины.

Статья: https://habr.com/ru/companies/safemobile/articles/1064658/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4357 2.44K
📺 Видео и подкасты за неделю

• (iOS En) X App's New Scrollable Tabbar Using SwiftUI
• (iOS En) Instagram App's Minimizable Tab Bar Using SwiftUI
• (And Ru) Code Review эталонного Android приложения с AI фичами от Google
• (And En) 👼 Jetpack Compose 5th-Anniversary: Livestream Birthday Party
• (And En) 👼 The inside story of Jetpack Compose
• (And En) 10 Behavioral Tips That Make You CRUSH Your Next Android Interview
• (And En) Moments When Things Go Wrong
• (And En) Breaking Frozen Frames: Phased Rendering for Feature Rich UIs
• (And En) Opinionated Ktor Services
• (And En) Kotlin as a Safety Net Type Driven Reliability in the Finance Industry
• (And En) Setting Kotlin Free with Native Tooling
• (And En) 10 Gradle Best Practices Every Kotlin Developer Should Know
• (And En) The 3 Jetpack Compose Phases Every Developer Should Understand
• (Crs En) Why I'm Not Much Using Compose Multiplatform Anymore
• (Dev Ru) AI в QA: почему инструмент без культуры не работает
• (Dev Ru) VLM против регресса: опыт создания AI-агента, тестирующего интерфейсы как человек
• (Dev Ru) Разработчик из Apple теперь в Яндексе: что отличается внутри
• (Dev Ru) Взгляд на будущее разработки
• (Mrk Ru) Как понять, что мобильная игра готова к масштабированию? Вся продуктовая аналитика на реальном кейсе

Прошлогодние видео:

• (iOS Ru) Почему Metal перестал быть страшным
• (iOS Ru) Локализация iOS-приложения за 1$ в 2024 году
• (And Ru) Нюансы работы Android Runtime в сравнении с HotSpot VM
• (And Ru) Как Google тайно изменил Android на глазах у всех: Project Mainline
• (Dev Ru) Алгоритмическая сессия на собеседовании (все собеседования)
• (Dev Ru) Автоматическая генерация верстки под Server-driven UI из макетов Figma

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
YouTube X App's New Scrollable Tabbar Using SwiftUI | Swipeable Tabs | Xcode 27 Hello Guys 🖐🖐🖐 In this video, I’ll demonstrate how to recreate the X/Twitter App's New Swipeable Tab bar using SwiftUI | Scrollable Tabs SwiftUI | SwiftUI Scroll Synchronised Tab bar | SwiftUI Animations | SwiftUI 2026 | iOS 27 | SwiftUI Xcode 27 | SwiftUI…
Post #4356 338
xclocSmith - линтер и редактор Xcode String Catalogs

xclocSmith - линтер и редактор для каталога строк локализации Xcode. Он находит все проблемы с переводами, редактирует файлы .xcstrings, не разрушая структуру и данные, добавленные Xcode, и замыкает весь процесс: передаёт ИИ-модели точный список недостающих переводов, а затем проверяет полученный результат. Инструмент занимается только локализацией Xcode и ничем больше.

xclocSmith на GitHub: https://github.com/asutekku/xclocsmith
Платформа: iOS
⭐️: 1
 
👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4355 394
Как DoorDash, Instacart и Uber Eats интегрировали LLM в поисковую выдачу тремя разными способами

За последние несколько лет три крупнейшие компании по доставке еды перестроили свои поисковые системы вокруг больших языковых моделей. DoorDash, Instacart и Uber Eats решали одну и ту же задачу: пытались понять намерение пользователя, когда он вводит запрос в строку поиска. Они также опирались примерно на одну и ту же исследовательскую базу. И всё же архитектуры, которые они внедрили, заметно отличаются друг от друга.

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

Статья: https://apptractor.ru/info/articles/kak-doordash-instacart-i-uber-eats-integrirovali-llm-v-poiskovuyu-vydachu-tremya-raznymi-sposobami.html
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4354 405
50 вопросов о System Design, ответы на которые должен знать каждый Senior iOS-разработчик: часть 4

Первая часть, про архитектуру приложения. Вторая про сетевой слой. Третья — локальное хранилище и Offline-First архитектура.

Производительность — один из самых простых критериев, по которым пользователи оценивают качество приложения.

Они могут не знать, какую архитектуру вы используете и соответствует ли ваш код принципам SOLID, но сразу заметят, если приложение долго запускается, дёргается при прокрутке, потребляет слишком много памяти или быстро разряжает аккумулятор.

Именно поэтому оптимизация производительности — одна из любимых тем на собеседованиях senior iOS-разработчиков.

Интервьюеры не ожидают, что вы выучите Instruments наизусть или дословно перескажете документацию Apple. Им нужны инженеры, способные находить узкие места, правильно расставлять приоритеты при оптимизации и принимать обоснованные компромиссные решения на основе реальных производственных сценариев.

В этой статье мы рассмотрим пять вопросов, которые часто встречаются на собеседованиях по архитектуре и системному проектированию iOS-приложений.

Статья: https://apptractor.ru/info/articles/50-voprosov-o-system-design-otvety-na-kotorye-dolzhen-znat-kazhdyy-senior-ios-razrabotchik-chast-4.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4353 375
Публикуем iOS‑приложение без Мака и без Visa: пошаговый разбор

Собрать и опубликовать iOS-приложение без macOS нельзя — точка. Xcode, подпись, нотарификация, выгрузка в App Store Connect — всё это живёт только на маке. Флаттерщики и React Native-разработчики упираются в это на последнем шаге: код пишется где угодно, а .ipa собирается только на технике Apple.

Для разработчика из РФ/СНГ к этому добавляются два специфических барьера:

Железо. Apple официально ушла, Mac — параллельный импорт. Гарантии Apple нет (гарантию обязан обеспечить продавец по закону о защите прав потребителей), цены зависят от того, где смотреть — подробнее в варианте 1.

Оплата. Российские карты не работают в зарубежных сервисах. MacStadium, MacinCloud, Codemagic, да и сам Apple Developer Program ($99/год) — всё требует работающую международную карту.
Разберём варианты по-честному, с ценами.

Статья: https://habr.com/ru/articles/1064144/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • ❤ 1
Post #4352 318
TextKit - rich text редактор для Compose Multiplatform

TextKit — это редактор форматированного текста с поддержкой таблиц и верстки, предназначенный для многоплатформенной работы с Compose (Android, iOS, Desktop/JVM и Web — Wasm и JS). В комплект входят контейнер состояния TextKitState, готовые композабл редактора, панель форматирования, всплывающие окна для ссылок, выравнивание абзацев по левому краю, по центру, по правому краю и по ширине, а также универсальная система триггеров для упоминаний, хэштегов и команд через косую черту. TextKit также поддерживает встроенные блоки: изображения и другое содержимое, которое нельзя отрисовать напрямую, отображаются как кликабельные заполнители, а таблицы остаются полностью редактируемыми. Кроме того, движок предоставляет полноценную отмену и повтор действий с объединением последовательных операций, сериализацию и десериализацию без потери данных в документ JSON, похожий по структуре на формат ProseMirror, а также экспорт в HTML и Markdown в варианте GitHub.

В отличие от редакторов, которые обрабатывают HTML или Markdown, TextKit сохраняет структурированный JSON-документ (тип: "doc" → блочные узлы → встроенные блоки с метками), поэтому стили, списки, ссылки и встроенные токены (упоминания, хэштеги) сохраняются в течение всего цикла загрузки → редактирования → экспорта. Когда вам нужно поделиться контентом, функции toHtml() и toMarkdown() генерируют эти форматы по запросу.

TextKit на GitHub: https://github.com/jjrodcast/TextKit
Платформа: Android/кроссплатформа
⭐️: 60

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4351 332
Как R8 в два раза ускорил работу корутин Kotlin на Android

Когда команда Compose начала исследовать производительность, выяснилось, что корутины являются узким местом для многих операций, выполняемых вне композиции. Например, 80% времени, затрачиваемого на создание и обновление Modifier.clickable, уходило на запуск и отмену внутренних корутин, обрабатывающих обновления InteractionSource. На основании этих наблюдений значительная часть первых работ по оптимизации была направлена на исключение корутин из стандартного пути выполнения и откладывание инициализации до момента, когда она действительно понадобится.

Статья: https://apptractor.ru/info/articles/kak-r8-v-dva-raza-uskoril-rabotu-korutin-kotlin-na-android.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4350 348
Flare - фреймворк для работы с IAP

Flare — это современный и легковесный фреймворк на Swift, упрощающий работу со встроенными покупками и подписками. Построенный на базе StoreKit и StoreKit 2, он предоставляет чистый унифицированный API с поддержкой async/await и включает готовые UI-компоненты для бесшовной интеграции на всех платформах Apple.

Фичи:

• Полная поддержка покупок — расходуемые (consumable) и нерасходуемые (non-consumable) товары, а также подписки
• Промоакции — поддержка промо-предложений и вводных (introductory) предложений
• Современный Swift — использование async/await для чистого и читабельного кода
• StoreKit 1 и 2 — унифицированный API, поддерживающий обе версии StoreKit
• UI-компоненты — готовые представления на SwiftUI и UIKit для отображения продуктов
• Кроссплатформенность — совместимость с iOS, tvOS, watchOS, macOS и visionOS
• Тщательное тестирование — полное покрытие модульными (unit), интеграционными и snapshot-тестами

Flare на GitHub: https://github.com/space-code/flare
Платформа: iOS
⭐️: 68
 
👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4349 427
Как стать 10x-разработчиком с помощью проговаривания мыслей

Андрей Карпати недавно написал в X о своём новом любимом способе работы с LLM — «хорошей длинной сессии бесцельного проговаривания мыслей», как он сам это назвал.

Мы с моим кофаундером занимаемся этим уже несколько месяцев. По сравнению с обычным текстовым вайб-кодингом это настолько большой шаг вперёд, что я уже не помню, когда в последний раз использовал клавиатуру, чтобы написать промпт агенту. На нас тревожно смотрели люди за соседними столиками в кофейнях. Соседи закрывали окна, пытаясь уснуть, пока мы в час ночи вслух излагали свои мысли Codex. Было и множество других неловких ситуаций, о которых мне лучше не вспоминать.

Но дело в том, что это чертовски хорошо работает. Мы просто не можем остановиться.

Сначала я постараюсь объяснить, почему считаю такой подход будущим взаимодействия с агентами. Затем поделюсь несколькими советами, которые помогут получить максимум пользы от подобных монологов. Прошу только об одном: попробуйте. Обещаю, возвращаться к прежнему способу вам уже не захочется.

Статья: https://apptractor.ru/info/articles/10x-ramble-coder.html
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →