Мобильная разработка #1
3.98K subscribers
796 photos
85 videos
32 files
1.26K links
Всё о создании приложений под Android и iOS в одном месте.

🔹 Инструменты, библиотеки и ресурсы для ускорения работы.
🔹 Статьи и гайды для разработчиков любого уровня.
🔹 Тренды мобильной разработки и новости индустрии.

Реклама @evgenycarter
Download Telegram
Подборка открытых проектов, которые заставят вас полюбить Jetpack Compose

1. klokk
Это кинетические часы. Сделаны с использованием Jetpack Compose Desktop. В документации вы можете прочитать о вдохновении проекта и посмотреть процесс разработки. Вы также можете внести свой вклад в проект.
Проект: https://github.com/theapache64/klokk

2. MovieCompose
Это демонстрационное приложение, основанное на современном технологическом стеке Android, которое в основном использует Jetpack Compose UI и Movie DB API. 100% Kotlin, Coroutines, Flow, Hilt, MVVM, паттерн репозитория и т.д. Документация хорошо написана и широко описывает технологический стек.
Проект: https://github.com/skydoves/MovieCompose

3. NewtonsTimer
Проект, подготовленный специально для AndroidDevChallenge. Это приложение Simple Timer, вдохновленное колыбелью Ньютона. В README дается хорошее объяснение мотивации проекта. Автор также проделал хорошую работу, объясняя основные моменты и давая ссылки на код. Очень вдохновляюще!
Проект: https://github.com/MaciejCiemiega/NewtonsTimer

4. Flux
Flux — это красивое погодное приложение, которое показывает, как рисовать динамические пейзажи с несколькими слоями, которые меняются в зависимости от фазы дня. Оно опирается на Jetpack Compose Canvas и поддерживает светлую/темную тему. В целом, это отличный учебный материал!
Проект: https://github.com/fidloo/flux

5. Create Compose App
Это действительно классный инструмент, создающий шаблон приложения для Android, Web, Desktop и Chrome, написанного на Jetpack Compose. Он избавляет вас от трудоемкой установки и настройки.
Созданное приложение поддерживает архитектуру MVVM, Hilt как Dependency Injection Framework, Jetpack Navigation, Logger и типографику Google Sans. В шаблоне для десктопа поддерживается архитектура MVVM со структурой, похожей на Android (SingleActivity), Dagger 2 в качестве фреймворка Dependency Injection, навигация/маршрутизация с Decompose, иконки Launcher (для всех платформ), отдельный модуль данных, модульные и UI-тесты, логирование и шрифт Google Sans. Весьма впечатляюще!
Проект: https://github.com/theapache64/create-compose-app

6. McCompose
Это приложение для McDonald’s, созданное для демонстрации использования Jetpack Compose. Из-за того, что проекту уже 2 года, для его компиляции может потребоваться небольшой рефакторинг. Тем не менее, его стоит посмотреть.
Проект: https://github.com/hitanshu-dhawan/McCompose

7. Schedule Calendar
Это демонстрационный проект, который показывает горизонтальный календарь, показывающий события в хронологическом порядке.
Это не библиотека, а скорее проект для любопытных разработчиков, на что можно посмотреть и поучиться. К сожалению, README не содержит никакой информации.
Проект: https://github.com/halilozercan/compose-schedule-calendar

8. Wiggles
Еще одно приложение, подготовленное для Android Dev Challenge. Это приложение для усыновления собаки, реализованное с помощью Android Architecture Components, Compose Navigation и Material Components.
Хотя документация не очень полная, код достаточно понятен.
Проект: https://github.com/Spikeysanju/Wiggles

9. Roffu
Проект представляет собой интернет-магазин, специализирующийся на спортивной обуви от многих известных компаний с современным пользовательским интерфейсом и красивой анимацией
Проект: https://github.com/mustfaibra/RoFFu

10. ViMusic
С помощью этого приложения с открытым исходным кодом для Android можно стримить музыку с YouTube Music.
Проект: https://github.com/vfsfitvnm/ViMusic

#Android

👉 @developer_mobila
👍2🔥1
Downloading fonts on iOS

Оказывается, помимо шрифтов, поставляемых вместе с платформами Apple, можно загружать множество шрифтов во время выполнения программы. Есть список, который Apple сделала доступным, его можно найти здесь https://developer.apple.com/fonts/system-fonts/.

Как же загрузить эти шрифты? Это не так тривиально, как могло бы быть. Приходится окунаться в CoreText. Но никто не жалуется, это прекрасный C API, который работает на всех платформах Apple, и вы даже можете легко смешивать его с другими кроссплатформенными проектами.

https://whackylabs.com/ios/fonts/2023/05/15/download-fonts-ios/

#ios

👉 @developer_mobila
👍1
🚀 Зачем нужны ViewModels

В сегодняшнем уроке мы расскажем все, что вам нужно знать о ViewModels в Jetpack Compose. Что это такое, зачем они нужны и почему не нужны. ViewModels популярны в мире Android. А что если вы хотите использовать их не только в Android? Какие есть альтернативы?

https://www.composables.com/tutorials/viewmodels-in-jetpack-compose

#Android

👉 @developer_mobila
👍3
30DaysofSwift

Самостоятельный проект по изучению языка Swift.

Этот проект был полностью вдохновлен проектом Сэма Лу "100 дней Swift", после прочтения его сообщения на Medium я принял решение посвятить каждый свой день написанию Swift, это финальный код 30 маленьких Swift-проектов.

https://github.com/allenwong/30DaysofSwift

👉 @Githublib
👍3
Measuring Ping in iOS Apps: A Simple Solution

Сегодня я хочу поделиться с вами простым способом измерения пинга до выбранного сервера в iOS-приложении. Этот код отображает фактический пинг до сервера.

https://medium.com/@onlyapps/measuring-ping-in-ios-apps-a-simple-solution-13be82a15bf3

#ios

👉 @developer_mobila
👍2
Stable vs Immutable и анимации на Compose

Какую анимацию выбрать: Composable или Suspend? Возможна ли анимация за 0 рекомпозиций? А что будет, если «обмануть» Compose и поставить Immutable на мутабельное значение? Об этом и многом другом рассказал Android-разработчик red_mad_robot Серёжа Чумиков.

00:00 Везде ли ставить Immutable
04:27 Immmutable vs Stable - что выбрать?
07:36 Передача примитивов vs целых объектов
08:28 Stable для параметров composable функций
09:24 Анимация на Compose
10:22 Composable-анимации
18:16 Suspend-анимации
21:14 Бесконечная анимация
25:20 Вопросы

https://www.youtube.com/watch?v=kcYa9xg8WAE

#Android

👉 @developer_mobila
Как увеличить время сборки iOS с помощью модуляризации

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

https://www.runway.team/blog/how-to-improve-ios-build-times-with-modularization

#ios

👉 @developer_mobila
🤔2
A complete failure of MVVM+C in SwiftUI

Как обычно, я собираюсь разглагольствовать на эту тему. По крайней мере, это должно дать вам возможность взглянуть на ситуацию с другой стороны, вне рамок MVVM.

Давайте оценим этот культовый дизайн MVVM+C:

final class UserFlowCoordinator: ObservableObject, Hashable {
// ...
private func usersListView() -> some View { // create a view
let viewModel = UsersListViewModel()
let usersListView = UsersListView(viewModel: viewModel)
bind(view: usersListView)
return usersListView
}
// ...
}

https://swift2931.medium.com/a-complete-failure-of-mvvm-c-in-swiftui-e62bdf20057c

#ios

👉 @developer_mobila
Как сделать свой сервер мобильному разработчику, если он никогда такого не делал?

У меня ушел один месяц на создание сервера. Две недели ушло на понимание функционала и сборку прототипа. Одну неделю я писал Ktor-сервер на Kotlin и визуал в приложении на Flutter. И еще одну неделю тестировал. И я хочу, чтобы вы сэкономили две недели, когда решите создать ваш бэкэнд.

Зачем мне свой сервер?

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

А чего не Firebase?

Я люблю Firebase, он удобный, хорошо-известный и масштабируемый. Но он не контролируется, его стало сложнее оплачивать из РФ, гипотетически его могут отключить совсем и если делать что-то сложнее удаленного хранилища он не подходит, а что-то не может.

https://habr.com/ru/articles/764790/

#Android

👉 @developer_mobila
👍2
Handling Android Permissions in Repository

В настоящее время существует два предпочтительных подхода к построению архитектуры Android. Первый - это Google Android Architecture, а второй - Clean Architecture.

Важнейшей частью архитектуры является слой данных, который включает в себя репозитории, предоставляющие данные остальным частям приложения. Репозитории содержат логику получения данных, например, получение текущего местоположения, получение данных с других устройств через Bluetooth и т.д. Однако начиная с Android 6 все стало сложнее. Было введено усовершенствование системы безопасности, предполагающее мелкозернистый контроль доступа, требующий запрашивать разрешения пользователя на доступ к важной информации или функциям. Этот механизм неудобен, так как предполагает запрос разрешений на уровне представления, через Activities или Fragments, а затем получение данных из хранилищ, что приводит к разбросу логики по разным уровням.

https://medium.com/@vuert/handling-android-permissions-in-repository-9c062b4ea85e

#Android

👉 @developer_mobila
👍2
Purr: просмотр и поиск в логах на Android

Purr — это инструмент командной строки zsh для просмотра и поиска в логах Android. Он использует fzf для обеспечения простого, но мощного пользовательского интерфейса, возможностей нечеткого поиска и многого другого.

Хотя logcat в Android Studio достаточен для большинства приложений, он ломается в таких ситуациях, как доступ только через терминал или когда требуется быстрый доступ к нескольким устройствам. При выполнении разработки на самой операционной системе Android разработчики возвращаются к использованию сырого adb logcat в shell.

Это неоптимально и уходит много времени на написание grep-запросов и копание в сплошном нефильтрованном сером тексте с плохим пользовательским опытом. Purr предназначен для решения этой проблемы — это мощная программа просмотра логов, работающая полностью в shell, способная быстро просматривать миллионы логов.

https://github.com/google/purr


#Android

👉 @developer_mobila
👍2
Измерение задержки старта iOS-приложений в масштабе Uber

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

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

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

https://www.uber.com/en-LB/blog/measuring-performance-for-ios-apps-at-uber-scale/

#ios

👉 @developer_mobila
👍1
12 ошибок при публикации приложения в RuStore — и как их избежать

Разработка приложения — трудоёмкий процесс, который требует множества усилий и времени. Но, как только заканчивается кодинг, необходимо опубликовать созданный продукт на цифровой витрине, чтобы пользователи могли его скачать и использовать. В статье рассмотрим 12 наиболее распространённых ошибок, которые допускают разработчики при публикации приложений в RuStore.

https://habr.com/ru/companies/vk/articles/737864/

#Android

👉 @developer_mobila
👍2
О многообразии форм однонаправленных архитектур в Swift

Как SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет
Я уже писал о концепции “контейнеров состояний” в 2017 году. Шесть лет спустя мне все еще нравится строить на их основе большинство своих приложений, используя эту концепцию для двух главных слоев внутри моих приложений:

Слой представления: модель представления — это «контейнер состояния представления» (view state container), моделирующий состояние представления и бизнес-логику.

Доменный слой: обычно агрегирует корневые модели (или репозитории/сервисы данных), представляющие бизнес-правила и сохраняющие целостность и согласованность в рамках определенного ограниченного контекста (или сущности) в приложении.

Однако с 2017 года многое изменилось. В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.

https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e

#ios

👉 @developer_mobila
👍2
Media is too big
VIEW IN TELEGRAM
Ускоряем написание кода

Делюсь популярными утилитами и фичами IDE, которые вы можете использовать, чтобы писать меньше кода == меньше багов

0:00 Вступление
0:44 Annotation Processing
2:46 Kotlin Symbol Processing
4:09 AvitoTech
4:37 Генерация кода из Gradle
5:08 Плагины Kotlin компилятора
6:20 Возможности IDE
7:50 Плагины IDE
8:43 Шаблоны Android Studio
9:18 Geminio
11:13 AI помощники
14:00 Заключение

источник

#Android

👉 @developer_mobila
Как не писать сетевой слой в Android-приложениях с помощью автоматической генерации OpenAPI

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

Я Сергей Шевцов, Android-разработчик в компании KODE. В статье расскажу, как мы работаем с сетевым слоем в наших приложениях. Возможно, это поможет вам сэкономить многие часы написания сетевого кода.

https://habr.com/ru/articles/737010/

#Android

👉 @developer_mobila
👍2
Android 14: что появилось нового и что изменилось? Возможности новой версии мобильной ОС

Несколько дней назад появилась новость о выходе новой версии мобильной операционной системы Android 14. На данный момент исходники прошивки готовы для серии смартфонов Pixel, а чуть позже выйдут обновления для Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Кроме того, готовы и универсальные сборки для разных устройств на базе архитектур ARM64 и x86_64. Давайте внимательно посмотрим на улучшения и дополнения, которые появились в новой версии.

https://habr.com/ru/companies/ru_mts/articles/766792/

#Android

👉 @developer_mobila
👍3