AppFiles - Mobile Development
2.11K subscribers
2.7K photos
38 videos
10 files
3.63K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Film Time - очередное учебное приложение с фильмами. Сделано на основе MVVM, Kotlin, Jetpack Compose, корутин, Hilt, Retrofit и Room с применением ktlint.

Film Time на GitHub: https://github.com/moallemi/Film-Time
Платформа: Android
⭐️: 249
Кастомные макеты в Compose — стопка карточек с кошками

В приложении, которое я создала, есть кошки — много кошек — и вы можете получить еще больше. Фотографии кошек представлены в виде карточек. Я хотела складывать карточки в стопку, просто потому что думала, что смогу это сделать — и я смогла! Поэтому в этом блоге я расскажу о том, как создать макет стопки карточек. И немного о кошках.

Статья: https://apptractor.ru/info/articles/kastomnye-makety-v-compose-stopka-kartochek-s-koshkami.html
Платформа: Android
Парсим данные из Google Sheets с помощью Kotlin и Retrofit в Android

В этой статье был рассмотрен процесс преобразования данных Google Sheets из JSON формата в классы Kotlin. Более того, в статье фигурировала suspend функция — «Best wishes, coroutines» — с расчётом на то, что читатель имеет минимальные представления о том, как работать с этими функциями.

Статья: https://habr.com/ru/articles/828812/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Еще одна библиотека нашего читателя. Animatable - модификатор анимации для кнопок, скелетов и других представлений на чистом SwiftUI. Есть с десяток предопределенных анимаций, можно их комбинировать.

Animatable на GitHub: https://github.com/c-villain/Animatable
Платформа: iOS
⭐️: 48

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
Как запустить нативный код из WKWebView

Я iOS-разработчик, который твердо верит в нативные приложения, и как вы можете догадаться, конечно, я не самый большой поклонник веб-представлений. Поэтому видеть, как веб-представление используется для реализации основной функции популярного приложения, было довольно неожиданно и тревожно! Но если подумать, то этот выбор имеет большой смысл: Википедия — это, прежде всего, веб-сайт, и его содержимое было создано для отображения с помощью HTML и CSS.

Статья: https://apptractor.ru/info/news/kak-zapustit-nativnyy-kod-iz-wkwebview.html
Платформа: iOS
Video-to-GIF-Converter.gif
17.7 MB
Overscroll анимация в Jetpack Compose

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

Но прежде чем я начну, позвольте мне пояснить, что это немного обходной путь. В Jetpack Compose уже есть OverscrollEffect, который мы можем использовать для создания собственных overscroll анимаций. Проблема в том, что мы можем применять его только к прокручиваемым спискам, которые мы создаем с помощью Modifier.scrollable.

Это не очень удобно, так как большинство списков, которые мы создаем в Compose, являются LazyLists (HorizontalPager, LazyColumn и т.д.). В этих Composables нет параметра overscrollEffect, который мы могли бы настроить.

Статья: https://www.sinasamaki.com/overscroll-animations-in-jetpack-compose/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Пет-проект нашего читателя. Finch - отладочное меню для Android-приложений с поддержкой логирования сетевой активности и множеством других полезных функций. Оно не влияет на рабочий код, только помогает понимать, что в нем происходит. Разработчики могут легко добавить свои собственные функции отладки с помощью простых шагов.

Finch на GitHub: https://github.com/kernel0x/finch
Платформа: Android
⭐️: 249

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
👍3
Скрытая (на виду) сила KeyPath'ов

Меня зовут Максим Черноусов, и я занимаюсь iOS-разработкой в Райфе. Я обожаю использовать и дизайнить классные API. А один из самых часто используемых строительных блоков для хороших API в Swift — это KeyPath'ы. Сегодня о них и поговорим.

KeyPath`ы сегодня используются повсеместно. Давайте узнаем, как с их помощью проектировать лучшие API.

Статья: https://habr.com/ru/companies/raiffeisenbank/articles/828896/
Платформа: iOS
Сериализация в Kotlin - ошибки, которые я допустил с полиморфизмом и не только

Приходилось ли вам сталкиваться с ошибками полиморфной сериализации в ваших проектах на Kotlin? Если да, то вы не одиноки. Полиморфная сериализация, хотя и невероятно мощная, может быть сложной для правильной работы. От неожиданных несоответствий типов до тонких проблем с конфигурацией - многие подводные камни могут привести к досадным ошибкам и недоразумениям.

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

Статья: https://medium.com/@kerry.bisset/kotlin-serialization-json-mistakes-i-made-with-polymorphism-and-more-e8ae367dc90a
Платформа: Android
👍2
Компонентная архитектура приложений на Flutter: почему выбрать BLoC недостаточно

Меня зовут Никита Королев, я тимлид Flutter‑команды в компании IBS. Уже год я работаю на проекте компании «Атом» — разработчика российского электромобиля. На данный момент наша команда занимается разработкой приложений для направления «Такси». В этой статье расскажу о подходе к архитектуре приложений, который мы разработали и используем в наших проектах, а также почему нам недостаточно одного только BLoC.

Статья: https://habr.com/ru/companies/ibs/articles/828428/
Платформа: Flutter/кроссплатформа
Топ-5 плагинов для Android Studio

1. Kotlin Fill Class
2. ADB Idea
3. Android Drawable Preview
4. Key Promotex X
5. IdeaVim

Статья: https://apptractor.ru/info/articles/top-5-plaginov-dlya-android-studio.html
Платформа: Android
BookPlayer - iOS-плеер для аудиокниг. Умеет использовать AirDrop, Файлы, Zip-архивы, создавать плейлисты, делить книги на главы, менять скорость воспроизведения, поддерживает VoiceOver и пр.

BookPlayer на GitHub: https://github.com/TortugaPower/BookPlayer
Платформа: iOS
⭐️: 1.5K
Видео и подкасты за неделю @AppFiles

(iOS Ru) 10 вопросов с собеседования iOS-разработчика (+ все собеседования)
(iOS Ru) Прощаемся с XCAssets. Экспорт картинок из Figma на CDN, а оттуда — в приложение
(iOS Ru) SwiftPM — фреймворки вместо кофе
(iOS En) Custom Button Styles like a PRO! (SwiftUI)
(iOS En) Facebook* Messenger Gradient Effect - SwiftUI
(iOS En) Custom SwiftUI Countdown Timer
(iOS En) SwiftUI: Drop Down Picker
(iOS En) Exploring the Swift Algorithms Package
(And Ru) Android-разработка в 2024 году
(And Ru) Вынос сборки Android-проектов с машины разработчика на сервер
(And En) Micro optimizations - Android Developers Backstage
(And En) Edge-to-edge and insets | Compose Tips
(And En) Exploring Exposed: A Kotlin Solution to Database Access
(And En) Debugging the Future: Exploring Coroutine Debugger Tools
(Crs En) How to Generate Executables in KMP (apk, iab, msi, dmg, deb)
(Crs En) Local Preferences in Kotlin Multiplatform With DataStore
(Crs En) Enabling Kotlin Multiplatform Success: The Android Jetpack Journey
(Crs En) Making the Big Kotlin Multiplatform Decision
(Dev Ru) Mobile Performance: расшифровка метрик
(Dev Ru) Видео Yandex BDUI Conf 2024
(Dev En) Multithreading for Beginners

Что вы посмотрели за неделю?
#ios #android #mobile #video
Next Player - это нативный видеоплеер для Android, написанный на Kotlin. Он предоставляет пользователям множество функций и простой и удобный интерфейс для воспроизведения видео на их Android-устройствах.

Next Player на GitHub: https://github.com/anilbeesetti/nextplayer
Платформа: Android
⭐️: 1.3K
Самый первый Android-смартфон в мире: каким был HTC Dream? Пишем приложения для Android 1.0 в 2024

А знаете ли вы, какой Android-смартфон был первым в мире и как он выглядел? А я теперь не просто знаю, но и могу физически пощупать настоящую легенду своих лет — HTC Dream, также известный как T-Mobile G1. Однако G1 был мне интересен не только как коллекционный девайс для гика, но и потенциально-диковинное устройство для разработки приложений: ведь в современном мире принято повышать минимальную версию Android для работы тех или иных программ, а я свои буду… понижать, чтобы они смогли заработать даже на самой первой версии Android! В сегодняшней статье мы с вами: посмотрим на Dream и постараемся понять, почему HTC выбрала именно Android, неудачно перепакуем аккумулятор, бэкпортируем мои клиенты ВК, YouTube и Telegram и посмотрим, правда ли старичок «бесполезен», как говорят в ретро-обзорах или что-то ещё да может!

Статья: https://habr.com/ru/companies/timeweb/articles/829416/
Платформа: Android
👍1
Пишем свой Swift макрос без лида, ИТ-курсов и кредитов

Меня зовут Сергей, я iOS-разработчик в Альфа-Банке. В повседневной работе я использую множество проверенных инструментов, а в свободное время мне нравится исследовать новые возможности и расширять свои горизонты за пределами используемых в продакшене технологий.

Сегодня я хотел бы рассказать вам о макросах в Swift 5.9, как их можно применять для избавление от бойлерплейта в коде, как их создавать, какие сложности есть с ними и куда всё это движется. Так как я работаю в команде дизайн-системы, мы рассмотрим макросы на примере добавления метода copy для всех моделей UI-компонентов.

Статья: https://habr.com/ru/companies/alfa/articles/828888/
Платформа: iOS
Удобная навигация в SwiftUI для iOS 16 и выше

Не будем мусолить всем известную проблему с навигацией в SwiftUI до 16 iOS, так как уже много крутых статей на эту тему есть в открытом доступе. Близится релиз 18 iOS, а это значит, что минимальные таргеты поднимутся на единичку ближе к 16. В данной статье хочу представить на мой взгляд наиболее удобную реализацию навигации на NavigationStack. Разумеется в концепции старого доброго MVVM, поэтому фанаты UDF извините.

Статья: https://habr.com/ru/articles/830392/
Платформа: iOS
Разбираемся с MavenGate. Настолько ли он страшен на самом деле

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

По версии компании OverSecured этой атаке может быть подвержено 18% всех зависимостей в публичных репозиториях, таких, как MavenCentral, jCenter и jitpack. Это довольно много, особенно, если учесть, что open-source проекты, в основном, используют либо зависимости из публичных репозиториев, либо такие же open-source библиотеки из jitpack.

И здесь мне стало интересно, насколько open-source проекты мобильных приложений Android реально подвержены этой атаке, и сколько библиотек уже «инфицировано» в составе этих самых проектов.

Статья: https://habr.com/ru/companies/infotecs_official/articles/830600/
Платформа: Android/безопасность
👍1
MVI в Eventbrite

Приложение Eventbrite для Android основано на архитектуре MVI. В этой статье я расскажу, что такое архитектура MVI, чем она отличается от MVVM, в чем ее преимущества и как мы можем реализовать ее в нашем приложении. Я также приведу пример, в котором мы формируем мероприятие в приложении для посетителей Eventbrite.

Статья: https://apptractor.ru/info/news/mvi-v-eventbrite.html
Платформа: Android
👍1