AppFiles - Mobile Development
1.99K subscribers
2.54K photos
33 videos
8 files
3.42K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
OpenAI API client for Kotlin - клиент для API OpenAI с возможностями мультиплатформенной работы и корутинами. Может работать со множеством режимов - дополнение, чатом, редактирование, генерацией изображений и т.п. В исходниках есть пример готового приложения.

OpenAI API client for Kotlin на GitHub: https://github.com/aallam/openai-kotlin
Платформа: Android (напомню, что есть такое и для Swift - вот, например)
⭐️: 714
👍3
Самоучитель программирования Dart для абсолютных новичков

В этом 8-часовом курсе мы погрузимся в язык программирования Dart. Этот курс разработан таким образом, чтобы его могли пройти начинающие программисты, программисты с опытом кодирования на каком-либо другом языке и вообще не программисты. Flutter использует Dart и позволяет создавать приложения для iOS, Android, Web и Desktop с единой кодовой базой. Таким образом, важно освоить Dart, прежде чем переходить к Flutter.

Видео: https://www.youtube.com/watch?v=Fqcsow_7go4
Платформа: программирование
1
Как протестировать компонент навигации в Jetpack Compose?

Тестирование важно для гарантии того, что ваш код ведет себя так, как ожидается, и для повышения качества вашего проекта путем выявления ошибок на ранних стадиях процесса разработки. В этой статье мы узнаем, как протестировать компонент Navigation в Jetpack Compose.

Статья: https://medium.com/huawei-developers/how-to-test-the-navigation-component-in-jetpack-compose-1ab4ccaba761
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Highlightr - это библиотека подсветка синтаксиса для iOS и macOS, созданная на Swift. Она использует highlight.js в качестве ядра, поддерживает 185 языков и поставляется с 89 стилями. Принимает вашу строку с кодом и возвращает NSAttributtedString с правильной подсветкой синтаксиса.

Highlightr на GitHub: https://github.com/raspu/Highlightr
Платформа: iOS
⭐️: 1.5K
Async/await против GCD

Всем привет, меня зовут Маринин Алексей и я работаю в компании Озон на позиции ведущего разработчика мобильных приложений. Сегодня я хотел бы немного поговорить о том, как async/await могут улучшить нашу жизнь, заменив привычные инструменты.

Статья: https://apptractor.ru/info/articles/async-await-protiv-gcd.html
Платформа: iOS
Как не писать сетевой слой в Android-приложениях с помощью автоматической генерации OpenAPI

Разрабатываемые приложения со временем имеют свойство увеличиваться и обрастать новой функциональностью. Как правило, сетевой слой при этом также разрастается, порой до немыслимых размеров. Поддерживать все это руками в какой-то момент становится довольно сложно. Мы отлично прочувствовали на себе все «прелести» такого подхода и в определенный момент решили обратить взор на возможности автоматической генерации. Поиски увенчались успехом, и теперь при разработке мы не пишем ни строчки сетевого кода сами.

Статья: https://habr.com/ru/articles/737010/
Платформа: Android
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Mina Box - библиотека “ленивой загрузки” для Jetpack Compose. Mina box позволяет отображать постепенно загружаемые элементы на 2D-плоскости. Она построена на основе LazyLayout и предоставляет методы для регистрации элементов и обработки прокрутки на плоскости. Поверх нее уже сделано несколько проектов, например, для ленивой загрузки таблиц.

Mina Box на GitHub: https://github.com/oleksandrbalan/minabox
Платформа: Android
⭐️: 54
Начинаем работу с Detekt, статическим анализатором кода для Android

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

С помощью инструмента под названием Detekt вы можете выполнить любые проверки классов, написанных на Kotlin, запустить процесс ревью кода в любое время (например, перед коммитом) и сэкономить время.

Статья: https://apptractor.ru/info/articles/nachinaem-rabotu-s-detekt-staticheskim-analizatorom-koda-dlya-android.html
Платформа: Android
👍2
Лучший способ структурировать iOS-проект

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

Статья: https://apptractor.ru/info/articles/luchshiy-sposob-strukturirovat-ios-proekt.html
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
Офер в Яндекс за два дня

Приходите на Weekend Offer Mobile 17–18 июня. Всего за 2 дня можно пройти все технические секции, пообщаться с нанимающими командами и получить офер.

Ищем мобильных разработчиков на iOS, Android и Flutter с опытом от 3 лет. Приглашаем в один из наших офисов в России и Беларуси, также нанимаем в международные хабы в Армении, Казахстане и Сербии.

Регистрация заканчивается 12 июня.

Подробности ищите здесь
💩5👍2
Dot Globe - глобус из точек на SceneKit и Metal. Применим в UIKit и SwiftUI, можно менять цвета, мерцание, размеры, включать и выключать частицы.

Dot Globe на GitHub: https://github.com/inventhq/dot-globe
Платформа: iOS
⭐️: 54
«Этот маленький остров меняет все» — опыт проектирования Live Activity в Lyft

Для нас Live Activities — это не просто новый виджет, мы рассматриваем его как совершенно новый способ получить удовольствие от поездки с Lyft на iOS.

Статья: https://apptractor.ru/info/articles/etot-malenkiy-ostrov-menyaet-vse-opyt-proektirovaniya-live-activity-v-lyft.html
Платформа: iOS/дизайн
This media is not supported in your browser
VIEW IN TELEGRAM
Jetpack Compose: HorizontalPager с PagerIndicator и бесконечной прокруткой

Пример реализации бесконечной листалки с индикатором на Jetpack Compose.

Статья: https://medium.com/@k.ibrushi/jetpack-compose-horizontalpager-with-pagerindicator-infinity-scroll-32f6e9357974
Платформа: Android
Forwarded from inDrive.Tech
🔍 Предложите идеи по улучшению безопасности и инклюзивности ride-hailing-сервисов на хакатоне inCode

inDrive организует международное соревнование для инженеров, у которых есть идеи, как сделать поездки ещё безопаснее и доступнее для пользователей.

Приглашаем технических специалистов со всего мира поучаствовать в хакатоне inCode. Соберите команду от 1 до 6 человек, бросьте вызов несправедливости и разделите призовой фонд в размере €16,000.

Выберите одно из трёх направлений:

• Улучшение безопасности поездок для пассажиров и водителей;
• Повышение доступности для людей с ограниченными возможностями;
• Создание своего идеального ride-hailing-сервиса.

➡️ Зарегистрируйтесь на inCode 2023
Kamel - это библиотека асинхронной загрузки мультимедиа для Compose Multiplatform. Она предоставляет простой, настраиваемый и эффективный способ загрузки, кэширования, декодирования и отображения изображений в вашем приложении. По умолчанию для загрузки ресурсов используется клиент Ktor.

Kamel на GitHub: https://github.com/Kamel-Media/Kamel
Платформа: Android/кроссплатформа
⭐️: 220
Исследуем выделения кучи в Android в jemalloc 'new'

Jemalloc 'new' - это распределитель кучи libc, представленный в Android 10. Несмотря на общее название с jemalloc и некоторые функции, его бэкенд сильно отличается. Публичных исследований на эту тему не так много. Более того, несмотря на появление распределителя scudo в Android 11, многие устройства все еще используют "новый" jemalloc, в том числе и Samsung Galaxy S23. По всем этим причинам статья на эту тему кажется актуальной.

Статья: https://www.synacktiv.com/publications/exploring-android-heap-allocations-in-jemalloc-new
Платформа: Android
Почему Swift так медленно компилирует этот код?

Я написал простую функцию быстрой сортировки из 6 строк для бенчмарка Rust (1.65), Swift 5.7 и Python3.11.

• Длина массива составляет 999,999.
• Rust скомпилировался примерно за минуту, а время выполнения составило 2 секунды
• Время работы Python3.11 составило 5 секунд
• А Swift... он компилируется уже больше часа

Когда я пробовал для 99,999 чисел, компиляция заняла 4:30 минуты, а время выполнения составило 0,51 мс (по сравнению с 0,29 мс у Python и 0,12 мс у Rust с компиляцией за 2 секунды)

Обсуждение на форуме Swift: https://forums.swift.org/t/why-is-swift-so-slow-timeout-in-compiling-this-code/61382/11
Платформа: iOS/Swift
Food App SwiftUI - готовое приложение для доставки еды на SwiftUI, MVVM, Combine. Есть онбординг, категории, популярные блюда, рекомендации, просмотр конкретных карточек.

Food App на GitHub: https://github.com/YogeshPateliOS/FoodAppSwiftUI
Платформа: iOS
⭐️: 24
👍2
Как мы на 20% повысили скорость запуска приложения с помощью Baseline Profiles

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

Демонстрировать это я буду на нашем приложении Дринкит. Поехали!

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