AppFiles - Mobile Development
Відкрити в Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Показати більше2 171
Підписники
Немає даних24 години
+37 днів
+730 день
Архів дописів
Kotlin под капотом: inline функции
Многие разработчики не до конца понимают суть inline функций. Не понимают в чем профит от использования inline функций. Зачем нужен crossinline и как работает reified. Отчасти, источник популярных заблуждений про inline функции в том, что раньше на сайте kotlinlang.org было дано не совсем верное описание. Мне захотелось это исправить и наглядно показать как работают inline функции и какой профит мы получаем от их использования.
Статья: https://habr.com/ru/articles/775120/
Платформа: Android
foSho - кастомная type safe навигация для Compose Navigation Component. Эта KSP-библиотека позволяет генерировать безопасный для типов код с минимальными усилиями и предоставляет готовые решения для объединения всех компонентов и масштабирования приложения.
foSho на GitHub: https://github.com/FunkyMuse/foSho
Платформа: Android
⭐️: 7
Топ-10 причин утечки памяти в Android
В этой статье приведены десять распространенных причин возникновения утечек памяти в Android c примерами на языке Kotlin и способы их решения.
1. Нестатические внутренние классы
2. Handler и Runnable
3. Анонимные слушатели
4. Статические представления или контексты
5. Неправильное наблюдение за LiveData
6. Синглтон с контекстом
7. Bitmap
8. WebView
9. Широковещательные приемники
10. Слушатели событий в адаптерах RecyclerView
Статья: https://apptractor.ru/info/articles/top-10-prichin-utechki-pamyati-v-android.html
Платформа: Android
App Clip и тысяча проблем
Если вы решите сделать App Clip, то планируйте, что вам придется:
• Реализовать App Clip, обязательно интегрировав функционал из основного приложения, дополнительные фичи не подойдут
• Добавить Advanced Experiences в App Store Connect
• Создать AASA файла на сайте, чтобы связать ваше приложение со ссылкой
• Протестировать через Local Advanced Experiences на телефоне до релиза
• Пройти ревью
• Подождать индексацию со стороны Apple — в нашем случае это заняло целых 2 недели, не отчаиваться!
Статья: https://habr.com/ru/companies/dododev/articles/775128/
Платформа: iOS
С помощью Variablur можно создавать различные эффекты размытия, которыми вы управляете с помощью маски. Поскольку маска рисуется с помощью GraphicsContext, она может содержать градиенты, фигуры, текст, предварительно отрендеренные изображения или все остальное, что можно нарисовать. Можно создавать градиентное или прогрессивное размытие, виньетки, "размытые тени" и многие другие эффекты. Variablur использует 100% публичный API - это всего лишь шейдер Metal и пара расширений для типов SwiftUI.
Variablur на GitHub: https://github.com/daprice/Variablur
Платформа: iOS
⭐️: 74
Видео и подкасты за неделю:
•
(iOS Ru) Swift-уроки: Actor
• (iOS Ru) Как получить международный оффер iOS-разработчику
• (iOS En) Simple Drop Down Picker – SwiftUI
• (iOS En) SwiftUI: New Observation Framework
• (iOS En) SwiftUI Tooltips with TipKit (Popover & Inline Tips)
• (iOS En) 8 Tips to Design a Great Paywall
• (iOS En) SwiftData Lightweight Migrations
• (iOS En) Swipe Actions For ScrollView - No Gestures! - iOS 17 Scroll APIs
• (iOS En) How to Make a Color Picker with ScrollView, Scroll Position and Visual Effects
• (And Ru) Как устроен Android в умных колонках Яндекса
• (And Ru) Топ-10 вопросов для Senior Android: собеседование с разбором ответов и материалами
• (And En) Firebase Demo Day Recap, Flutter 3.16, and more dev news!
• (And En) A Team of 20 to Publish an App?! - THIS New Google Play Policy Change is CRAZY
• (And En) How to Migrate an Android Project to Kotlin Multiplatform (KMP)
• (And En) Custom Savers
• (And En) Circuit – Android App Architecture Masterclass with Zac and Josh from Slack
• (Crs En) The State of Kotlin Multiplatform
• (Crs En) Getting Started With KMP: Build Apps for iOS and Android With Shared Logic and Native UIs
• (Crs En) Build Apps for iOS, Android, and Desktop With Compose Multiplatform
• (Dev Ru) Мыслим как Platform Engineer
• (Dev Ru) Podlodka #347: развитие продукта от 0 до 1
• (Dev Ru) Tracer — альтернатива Crashlytics: другой взгляд на аналитику ошибок в приложениях
• (Dev Ru) Как качать миллионы фотографий в сутки, выдержать кратный рост и не умереть?
• (Aur Ru) Насколько реален российский айфон: разговор с Максимом Горшениным.
• (AI En) Machine Learning with Python and Scikit-Learn – Full Course
Поставьте 👍 и поделитесь подборкой!Reorderable - это простая библиотека, позволяющая изменять порядок элементов в LazyColumn и LazyRow, а также Column и Row в Jetpack Compose с помощью перетаскивания. Поддерживает элементы различных размеров, некоторые элементы можно сделать неперемещаемыми, есть скрол при перетаскивании к краю экрана, а скорость его зависит от расстояния до края экрана, используется новый Modifier.animateItemPlacement API для анимации перемещения элементов в LazyColumn и LazyRow.
Reorderable на GItHub: https://github.com/Calvin-LL/Reorderable/
Платформа: Android
⭐️: 30
Как Spotify отслеживает размеры приложений
Наши ежедневные задачи как инженеров часто связаны с внедрением новых функциональных возможностей. Существующие пользователи получают возможность пользоваться преимуществами этих функций, для новых пользователей это причина подписаться на приложение, а мы получаем возможность писать больше кода. На первый взгляд, это идеальные симбиотические отношения - беспроигрышный сценарий, когда все довольны и ничего не может пойти не так, правильно?
Неправильно, иногда новая отличная функция приносит больше вреда, чем пользы. Причина проста - размер приложения. Любое дополнение к приложению - будь то код для новой функции, ресурс изображения для новой кнопки или даже поддержка новой локализации - приводит к увеличению размера приложения. Вы можете спросить: "Неужели это действительно проблема в нашем современном мире?". Мы утверждаем, что да.
Статья: https://apptractor.ru/info/articles/kak-spotify-otslezhivaet-razmery-prilozheniy.html
Платформа: разработка
Kotlin под капотом: нюансы использования аннотаций
Kotlin очень лаконичный язык, но когда его код компилируется в Java bytecode, то изящные конструкции Kotlin распадаются на развесистые и монструозные конструкции Java. При этом применение аннотаций может сыграть с вами злую шутку.
Статья: https://habr.com/ru/articles/774872/
Платформа: Android
В дополнение - Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений
У самурая нет цели, есть только путь. И никакой самурай уж точно не станет изобретать велосипед, чтобы этот путь проехать. Вот и у меня нет цели дать готовый рецепт — только указать верное направление.
В статье разберемся с тем, как использовать готовые решения, не допуская распространенных ошибок, на которые часто подталкивают авторы библиотек для загрузки и отображения картинок.
Статья: https://habr.com/ru/articles/761772/
Kingfisher - одна из самых популярных и мощных Swift-библиотек для загрузки и кэширования изображений из Интернета. Она дает возможность использовать чисто свифтовский способ работы с удаленными изображениями в вашем приложении. В ней есть асинхронная загрузка изображений, процессоры и фильтры, многоуровневое кеширование, плейсхолдеры, анимации переходов и многое другое.
Kingfisher на GitHub: https://github.com/onevcat/Kingfisher
Платформа: iOS
⭐️: 21.8K
Отладка представлений SwiftUI: что вызывает изменения?
Представления SwiftUI с большим количеством триггеров перерисовки могут стать проблемой. Каждый
@State, @ObservedObject или другой триггер может вызвать перерисовку представления и повлиять на динамику, например, на анимацию. В таких случаях особенно полезно знать, как отладить представление SwiftUI.
Статья: https://apptractor.ru/info/articles/otladka-predstavleniy-swiftui-chto-vyzyvaet-izmeneniya.html
Платформа: iOSНовые API для адаптивных макетов в Jetpack Compose
Мы выпустили первую альфа-версию наших новых адаптивных макетов Material. В первую очередь мы остановились на компонентах ListDetailPaneScaffold и NavigationSuiteScaffold.
Статья: https://apptractor.ru/info/articles/novye-api-dlya-adaptivnyh-maketov-v-jetpack-compose.html
Платформа: Android
Пишем Kotlin DSL для графов навигации в домашних условиях
Расскажу, как мы сделали свой DSL для того, чтобы строить логику навигации в наших флоу.
Статья: https://habr.com/ru/companies/tinkoff/articles/775288/
Платформа: Android
Курс "Генеративный ИИ для начинающих" от Microsoft
В этом курсе авторы с нуля рассматривают концепции, которые позволят создать свой собственный стартап в области генеративного искусственного интеллекта на базе Azure OpenAI Services. Благодаря этому вы получите представление о том, что нужно сделать, чтобы вывести свои идеи на публику и получить прибыль. В каждом уроке рассматривается один из ключевых аспектов принципов генеративного ИИ и разработки приложений.
Сайт: https://microsoft.github.io/generative-ai-for-beginners/
Платформа: обучение
Exposed - это легковесная SQL-библиотека JetBrains поверх JDBC-драйвера для языка Kotlin. Exposed имеет два варианта доступа к базам данных: типобезопасный SQL-обертка DSL и облегченный Data Access Objects (DAO). Exposed может быть использован для работы с различными движками баз данных, что позволяет создавать приложения, не зависящие от конкретной БД, и переключаться между ними с минимальными изменениями или вообще без них.
Exposed на GitHub: https://github.com/JetBrains/Exposed
Платформа: Android
⭐️: 7.6K
Строки в Swift выглядят одинаково, но не являются таковыми?
Недавно я столкнулся с проблемой, которая вызвала у меня недоумение. Две одинаковые строки отличались друг от друга. Как такое может быть?
Рассмотрим следующий код:
print("String1: '\(string1)'")
print("String2: '\(string2)'")
print(string1 == string2)
Получаем следующий вывод:
String1: '123456' String2: '123456' falseЧто?? Статья: https://apptractor.ru/info/articles/stroki-v-swift-vyglyadyat-odinakovo-no-ne-yavlyayutsya-takovymi.html Платформа: iOS
Умный код — это, вероятно, худший код, который вы можете написать
Умный код труднее читать и он выглядит эзотерическим.
Понятный код труднее писать и он выглядит просто.
Статья: https://apptractor.ru/info/articles/umnyy-kod-eto-veroyatno-hudshiy-kod-kotoryy-vy-mozhete-napisat.html
Платформа: разработка
AcknowList - экран "Признательности", на котором отображается список лицензий, например, от зависимостей CocoaPods и Swift Package Manager. Может сам загружать список библиотек, поддерживает сториборды, темный режим, локализован на 13 языков, варианты UIKit и SwiftUI.
AcknowList на GitHub: https://github.com/vtourraine/AcknowList
Платформа: iOS
⭐️: 646
Листаем цифровые страницы: UIPageViewController
Сегодня я хочу поделиться кратким и простым руководством о том, как просто и программно реализовать UIPageViewController.
Статья: https://habr.com/ru/articles/774108/
Платформа: iOS
