TGViewer
Channel Public Channel
AppFiles - Mobile Development

AppFiles - Mobile Development

@applib

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

Showing posts older than #3797 · Back to latest

Older Posts 20 shown
Post #3796 359
Собираем и публикуем Flutter-апп в AppStor

В этой статье рассмотрим настройку автоматической сборки Flutter-приложения для iOS с использованием Fastlane на macOS.

Статья: https://habr.com/ru/articles/964304/
Платформа: кроссплатформа
  • 👍 1
Post #3795 347
Превращение меню SwiftUI в мини-панель настроек

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

Статья: https://apptractor.ru/info/articles/prevraschenie-menyu-swiftui-v-mini-panel-nastroek.html
Платформа: iOS
  • 👍 1
  • 🔥 1
Post #3794 348
Valdi - кроссплатформенный UI фреймворк от Snap

Valdi — это кроссплатформенный UI фреймворк, обеспечивающий нативную производительность без ущерба для скорости разработки. Один раз напишите свой пользовательский интерфейс на декларативном TypeScript, и он сразу же скомпилируется в нативные (Kotlin, Objective-C и Swift ) представления на iOS, Android и macOS — без веб-представлений и JavaScript-бриджей.

Пример:
import { Component } from 'valdi_core/src/Component';

class HelloWorld extends Component {
onRender() {
const message = 'Hello World! 👻';
<view backgroundColor='#FFFC00' padding={30}>
<label color='black' value={message} />
</view>;
}
}

Настоящая нативная производительность

В отличие от фреймворков, использующих веб-представления или JavaScript-мосты, Valdi компилирует декларативно отрисованные компоненты TypeScript в платформенно-зависимые представления. Valdi также обладает рядом других преимуществ в плане производительности:

• Автоматическое переиспользование представлений — глобальная система пула представлений повторно использует нативные представления на всех экранах, значительно сокращая задержки.
• Оптимизированный рендеринг компонентов — компоненты перерисовываются независимо, не запуская повторную визуализацию родительских элементов, что обеспечивает быстрые инкрементальные обновления.
• Оптимизированный движок компоновки — движок компоновки C++ работает в основном потоке с минимальными затратами на преобразование данных из одного представления в другое.
• Рендеринг с учётом области просмотра — он выполняется только видимых представлений, что делает бесконечную прокрутку производительной по умолчанию.

Valdi широко используется в приложениях Snap уже 8 лет. В компании называют это бета-версией, поскольку инструменты и документация требуют более тщательного тестирования в среде открытого исходного кода. Valdi выйдет из стадии бета-тестирования, когда в компании будут довольны опытом разработчиков.

Valdi на GitHub: https://github.com/Snapchat/Valdi
Платформа: кроссплатформа
⭐️: 4K
  • 👍 1
Post #3793 2.44K
📺 Видео и подкасты за неделю @AppFiles

• (iOS En) Perplexity App's Animated Bottom Bar Using SwiftUI
• (iOS En) Press Start: Game development on Apple platforms
• (iOS En) SwiftLeeds Evening Talkshow 2025
• (iOS En) PencilKit: From simple drawings to custom creative tools
• (iOS En) Practical Guide to Shipping Fast
• (iOS En) Side Effects as Behavior
• (iOS En) Tuning your app using Xcode's Instruments
• (iOS En) Guided Generation with Foundation Models in Swift
• (iOS En) Hero Confirmation Dialogs Using SwiftUI
• (And Ru) Swift на Android — ход отчаяния Apple или стратегический манёвр?
• (And En) All Material3 Expressive Loading Indicators Explained (+ When to Use Which)
• (Crs Ru) Как адаптировать свой KMP код под Аврору
• (Crs Ru) Flutter Aurora UI Kit
• (Crs Ru) Наша навигация и её эволюция
• (Crs Ru) Выбираем DI для Kotlin Multiplatform
• (Dev Ru) ИИ в кармане: как встроить ИИ в мобильное приложение
• (Dev Ru) ИИ в серьёзной разработке: революция в IT или переоценённый хайп?
• (Dev Ru) Как с нуля создать ферму мобильных устройств
• (Dev Ru) Всё про новый найм в Яндексе — честный разбор
• (Tcn Ru) Криптофинансы — блокчейн, криптовалюты, DeFi, web3
• (Dsg Ru) Когнитивная нагрузка в интерфейсах и как с ней бороться

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

• (iOS Ru) SDK и BDUI в Яндекс Пэй и Яндекс Банке
• (And Ru) 5 СЕКРЕТНЫХ преимуществ Android эмулятора которые вы не знали!
  • 👍 1
Post #3792 462
DroidRun - управление смартфоном с помощью ИИ

DroidRun — это мощный фреймворк для управления устройствами Android и iOS через LLM-агенты. Он позволяет автоматизировать взаимодействие с устройствами с помощью команд на естественном языке. Для работы нужен Python 3.10+, устройство и приложение на нем для отслеживания работы LLM-агентов. 

DroidRun  на GitHub: https://github.com/droidrun/droidrun
Платформа: iOS/Android
⭐️: 5.5K
  • 👍 1
Post #3791 545
Страна, которая сломала Kotlin

Статья посвящена одной из самых удивительных и трудноуловимых ошибок языка Kotlin. В 2016 году турецкий инженер заметил, что его сборка не проходит: компилятор выдаёт загадочную ошибку «Unknown compiler message tag: INFO». При этом причина оказалась не в коде, а в… настройки локали! Оказалось, что на турецкой локали метод строкового преобразования toLowerCase() превращает «INFO» в «ınfo» (с безточечной «i») — и словарь мапы не находит соответствия.

Дальше — ещё интереснее: спустя годы, с выходом корутин в Kotlin 1.3, ошибка проявилась снова при вызове функции boxInt() — но машиной она была сгенерирована как boxİnt() (заглавная «İ») на машинах с турецкой локалью.

И всё благодаря тому же проблемному capitalize() без указания локали. В финале автор показывает, как разработчики Kotlin заменили все такие вызовы на версии с явно заданной локалью (Locale.US или аналог) и отключили использование старых функций toLowerCase()/toUpperCase().

Основная мысль: даже языковые конструкции вроде преобразования регистра строк, считавшиеся банальными, могут таить в себе серьёзные баги в глобальной среде. Это напоминание: при разработке — не игнорируйте культурно-языковые аспекты и локали. И да — турецкая локаль почти сломала Kotlin.

Статья: https://sam-cooper.medium.com/the-country-that-broke-kotlin-84bdd0afb237
Платформа: Android/Kotlin
  • 👍 2
Post #3790 404
Сделайте приложение более персонализированным с помощью Language Discovery

Новый Locale.preferredLocales API представляет собой не просто постепенное улучшение, а полное переосмысление того, как iOS работает с многоязычными пользователями.

В то время как старый API был основан на строках и требовал обширной ручной обработки, вынуждая разработчиков поддерживать жёстко заданные соответствия для культурных особенностей, новый API предоставляет всё необходимое для приложений, учитывающих культурные особенности (identifier, displayName, languageCode и т.д.).

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

Статья: https://apptractor.ru/info/articles/language-discovery.html
Платформа: iOS
  • 👍 1
Post #3789 398
Пишем свою мобильную ОС с нуля на Rust

Сегодня я хотел бы поделиться с вами результатами своего эксперимента по написанию ядра мобильной ОС с нуля.

Для чего? Главным образом — просто ради развлечения. Мне попадалось много статей по разработке десктопных ОС для x86. Да и сам я когда-то этим увлекался. Попытка разобраться с мобильной операционкой может стать довольно интересным опытом.

Статья: https://habr.com/ru/articles/962680/
Платформа: разработка
  • ❤ 3
Post #3788 382
Tachikoma - современный SDK для работы с ИИ-провайдерами

Tachikoma - современный Swift AI SDK, который делает интеграцию с ИИ простой и естественной. Tachikoma предоставляет интеллектуальный, адаптивный интерфейс для ИИ-сервисов с полностью современным API на Swift.

Tachikoma на GitHub: https://github.com/steipete/Tachikoma
Платформа: iOS
⭐️: 135
  • 🔥 2
Post #3787 598
Руководство по промпт-инжинирингу для программистов

В статье автор рассказывает, как превратить инструменты на основе ИИ для программирования (автодополнение, ассистенты, генерация кода) в действительно полезных партнёров по разработке — если грамотно составлять запросы (промпты). Он подчёркивает: качество ответа ИИ сильно зависит от того, какой запрос мы ему задаём — контекст, цель, детали имеют решающее значение.

📌 Ключевые принципы, которые стоит взять на заметку

Вот некоторые из наиболее важных рекомендаций из статьи:

• Предоставляйте богатый контекст: язык, фреймворк, используемые библиотеки, специфика проекта.
• Чётко сформулируйте цель или вопрос: вместо «почему не работает» задайте: «эта функция возвращает undefined вместо ожидаемого результата X при входе Y».
• Разделяйте сложные задачи на части: не просите сразу реализовать весь большой модуль, начните с генерации скелета, затем добавьте шаг за шагом.
• Приводите пример входа/выхода, желаемого поведения — это помогает ИИ „понять“ задачу.
• Используйте роли или персону: «действуй как старший разработчик React» или «ты эксперт по безопасности кода». Это формирует нужный тон и глубину ответа.
• Итерации: рассмотрите первый ответ, корректируйте запрос, задавайте уточняющие вопросы. Работа с ИИ — не одноразовый промпт, а диалог.

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

Статья: https://addyo.substack.com/p/the-prompt-engineering-playbook-for
Платформа: разработка
  • ❤ 4
  • 👍 1
Post #3786 400
Кастомная сериализация с помощью kotlinx.serialization

Сегодня расскажу о JSON Schema и как мы используем эту спецификацию на проекте, а также о библиотеке kotlinx.serialization и том, как она упростила нам работу со схемами. Статья будет полезна разработчикам, которые интересуются библиотекой kotlinx.serialization и хотят глубже узнать её устройство.

Статья: https://habr.com/ru/companies/okko/articles/961848/
Платформа: Android
  • 👍 1
  • 😁 1
Post #3785 378
Публикация PWA в App Store и Play Store на github actions

Понадобилось мне как-то раз сделать из PWA мобильные приложения. Приключение на 20 минут, зашли и вышли - подумал я и пропал на пару месяцев. В статье будет гремучая смесь из Java, C#, NodeJS, Swift, bash, Dockerfile и github actions. Но в результате возможность непрерывно поставлять свежие сборки в магазины приложений.

Статья: https://habr.com/ru/articles/855830/
Платформа: разработка
  • 👍 1
Post #3784 389
Nice Toast - красивые и настраиваемые тосты для Android

Nice Toast — это потрясающая и легко настраиваемая библиотека для создания уведомлений, доступная как для традиционных View, так и для Jetpack Compose. Повысьте удобство использования своего приложения, заменив стандартные тосты привлекательными, анимированными и информативными уведомлениями, которые отлично смотрятся как в светлой, так и в тёмной темах оформления.

Нужно ли вам отображать сообщение об успешном завершении процесса, ошибку, предупреждение или просто какую-то информацию, NiceToast предлагает разнообразные стили, соответствующие дизайну вашего приложения.

Nice Toast на GitHub: https://github.com/dononcharles/NiceToast
Платформа: Android
⭐️: 9
  • 👍 1
Post #3783 532
StoreKit Helper - обертка StoreKit2 для SwiftUI

StoreKit Helper - ещё одна легковесная обертка StoreKit2, созданная специально для SwiftUI, и упрощающая реализацию встроенных покупок.

StoreKit Helper на GitHub: https://github.com/jaywcjlove/StoreKitHelper
Платформа: iOS
⭐️: 130
Post #3782 556
Gradle для QA-инженера

Если вы автоматизируете на Java или Kotlin, вы не могли не слышать о Gradle. Одни его хвалят за скорость и гибкость, другие ругают за сложность конфигурации. Что же это за инструмент и почему всё больше проектов переходят на него с Maven? В этой статье мы разберем Gradle, чтобы вы могли уверенно использовать его в своих проектах для автоматизации тестирования, а так же спокойно ответить на вопросы на собеседовании.

Статья: https://habr.com/ru/articles/959912/
Платформа: Android
  • 👍 1
Post #3781 466
Самый задаваемый вопрос на iOS-собеседовании, на котором застревают даже Senior разработчики

Он не про синтаксис Swift. Не про UIKit или SwiftUI. Он про то, насколько хорошо вы разбираетесь в iOS.

Статья: https://apptractor.ru/info/articles/samyy-zadavaemyy-vopros-ios.html
Платформа: iOS
  • 👍 3
Post #3780 386
Быстрее, чище, стабильнее: как мы ускорили UI-тесты в iOS в 2,5 раза

Полнота покрытия проекта тестами во многом предопределяет его качество, надёжность и безопасность, поэтому команды предсказуемо стремятся писать тесты на все методы и компоненты. Это имеет и обратную сторону: увеличение покрытия удлиняет прогоны, что, в свою очередь, сказывается на продуктовых метриках. В результате при разработке возникает необходимость искать баланс между покрытием и способами ускорения прогонов. Здесь у каждой компании свой подход.

Статья: https://habr.com/ru/companies/vk/articles/961616/
Платформа: iOS
  • 👍 1
Post #3779 344
Маленькая RAM vs новые фичи: как мы повышаем детализацию Карт и сохраняем стабильность

Чем богаче визуальное и информационное наполнение, тем выше требования к устройствам, на которых работает приложение. Улучшая пользовательский опыт с помощью новых технологий и более детальной картографии, мы сталкиваемся с постоянным ростом потребления ресурсов — прежде всего оперативной памяти (RAM). Наша задача — находить баланс между развитием продукта и сохранением его стабильной и быстрой работы на разных устройствах, включая самые бюджетные модели.

Статья: https://habr.com/ru/companies/yandex/articles/961204/
Платформа: разработка
  • ❤ 1
Post #3778 2.44K
📺 Видео и подкасты за неделю @AppFiles

• (iOS En) Optimize your app's speed and efficiency
• (iOS En) Modern SwiftUI Callbacks using AsyncStream
• (iOS En) How hard can it be to send a postcard?
• (iOS En) Beyond Xcode
• (iOS En) Building Complex Scroll Animations - Custom Bottom Sheet Interaction
• (iOS En) Keychain Unlocked: Mastering Advanced Security for Smarter, Safer Apps
• (iOS En) SwiftUI Alert With Progress View
• (iOS En) iMessage Style Photo Picker Using SwiftUI
• (And Ru) ART Memory Management
• (And Ru) Kotlin и контекстно-ориентированное мышление
• (And Ru) VK Звонки в лесу: звоним в плохих сетях
• (And En) TheAndroidShow: live from Droidcon, with Agents in Android Studio, Android XR and more!
• (And En) Google Play Console: Streamlining workflows, from testing to growth
• (And En) Building for Samsung Galaxy XR, featuring Calm's blueprint to Android XR development
• (And En) Android XR #AskAndroid
• (And En) Explaining Google's Guide to App Architecture In Simple Terms
• (And En) FAB Menu In Material3 Expressive
• (And En) From Java to Kotlin: Mercedes-Benz.io’s Journey
• (And En) Merge Queue at Uber Scale
• (And En) From 25 Minutes to 2.5: Okta's Journey to Faster Builds
• (Crs Ru) Что не так с Dart и Flutter в 2025 году?
• (Crs Ru) KMP для ОС Аврора
• (Crs Ru) Backend-Driven UI как ответ на рост числа платформ
• (Dev Ru) Как устроена мобильная разработка сегодня
• (Dev Ru) Как вас взламывают через Open Source — DevSecOps и безопасная разработка

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

• (iOS Ru) Как устроена библиотека AppMetrica
• (iOS Ru) Здесь куют Metal
• (iOS Ru) Как iOS-разработчику выжить на проекте с KMP?
• (And Ru) Android cookbook: готовим WebView правильно
• (And Ru) Kotlin Coroutines. Устройство и возможности использования
• (And Ru) Фреш на полке, фреш в стеке
• (Dev Ru) От натива до SDUI через гибрид
  • ❤ 1
Post #3777 446
KMP Starter - шаблон кроссплатформенного приложения на KMP

KMP Starter - современный, готовый к использованию шаблон приложения на Kotlin Multiplatform с дизайном Material 3, утилитами и чистой архитектурой.

Технический стек: Kotlin Multiplatform для кроссплатформенной разработки, Compose Multiplatform для UI, Material 3 как дизайн-система, Koin для инъекции зависимостей, Room в качестве локальной базы данных, DataStore для хранения настроек, корутины и Flow для асинхронного программирования, RevenueCat для покупок, MixPanel для аналитики, Kotlinx Serialization для сериализации JSON.

KMP Starter на GitHub: https://github.com/DevAtrii/Kmp-Starter-Template
Платформа: Android/кроссплатформа
⭐️: 51
  • 👍 1
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 →