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 #3716 · Back to latest

Older Posts 20 shown
Post #3715 378
Делаем анимацию отрисовки для SF Symbols в SwiftUI

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

Статья: https://apptractor.ru/info/articles/delaem-animatsiyu-otrisovki-dlya-sf-symbols-v-swiftui.html
Платформа: iOS
  • 👍 2
Post #3714 389
Как я писал свою звонилку для видеозвонков

После запуска VK MAX звонков все мы ощутили «улучшение качества связи»: WhatsApp и Telegram-звонки внезапно стали то заикаться, то просто падать. На парковке созвониться? Забудьте. Через VPN по мобильной сети? Тоже боль. Добавим к этому ещё и порезанную сотовую связь «из-за дронов» — и получаем настоящий ад для тех, кто привык общаться через привычные мессенджеры.

Решение? Сделать свою звонилку. Так родился проект JOPA Call — Just One Peer App (или, если по-русски: «Просто одно приложение для звонков»).

Статья: https://habr.com/ru/articles/953222/
Платформа: Android
Post #3713 366
Swift Codable

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

Статья: https://habr.com/ru/articles/953560/
Платформа: iOS/Swift
Post #3712 407
SwiftUI-Adapter - поддержка новых модификаторов SwiftUI на старых версиях iOS

Библиотека от читателя:

SwiftUI-Adapter избавит вас от головной боли при работе с новыми модификаторами SwiftUI.

Недавно я наткнулся на удобную Android-библиотеку, которая упрощает работу с разными версиями API и подумал: «Почему бы не сделать что-то подобное для SwiftUI?». После этого родилась идея разработать инструмент, который избавит вас от бесконечных проверок available и сделает код чище.

Установка библиотеки выполняется через Swift Package Manager.

Зачем это нужно?

Каждый раз, когда Apple выпускает новый модификатор в SwiftUI, нам приходится писать такие конструкции:
if #available(iOS 15.0, macOS 12.0, *) {
YourView()
.badge(5)
} else {
YourView()
}

SwiftUI-Adapter делает эту рутину за вас! Просто используйте единый синтаксис – проверки версий останутся под капотом:
YourView()
.adapter.badge(5)


Преимущества


• Не влияет на производительность: все проверки производятся на этапе компиляции
• Чистая кодовая база: больше никаких available в каждом втором файле
• Простота интеграции: добавляется за пару минут через SPM
• Открытый исходный код: полная прозрачность, возможность вносить правки и участвовать в развитии
• Библиотека поддерживает модификаторы доступные с iOS 15 и выше, а так же macOS 12 и выше
• SwiftUI-Adapter поддерживает большое количество модификаторов, включая новые модификаторы, которые были добавлены в iOS 26 и macOS 26. Описание каждого из модификаторов доступно на странице в GitHub.

SwiftUI-Adapter на GitHub: https://github.com/Wolfaks/SwiftUI-Adapter
Платформа: iOS
⭐️: 10
Post #3710 436
Отделяем мух от Kotlett. Динамические обновления без релизов и BDUI

Kotlett — это внутренняя платформа VK, которая реализует паттерн code-push, то есть динамическую доставку фич для Android- и iOS-приложений без использования BDUI и релиза приложения в магазине. В этой статье автор подробно рассказывает, как устроен Kotlett, как он решает проблемы BDUI, обеспечивает офлайн-работу и почему в компании считают его перспективным фреймворком «динамики для народа».

Статья: https://habr.com/ru/companies/vktech/articles/950588/
Платформа: разработка
  • 😁 1
Post #3709 437
📺 Видео и подкасты за неделю @AppFiles

• (iOS Ru) Переезд на Swift 6: строим графы для успешной миграции
• (iOS En) Code along with the Foundation Models framework
• (iOS En) iOS 26 Custom Tab Bar With Action Button Using SwiftUI
• (iOS En) SwiftUI WebView (URL Argument) – Features, Validation & More
• (And Ru) Android добрался до ноутбуков
• (And Ru) Как убрать Activity context из ViewModel и написать Unit-test
• (And En) Under the hood with Google AI on Android
• (And En) Android developer verification
• (And En) The New Material3 Expressive Explained In 7 Minutes
• (And En) Avoid this App Crash Issue in a Production
• (And En) Mobile System Design Interview With Lead Android Engineer
• (Crs En) Is Kotlin Multiplatform Right for Your App?
• (Dev Ru) Docs as Code. Когда документация становится частью кода, а не пыткой
• (Dev Ru) Архитектура LLM — BERT, трансформеры, attentions
• (Dev En) AWS CloudOps Engineer Associate (SOA-C03) Certification Course – Pass the Exam

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

• (iOS Ru) Как мы запекали 3D-пиццу
• (iOS Ru) Есть ли ORM круче SwiftData
• (iOS Ru) Макросы спустя полгода: не все так гладко
• (iOS Ru) DriverKit: гоняем данные по проводу без мам, пап и MFi
• (Dev Ru) Уволить нельзя терпеть
• (Dev Ru) Lua – идеальный встраиваемый язык
  • 👍 1
Post #3708 393
QuickBall - быстрый доступ к системным настройкам

QuickBall  - плавающее меню, обеспечивающее быстрый доступ к системным функциям, таким как регулировка громкости, яркости и блокировка экрана. Шар остаётся видимым поверх всех приложений и автоматически скрывается на экране блокировки.

QuickBall на GitHub: https://github.com/chayanforyou/QuickBall
Платформа: Android
⭐️: 9
Post #3707 436
Скрытые угрозы Room: почему база тормозит и как это исправить

Вам говорят добавить офлайн кэширование в приложение для Android. «Просто используйте Room, всё будет просто». Несколько запросов, пара сущностей, и всё готово за полдня.

Три дня спустя ваше приложение зависает, запросы еле ползают, а в консоли Play накапливаются ANR-ошибки.

Знакомо?

Вот что происходит, когда база данных Room сталкивается с реальными масштабами. А хорошая новость? У большинства этих проблем есть проверенные решения.

Статья: https://apptractor.ru/info/articles/skrytye-ugrozy-room-pochemu-baza-tormozit-i-kak-eto-ispravit.html
Платформа: Android
  • ❤ 2
Post #3706 380
Погружаемся в недра Retrofit

Думаю, многие задумывались о том, что происходит с функциями в интерфейсе Retrofit сервиса, когда мы помечаем их ключевым словом suspend? У некоторых даже есть заблуждение, что для сетевых запросов в таком случае используется корутиновский Dispatchers.IO. Спойлер — это не совсем так.

В этой статье мы как раз разберёмся, как всё работает на самом деле.

Статья: https://habr.com/ru/companies/alfa/articles/947908/
Платформа: Android
Post #3705 407
Swift Configuration - чтение конфигураций

Swift Configuration - библиотека от Apple для чтения конфигураций в приложениях. Swift Configuration задает уровень абстракции между читателями конфигурации и провайдерами. Приложения и библиотеки считывают конфигурацию через согласованный API, в то время как фактический поставщик настраивается один раз в точке входа приложения. Библиотека позволяет объединять нескольких поставщиков в иерархию, где значения из источников с более высоким приоритетом переопределяют значения из источников с более низким приоритетом. Поддерживает множество встроенных провайдеров - переменные окружения, аргументы командной строки, JSON или YAML файлы, директории файлов, значения в памяти и т.п.

Swift Configuration на GitHub: https://github.com/apple/swift-configuration
Платформа: iOS
⭐️: 393
Post #3704 420
Что произойдет, если заменить каждый цикл For в Swift на map, filter и reduce?

Каждый разработчик Swift обожает хороший цикл for. Это наш хлеб насущный. Нужно перебрать числа? Цикл for. Собрать данные? Цикл for. Изменить состояние? Да, снова цикл for.

Но я всё время слышал из «лагеря функционального программирования» шепоток о том, что map, filter и reduce могут заменить большинство циклов for — и не просто заменить их, а сделать их чище, быстрее и выразительнее.

Поэтому я задал себе простой вопрос: а что, если я полностью откажусь от циклов for в своей кодовой базе Swift и заменю их функциональными конструкциями?

Я решил попробовать. И результаты оказались… удивительными.

Статья: https://apptractor.ru/info/articles/for-map-filter-reduce.html
Платформа: iOS/Swift
  • 🤣 4
Post #3703 412
Укрощаем Android UI-тесты на Compose: как Page Object спас нас от рутины

Вы когда-нибудь тратили слишком много драгоценного времени на поиск нужного testTag в иерархии Compose Screen? А потом еще полдня чинили тесты после каждого чиха в UI? Или, может быть, несколько недель ждали, пока в дизайн-систему добавят недостающий тег или семантику, чтобы вообще начать писать свой UI-тест? Если вы хоть на один вопрос ответили «Да», эта статья для вас. Давайте навсегда покончим с этой рутиной и займемся более креативными задачами!

Статья: https://habr.com/ru/companies/raiffeisenbank/articles/950474/
Платформа: Android
Post #3702 383
ShadowGlow - улучшенные тени для Jetpack Compose

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

Фичи:

🎨 Сплошные и градиентные тени
📐 Настройка форм
🎭 Различные стили размытия
🌌 Эффект параллакса с гироскопом
🌬 Эффект пульсирующей анимации
🚀 Простота использования
📱 Совместимость со светлыми и темными темами

ShadowGlow на GitHub: https://github.com/StarkDroid/compose-ShadowGlow
Платформа: Android
⭐️: 17
Post #3701 370
Derived Data: 5 ошибок iOS-разработчиков

Папка Derived Data (производные данные) — один из важнейших каталогов, используемых iOS-разработчиком. Хотя вы не работаете с ней напрямую, Xcode активно использует её для кэширования информации и оптимизации разработки.

Тем не менее, у iOS-разработчиков есть множество возможностей максимально эффективно использовать Derived Data. Будь то удаление файлов для оптимизации сборки или просмотр информации о каталоге, все эти действия могут улучшить работу разработчиков. Давайте рассмотрим 5 ошибок, которые совершают iOS-разработчики.

Статья: https://apptractor.ru/info/articles/derived-data.html
Платформа: iOS
Post #3700 370
Почему loadKoinModules и unloadKoinModules в Koin могут ломать ваши зависимости и как этого избежать

В Android-проектах Koin остаётся одной из самых популярных DI-библиотек, особенно в MVP/MVI и Compose-приложениях. Она проста в настройке, гибкая и хорошо работает в больших кодовых базах.

Но многие команды, стремясь к модульности и тестопригодности, начинают активно использовать функции loadKoinModules() и unloadKoinModules(). И здесь разработчики часто натыкаются на странную ошибку:
org.koin.core.error.NoBeanDefFoundException: No definition found for …

Статья: https://habr.com/ru/articles/951778/
Платформа: Android
Post #3699 377
Мой iPhone 8 отказывается умирать: теперь это OCR-сервер на солнечном питании

Большинство людей после апгрейда закидывают свои старые iPhone в ящик. А вот автор статьи превратил свой старый iPhone 8 в OCR-сервер на солнечных батареях, используя фреймворк Apple и зарядную станцию EcoFlow River 2 Pro. Он месяцами напролёт работает в режиме 24/7, обрабатывая тысячи изображений на полностью автономном питании. За год с лишним сервер обработал 83 418 запросов на распознавание текста (OCR) и 48 ГБ изображений, используя только фреймворк Apple Vision и возобновляемую энергию.

Статья: https://habr.com/ru/companies/ruvds/articles/950814/
Платформа: iOS
  • ❤ 1
Post #3698 344
SQLiteData - быстрая и легкая замена SwiftData с SQL и CloudKit

SQLiteData — это быстрая и лёгкая замена SwiftData от Point-Free, включающая SQL и синхронизацию с CloudKit (и даже шаринг CloudKit), построенная на основе популярной библиотеки GRDB.

Пример:
@FetchAll
var items: [Item]

@Table
struct Item {
let id: UUID
var title = ""
var isInStock = true
var notes = ""
}

Этот пример извлекают элементы из внешнего хранилища данных с использованием типов данных Swift, и автоматически отслеживается SwiftUI, поэтому представления пересчитываются при изменении внешних данных. При этом SQLiteData работает непосредственно с SQLite и может использоваться откуда угодно, включая UIKit, модели @Observable и многое другое.

SQLiteData на GitHub
: https://github.com/pointfreeco/sqlite-data
Платформа: iOS
⭐️: 1.1K
Post #3697 384
Kotlin QA: как перейти с Java и писать тесты в 2 раза быстрее

С момента официального объявления Kotlin как предпочтительного языка для Android‑разработки в 2017 году, язык стремительно завоевал популярность не только в мобильной сфере, но и в автоматизации тестирования.

Многие команды QA инженеров сталкиваются с выбором: остаться на привычном Java‑стеке или перейти на Kotlin. В этой статье мы рассмотрим некоторые ключевые различия, преимущества и практические аспекты перехода на Kotlin в контексте автоматизации тестирования.

Статья: https://habr.com/ru/companies/otus/articles/950864/
Платформа: Android
  • 👎 1
  • 🔥 1
Post #3696 404
Analytiks - события, пользователи и данные

Analytiks — это мощная библиотека для Android, разработанная для упрощения интеграции аналитики путём централизации нескольких аналитических сервисов в едином унифицированном интерфейсе. Вместо управления несколькими SDK и их различными API, Analytiks предлагает единый способ отслеживания событий, идентификации пользователей и управления аналитикой во всём приложении.

Analytiks на GitHub: https://github.com/aminekarimii/analytiks
Платформа: Android
⭐️: 54
Post #3695 508
Загрузка данных во ViewModel: рекомендации и Flow-based архитектура

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

Эта статья показывает мой субъективный взгляд на паттерны загрузки данных. Взгляд, отточенный опытом и восстановлением после недавних операций (одно из которых еще продолжается).

Рассматривайте статью как снапшот моих навыков и знаний в 2025 году.

Статья: https://habr.com/ru/articles/950494/
Платформа: Android
  • 👍 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 →