AppFiles - Mobile Development
2.01K subscribers
2.61K photos
33 videos
8 files
3.51K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов

Если сейчас приехать в пункт приема металлолома, то можно обнаружить просто огромные кучи различных телефонов и прочих электронных «отходов», которые стоят под открытым небом и ждут, когда придёт их черёд окончательного разложения. Однако при ближайшем рассмотрении выясняется, что многие девайсы оказываются полностью рабочими даже после недельного лежания под палящим солнцем и проливными дождями, а сдали их в чермет по причинам «не нужен, надоел, купил новый» и т. п. Я не считаю это правильным, ведь даже в простые кнопочные звонилки имеется возможность вдохнуть новую жизнь, если знать один интересный, но малоизвестный факт: для них можно писать нативные приложения на C и использовать железо телефона в своих целях. А это, на минуточку, как минимум: дисплей с подсветкой, вибромотор, динамик, клавиатура и GSM-радиомодуль с возможностью выхода в сеть. Сегодня мы с вами: узнаем, на каких аппаратных платформах работают китайские телефоны, какие существуют программные платформы и где взять для них SDK, а в практической части мы напишем 2D-игру с нуля, которая будет работать на многих китайских кнопочниках.

Статья: https://habr.com/ru/companies/timeweb/articles/791072/
Платформа: разработка
👍2
Вопросы с собеседований: Что такое модификатор памяти weak в Swift

Модификатор памяти weak в Swift используется для создания ссылок на объекты без увеличения счетчика ссылок, что позволяет объектам освобождаться из памяти, когда на них больше никто не ссылается. Другими словами, это способ создания ссылок на объекты без сохранения их в памяти, если на них больше нет активных ссылок. Это помогает избежать проблем с утечками памяти и циклическими зависимостями в коде на Swift.

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

1. Связи между объектами, которые могут образовать циклическую зависимость: Если два объекта имеют взаимную зависимость, но один из них должен быть освобожден, когда другой удаляется, используйте слабую ссылку для предотвращения циклической зависимости и утечек памяти.
2. Долгосрочные ссылки на объекты в коллекциях: Если объекты добавляются в коллекцию, которая долго существует и может содержать объекты дольше, чем нужно, используйте слабые ссылки, чтобы не удерживать объекты в памяти дольше, чем это необходимо.
3. Взаимодействие с делегатами или замыканиями, которые могут удерживать объект: Если объект содержит ссылку на делегата или замыкание, которое, в свою очередь, имеет сильную ссылку на этот объект, используйте слабую ссылку для предотвращения циклической зависимости.
4. Слабые ссылки в блоках замыканий: При использовании замыканий, которые могут захватывать объекты и удерживать их в памяти, используйте слабые ссылки для предотвращения утечек памяти.
5. Связь между родителем и дочерними объектами: В некоторых случаях, когда родительский объект должен иметь ссылку на дочерние объекты, но эти дочерние объекты могут существовать и без родительского, использование слабых ссылок помогает предотвратить удержание родителя в памяти дочерними объектами.

Подробнее: https://apptractor.ru/info/techhype/weak.html
Платформа: вопросы с собеседований
2
Delta - это приложение для iOS, которое позволяет эмулировать и играть в видеоигры для нескольких классических игровых систем, включая Game Boy Advance, Nintendo 64 и Nintendo DS. Delta является духовным наследником GBA4iOS - эмулятора Game Boy Advance для iOS-устройств, который автор этого проекта с Полом Торсеном сделали еще в школе. Но Delta переделана с нуля, с современными функциями iOS и поддержкой большего количества систем.

Delta на GitHub: https://github.com/rileytestut/Delta
Платформа: iOS
⭐️: 2.7K
Масштабирование iOS в Bumble: вызовы

Эта статья — первая в серии из трех. В ней мы расскажем о работе, проделанной в течение 2022 и 2023 годов и направленной на решение проблем масштабирования наших производственных приложений для iOS.

Статья: https://apptractor.ru/info/articles/masshtabirovanie-ios-v-bumble-vyzovy.html
Платформа: iOS
Предварительный просмотр представлений Jetpack Compose за считанные секунды

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

Представляем вам Preview Generator, созданный с помощью KSP (Kotlin Symbol Processing) и доступный в репозитории Sonatype.

Статья: https://apptractor.ru/info/articles/predvaritelnyy-prosmotr-predstavleniy-jetpack-compose-za-schitannye-sekundy.html
Платформа: Android
1
Kotlin Cheatsheet (Шпаргалка по Kotlin) - это краткое справочное руководство, содержащее описание наиболее важных синтаксисов и функций Kotlin. Большая часть информации в этой шпаргалке взята из официальной документации по Kotlin, при этом она избегает подробных объяснений. Однако эта шпаргалка как раз и предназначена для быстрого ознакомления, а не для предоставления подробной информации.

Kotlin Cheatsheet на GitHub: https://github.com/alidehkhodaei/kotlin-cheat-sheet
Платформа: Android
⭐️: 202
👍2
Material Design 3 для Compose 1.2

Вышел релиз 1.2 Compose Material 3, в котором появились новые компоненты, некоторые изменения в старых компонентах и расширение системы цветов Material3.

Статья: https://apptractor.ru/info/articles/material-design-3-dlya-compose-1-2.html
Платформа: Android
Автоматический аудит доступности SwiftUI в Xcode 15

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

Статья: https://apptractor.ru/info/articles/swiftui-accessibility.html
Платформа: iOS
OKLCHGradient - это замена встроенных в SwiftUI форм LinearGradient, RadialGradient, EllipticalGradient и AngularGradient, которая использует смешивание цветов OKLCH для создания более визуально привлекательных градиентов. Реализовано с использованием Shader API iOS 17, поскольку это, похоже, единственный способ писать стили форм с кастомным рендерингом, не полагаясь на закрытые API.

OKLCHGradient на GitHub: https://github.com/fwrs/OKLCHGradient
Платформа: iOS
⭐️: 18
Тренды Android-разработки

Продолжаем разговор с Андреем Белоусом (@tzkt1) о том, куда движется Android и мобильная разработка.

Android-разработка движется в сторону упрощения и стандартизации. Когда Android-разработка только зарождалась, не было единых подходов к разработке, все писали приложения как умеют. Использовали разные инструменты, не было единого подхода к архитектуре, и не было “золотых” стандартов от Google. Сейчас же есть набор Jetpack библиотек,лучшие практики от Google. Есть удобные и легкие для освоения решения для многопоточности, написания UI, баз данных, DI, навигации.


Интервью: https://apptractor.ru/info/interview/trendy-android-razrabotki.html
Платформа: Android/разработка
Опровергаю пять архитектурных заблуждений

Я хотел поделиться взглядом на заблуждения, с которыми довелось столкнуться на собственном опыте. Некоторые из них приводили не только к проблемам в коде, но и к холиварам в команде. Поэтому важно не только разобраться самим, но и синхронизировать понимание базовых понятий в команде.

1. MVC — это архитектура приложения
2. Разработка — это только написание кода
3. Бизнес-логика — это все, кроме UI
4. Самый верхний слой — это UI
5. В UI логику не держим

Статья: https://habr.com/ru/companies/tinkoff/articles/793398/
Платформа: iOS/разработка
Вопросы с собеседований: Как в Android определяется приоритет приложений перед системой

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

Статья: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-kak-v-android-opredelyaetsya-prioritet-prilozheniy-pered-sistemoy.html
Платформа: Android
1👎1
Minimum - минималистичный лаунчер для эффективной работы. Основные моменты: улучшенный дизайн с интуитивно понятными иконками и минималистичным интерфейсом для плавной навигации, оптимизированная производительность с быстрым запуском и отзывчивой навигацией в любимых приложениях, упрощенная настройка с темами и схемами, философия минимализма в чистом и сфокусированном пользовательском опыте, улучшенная совместимость.

Minimum на GitHub: https://github.com/JunioJsv/minimum
Платформа: Android
⭐️: 17
Знакомимся с пакетом Swift Algorithms

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

Статья: https://apptractor.ru/info/articles/znakomimsya-s-paketom-swift-algorithms.html
Платформа: iOS
Rock Paper Scissor - классическая игра "камень-ножницы-бумага" в одноранговой сети. Этот проект был создан для изучения возможностей фреймворка Apple Multipeer Connectivity для создания одноранговых соединений в экосистеме Apple..

Rock Paper Scissor на GitHub: https://github.com/rational-kunal/P2P-Rock-Paper-Scissor
Платформа: iOS
⭐️: 11
Видео и подкасты за неделю:

(iOS Ru) Как устроен Яндекс Go и зачем работать со студентами и стажерами
(iOS Ru) Навигация в SwiftUI
(iOS En) Self vs self in Swift – Find out the differences with practical examples
(iOS En) SwiftConf ’23 Videos
(iOS En) SwiftUI Minimal Todo List With SwiftData & Interactive Widgets
(iOS En) SwiftUI CoverFlow
(iOS En) Making it Rain – Advanced Special Effects with SwiftUI
(iOS En) Pop to Root View When TabView Item is Pressed
(iOS En) SwiftData & CloudKit: See How To Add Syncing In Your Apps
(And Ru) Многомодульность для UI-тестов
(And Ru) Как мы создавали дизайн-систему на Jetpack Compose
(And Ru) Как мы автоматизировали генерацию Baseline Profile
(And Ru) Кто-то съел мою память на CI!
(And Ru) Верхнеуровневый обзор архитектуры CI/CD мобильного приложения
(And En) BasicTextField2 - Everything You Need to Know
(And En) THIS New Modifier in Compose 1.7.0 Is Amazing!
(And En) Mastering Code Quality: A Deep Dive into Custom Linting for Android Developers with Gopal
(And En) How to integrate Google sign-in with Credential Manager on Jetpack Compose with Supabase Auth
(Crs Ru) Вызовы масштабируемости Kotlin Multiplatform на большом проекте
(Crs En) The State of React Native
(Dev Ru) Как затащить новую технологию
(Dev Ru) Как увольнять людей?
(Dev En) Pkl: Apple’s New JSON/YAML Killer
(Dev En) Firestore Multiple Databases now generally available, Go 1.22, and more dev news!

Что вы интересного посмотрели/послушали про разработку на этой неделе?

🌐 @AppFiles
Vico - это легкая и расширяемая библиотека для построения графиков в Android. Она совместима как с Jetpack Compose, так и с системой представлений, но два ее основных модуля - compose и views - являются независимыми.

Vico на GitHub: https://github.com/patrykandpatrick/vico
Платформа: Android
⭐️: 1.5K
This media is not supported in your browser
VIEW IN TELEGRAM
Создаем анимированные переходы с помощью Matched Geometry Effect в SwiftUI

В SwiftUI мы можем создавать плавные переходы между экранами, из одного состояния в другое, с помощью Matched Geometry Effect (эффект совпадающей геометрии). Используя уникальные идентификаторы, мы можем смешивать геометрию двух видов с одним и тем же идентификатором, создавая анимированный переход. Подобные переходы могут быть полезны для навигации или изменения состояния элементов пользовательского интерфейса.

Статья: https://apptractor.ru/info/articles/sozdaem-animirovannye-perehody-s-pomoschyu-matched-geometry-effect-v-swiftui.html
Платформа: iOS
Собирательный образ Junior Android Developer. Какой он в 2024?

В этой статье мы поговорим про разработку на платформе Android, рассмотрим на что может рассчитывать Junior Android Developer и какие навыки ему для этого потребуются. Кроме того, предоставим ресурсы и материалы, которые помогут в приобретении необходимых навыков.

Статья: https://habr.com/ru/articles/793366/
Платформа: Android
🔥1
Figma Preview - это библиотека Swift, предназначенная для упрощения интеграции макетов Figma в Xcode Preview. Она позволяет разработчикам просматривать компоненты пользовательского интерфейса непосредственно из файлов Figma, способствуя более плавному переходу от дизайна к коду и обеспечивая точное соответствие пользовательского интерфейса вашего приложения спецификациям дизайна.

Figma Preview на GitHub: https://github.com/artemnovichkov/figma-preview
Платформа: iOS
⭐️: 20