Как стать автором
Поиск
Написать публикацию
Обновить
141.75

Android *

Пишем под самую популярную мобильную ОС

Сначала показывать
Порог рейтинга

Kotlin Multiplatform на практике: как работать с технологией (видео-туториал)

Выпустили серию видео о базовых аспектах работы с Kotlin Multiplatform, технологией для мультиплатформенной разработки (iOS, Android, Web, Desktop).

KMP позволяет использовать общую кодовую базу для нескольких платформ. Причём мы можем гибко регулировать, какую часть кода делаем общей (например, оставляем нативный UI-слой, а бизнес-логику делаем общей).

Рассказали, как и для чего применять технологию на практике, и как к ней подступиться.

Уже доступны все шесть выпусков туториала:

1. Что из себя представляет технология KMP?

2. Настройка окружения

3. Структура проекта

4. Верстка на SwiftUI

5. Верстка на Compose

6. Сетевой слой

Посмотреть туториал можно здесь:

К каждому выпуску приложен документ с пояснением некоторых терминов и полезными ссылками (см. в описании видео), которые пригодятся при ознакомлении с материалом.

Теги:
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Привет, друзья! Меня зовут Александр Минкин, в компании SM Lab я работаю тимлидом Android-разработки на продукте МП Спортмастер. Сегодня я хочу поделиться с вами подробностями об одном из самых мощных архитектурных паттернов для мобильных приложений - MVI (Model-View-Intent). Этот паттерн помогает создавать приложения с четко разделенной логикой, улучшенной тестируемостью и высокой масштабируемостью. Давайте разберемся в его особенностях и посмотрим примеры кода на языке программирования Kotlin в Android с использованием Kotlin Coroutines, StateFlow и Fragment, а также давайте расширим наш пример с использованием чистой архитектуры, где добавим уровни domain-слоя (UseCases) и data-слоя (Repository). Этот подход поможет вам управлять состояниями приложения более эффективно и реагировать на изменения в реальном времени.

 Основные компоненты MVI с чистой архитектурой:

1. Model: Хранит состояние приложения.

2. View: Отображает текущее состояние Model.

3. Intent: Интерпретирует действия пользователя и направляет их в UseCase.

4. UseCase: Содержит бизнес-логику и выполняет операции.

5. Repository: Обеспечивает доступ к данным, будь то локальные или удаленные источники.

Преимущества MVI:

- Однозначное управление состоянием: Все состояния приложения проходят через один поток данных, что упрощает их отслеживание.

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

- Тестируемость: Изолированные компоненты упрощают написание тестов.

Давайте рассмотрим пример использования MVI в приложении на Kotlin. Допустим, у нас есть приложение для управления задачами. Ссылка на gist:

https://gist.github.com/Rasalexman/53f9be0fc4e295b987e0921839a9a84e

Здесь мы рассмотрели базовый пример использования MVI. Хочу отметить, что в разных реализациях этот архитектурный паттерн, может включать в себя несколько дополнительных компонентов, таких как Reducer - это компонент помогающий преобразовать входное намерение в состояние. В примере выше таким reducer может выступать функция `processIntent`, но чаще его делают как абстракцию в виде интерфейса с функцией reduce, которая принимает Intent и возвращает State. Также мы можем добавить такой компонент как Store - это общая часть для работы с намерениями, которая получает результат обработки намерения и может производить как SideEffects, так и само состояние (State) экрана. Количество компонентов может меняться от сложности реализации, вплоть до добавления специальных объектов middleware и сайд-эффектов (SideEffects). Подробное рассмотрение данных компонентов не входило в текущую статью. С более сложными реализациями вы можете ознакомиться по ссылкам ниже

Заключение:

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

Использование Kotlin Coroutines и StateFlow с архитектурой MVI позволяет вам эффективно управлять состояниями и асинхронными операциями в вашем приложении. Интеграция чистой архитектуры с использованием UseCases и Repository делает ваше приложение более модульным и легко масштабируемым. Это упрощает написание кода, при этом ваше приложение становится более отзывчивым и масштабируемым, а так же удобным в управлении данными и бизнес-логикой, улучшая тестируемость и поддержку кода.

Спасибо, что прочитали данную статью. Буду признателен за комментарии и реакции к этому посту. Делить какую реализацию MVI вы используете у себя в проектах. Всем отличного настроения, помните, что его, как и архитектуру, вы можете выбирать сами ;)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

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

Фичи:

Генерация структурированных документов в Markdown/PDF

Интеграция c Jira/Confluence

Возможность автоматической генерации диаграмм (ERD, Sequence)

Полезно ли это/пользовались бы сами?

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии2

Пишем приложение для поиска объектов на С++ (а не на Python)

Результат работы приложения по поиску объектов на С++
Результат работы приложения по поиску объектов на С++

Приложения по поиску объектов, написанные на С++, работают ничуть не хуже привычных вариантов на Python. На это есть несколько причин:

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

  • C++ не использует дополнительный сборщик мусора для управления памятью — это существенно влияет на производительность программы. 

  • Размер программы также можно уменьшить, поскольку C++ не использует дополнительную виртуальную машину и компилируется непосредственно в машинный код.

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

Если хотите написать такое приложение, изучите материалы инженера YADRO и ML-энтузиаста Кирилла Колодяжного. Он подробно описал, как реализовать программу на С++ с применением библиотек компьютерного зрения.

Подготовительная часть →

Практическая часть →

Теги:
Всего голосов 6: ↑6 и ↓0+8
Комментарии0

Google Play с 26 декабря 2024 года приостанавливает на неопределенный срок проведение платежей за приложения разработчикам с банковскими счетами, зарегистрированными в России.

В марте 2022 года Google отключил показ рекламы в России, а позже прекратила монетизацию просмотров на YouTube для российских пользователей на YouTube. Это не затронуло аудиторию из других стран. В мае того же года компания запретила российским разработчикам загружать и обновлять платные приложения в Google Play, что лишило их возможности монетизации в России.

Теги:
Всего голосов 6: ↑4 и ↓2+3
Комментарии1

Да кто такой этот ваш билд-инженер?

Гость нового выпуска Android BroadcastСергей Боиштян, Android-инженер в Авито. Сергей обсуждает профессию билд-инженера с ведущим подкаста Кириллом Розовым. Вот про что говорят:

  • с какими задачами приходится сталкиваться в практике;

  • какой прогресс достигнут в Gradle и Android Gradle;

  • какое будущее нас ждёт в сборках Android и Kotlin Multiplatform-проектах.

Сергей знает, о чем говорит, ведь он из команды Speed: эти ребята у нас занимаются developer experience для Android-разработчиков Авито. Проще говоря — позволяют нашим инженерам сфокусироваться на написании фичей, пока такие богатыри, как Сергей, разбираются с версионированием, библиотеками и прочими штуками.

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

Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.

Теги:
Всего голосов 17: ↑17 и ↓0+17
Комментарии0

Согласно данным, технология PWA стала популярнее среди мессенджеров, банков, интернет-магазинов и других видов компаний.

Основные плюсы прогрессивных веб-приложений касаются пользовательского опыта: здесь есть преимущества как по сравнению с вебом, так и с нативными приложениями. Рассмотрим эти особенности подробнее.

1. Устанавливаются в обход сторов.

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

2. Работают в офлайн-режиме.

Прогрессивные приложения может работать в автономном режиме без соединения с сервером.

3. Загружаются за секунду. 

PWA загружаются очень быстро благодаря HTML-отдаче. С момента загрузки до появления первого элемента или изображения обычно проходит не более 1 секунды.

4. Весит меньше мегабайта. 

В отличие от нативных приложений PWA занимает менее 1 Мб в памяти смартфона. 

5. Эффективно адаптируется под устройство. 

PWA подстраиваются под любое пользовательское окружение. Они работают на всех возможных системах, устройствах и браузерах. 

6. Выглядит привычно для пользователя. 

При загрузке PWA пользователь может установить ярлык или иконку приложения на экран смартфона.

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

Теги:
Рейтинг0
Комментарии0

Всем привет! Сегодня поговорим о PWA.

Прогрессивное веб-приложение (PWA) — это гибрид обычной веб-страницы и мобильного приложения. Оно сочетает в себе функции большинства современных браузеров с преимуществами мобильных приложений и создаётся с использованием стандартных веб-технологий, включая HTML, CSS и JavaScript.

Функциональные возможности включают работу в автономном режимеpush-уведомления и доступ к аппаратуре, что создает аналогичный нативным приложениям опыт работы для пользователя.

Некоторые из крупнейших в мире компаний, такие как Twitter, Instagram, Uber, Pinterest, Forbes, Alibaba и другие, уже используют PWA.

Согласно сообщению из CNBC, к 2025 году почти три четверти населения мира будут использовать для доступа к интернету только смартфоны. Поэтому, если вы планируете создать новый веб-сайт или редизайнить старый, вам следует задуматься о создании PWA.

Теги:
Всего голосов 5: ↑1 и ↓4-3
Комментарии8

iOS vs Android: большая битва платформ. Что лучше для разработчика, бизнеса и простого пользователя

В извечном вопросе о «лучшей мобильной платформе» попробовали разобраться вместе с инженерами Сравни: Android-разработчиком Русланом Кадыровым и iOS-разработчиком Константином Китаевым.

Обсудили, как платформы различаются в плане технологий и пользовательского опыта, под какую из них проще разрабатывать и может ли «многообразие Android» успешно конкурировать с «магией Apple».

Также в выпуске:

  • Состояние мобильной разработки — есть ли кризис?

  • Развитие разработчиков для iOS и Android: полезные материалы и практики

  • Превосходство Android Studio над XСode?

  • Когда наступит кроссплатформенное будущее?

Посмотреть или послушать Sravni Podcast можно здесь:

YouTube
RUTUBE
VK
Яндекс Музыка

Оперативно узнавать о наших новых подкастах, докладах, лекциях и других полезных ИТ-материалах можно в тг-канале Sravni Tech.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Новости ноября из мира Android-разработки уже на 📹 YouTube и 📹 VK Video

🤖 Изменения в графике релизов Android, начиная с 2025 года
🏝 Новая KMP IDE от JetBrains — часть плана развития Kotlin Multiplatform (KMP) на 2025 год
🔨 Новинки Gemini AI в Android Studio
📸 CameraX 1.4 — новый релиз с массой фичей

Не пропустите полезный выпуск для всех, кто хочет быть на волне новинок в Android-разработке! 🤖

Теги:
Рейтинг0
Комментарии0

Чебурашка

Это история не про окукливание рунета, а про моего старого друга, который обратился ко мне несколько лет назад за консультацией по современным технологиям. Назовём его Чебурашкой, чтобы не палить имена, харизматичный и бессовестный, делал всё красиво, а занимался он мрачным криминалом, самое приличное - обнал.

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

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

Пересылать фото банкомата в секретных чатах? Это не путь настоящего обнальщика.

Схема такая: Сервер для обмена видео по RSTP + Фельдману и Шило по Android телефону, где отправителю денег предаётся видео через эмулирование камеры с камеры получателя.

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

MVP проекта (вход рубль - выход десять лет по 7 части статьи 159 УК РФ)

Теги:
Всего голосов 6: ↑4 и ↓2+5
Комментарии1

🪐  WebView в фоне

источник: https://t.me/dolgo_polo_dev/153

Интересный небольшой факт — WebView может загружать страницы без отображения самой WebView на экране

Можно вызывать WebView(context).loadUrl(url) не отображая WebView на экране и не добавляя ее в верстку

С помощью этого можно:

  • настроить prefetch страниц — загрузить страницы заранее в фоне, чтобы не мучать пользователя долгим открытием

  • закэшировать страницы заранее (если включить кэш WebView и прислать хэдер cache-control)

....

еще по теме:

остальные посты 👉 https://t.me/dolgo_polo_dev

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии1

https://gist.github.com/Muraveiko/aa38f6a2670871b6e2aba00eb6d152b9

Хотел прикрутить обрезку картинок через штатное приложение камеры (com.android.camera.action.CROP). Накидал код контракта. Круто же по современному myCrop.launch() и код чистенький при использовании. А оно для моих целей не подходит. Готовую картинку можно получить или как parcel битмапа или в виде uri на новое приложение. Сразу не подумал, что мне нужно БОЛЬШУЮ. А если мне урл на нее возращают, значит обрезанная картинка большого размера остается в галерее :(

В общем жалко просто выкинуть. Может кому потом меньше кода писать будет.

Теги:
Рейтинг0
Комментарии0

Ближайшие события

База для начинающих Android-разработчиков

О профессии и главной IDE

Как стать Android-разработчиком и расти в профессии — чем занимается разработчик, что должен уметь, перспективы карьеры.

Как пользоваться Android Studio — инструкция для начинающих. Рассказываем о возможностях программы, помогаем настроить и запустить.

О языках программирования

Почему почти все приложения для Android написаны на Kotlin — рассказываем об официальном языке для разработки.

5 популярных языков для мобильной разработки — не всё можно сделать с помощью Kotlin.

Два полезных инструмента

Gradle — поможет автоматизировать сборку приложений.

RecyclerView — пригодится для отображения данных в приложениях.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии1

Обновление «окирпичивает» смартфоны Samsung. Кто виноват и что делать?

Кажется, компании соревнуются в наплевательском отношении к пользователям: теперь досталось владельцам Samsung. После обновления устройства начинают бесконечно перезагружаться, причём проблема коснулась устройств пятилетней давности, включая и Galaxy S10 и Note 10. Виновата ли компания и что делать пользователям?

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

Вот и сэкономили, особенно на старых моделях. На наш взгляд, производителю стоило пойти до конца и предусмотреть возможность неудачного обновления. Проблема со слишком большим сочетанием железа и набора ПО известна, регулярно даже у самых больших производителей что-то идёт не так. Так почему бы в ПЗУ не зашить базовую прошивку и не назначить комбинацию клавиш для возврата к ней?

А пользователям можем только посочувствовать и настроить бекапы. Техника относительно дёшева, продаётся миллиардными тиражами, и даже при 99,999% надёжности кто-то будет страдать от брака, глюков и в итоге потери данных. Но облачные сервисы тоже недороги, поэтому проще сразу наладить дублирование информации.

Теги:
Всего голосов 14: ↑14 и ↓0+24
Комментарии1

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

Практическая часть.
Телефон.

Не работают большинство российских операторов. Грузинские тоже не работают.
Работает российский Теле2. Сори за невольную рекламу.

Адрес.
С подтверждением адреса тоже проблема. Мой грузинский договор аренды они не приняли, сказали такого документа не знают.
Скан российского паспорта с пропиской тоже не приняли. Сказали, что документы из этой страны не принимают. Это, кстати, мог бы быть настоящий повод для возмущения в СМИ.
В итоге их устроила выписка со счета из банка с адресом. Сделал ее в Bank of Georgia. Что интересно, выписка делается через чат в приложении. Адрес можно назвать любой, никто не проверяет.

Итого, пройти верефикацию возможно. Но не факт, что с российским адресом.
С гуглом происходит какая-то хрень.

Спасибо за внимание.

PS: Мы подтвердили аккаунт и скоро стартуем наше приложение "Что почитать?"
А пока подписывайтесь на наш канал

Теги:
Всего голосов 6: ↑4 и ↓2+5
Комментарии2

«Мидл Android-разработчик» — новый курс Яндекс Практикума

Курс «Мидл Android-разработчик» — это углубленная 5-месячная программа, предназначенная для Android-разработчиков с опытом. Курс ориентирован на максимальное расширение прикладного кругозора разработчика. 

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

Вы научитесь тому, что отличает опытного разработчика от новичка:

  • Освоите современные архитектурные паттерны: научитесь применять принципы SOLID, Clean Architecture, а также работать с современными архитектурами UI, такими как TEA и MVI;

  • Сможете создавать сложные компоненты Jetpack Compose с анимациями, чтобы разрабатывать современные и эффективные пользовательские интерфейсы;

  • Изучите технологии, которые помогут решать разные задачи при разработке: интегрировать в приложения аудио и видео, разрабатывать функции с использованием геолокации;

  • Поймёте, как обеспечить стабильную работу приложения и оптимизировать его: освоите UI- и юнит‑тесты, научитесь настраивать CI/CD и оптимизировать приложение перед публикацией в Google Play.

Наши эксперты — опытные разработчики из Яндекса, Авито, Т-Банка и других топовых компаний, которые давно работают с Kotlin. Они составили программу, опираясь на свой опыт, поэтому вы будете учиться тому, что на самом деле пригодится.

Узнать о курсе подробнее

Теги:
Всего голосов 5: ↑4 и ↓1+5
Комментарии0

Не пытайтесь, это React Native + Flavor

Инсайт дня: React Native и flavor

В компании где я работаю, существует приложение написанное на нативных технологиях в лице — Kotlin/Swift.

Так вот, в приложение на андроид реализована система flavor, практически для более чем 80 компаний.

Попытка удешевить разработку, привела нас к React Native, так как у меня был немалый опыт разработки и работы с данным фреймворком.

С первого взгляда не было очевидно, но… оказывается в React Native поддержки подобного попросту нет от слова совсем.

Конечно, любой скажет «да ведь просто можно использовать переменную флейвора текущего приложения, и менять контент условностями» — но все не столь однозначно и просто… (ведь требование и цель использовать все преимущества этой концепции)

Как итог, если вы хотите реализовать концепцию flavor в полной мере, используя React Native (и вы четко понимаете как это работает в нативе) — то предупрежу сразу что у вас не получится, банально из‑за того, что вы получаете возможность настроить лишь ваши иконки и заголовки, ну и настройки на уровне андроид конфигов =)

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии1

Как OkHttp-клиент выполняет сетевой запрос под капотом

основные Interceptor-ы OkHttp. Взято из блога: https://t.me/dolgo_polo_dev/144
основные Interceptor-ы OkHttp. Взято из блога: https://t.me/dolgo_polo_dev/144

Коротко:

OkHttp-клиент — самый популярный сетевой клиент на Android, поверх которого часто используют Retrofit

Главное — он умеет много всего из коробки:

  • записывать/читать кэш, управлять им с помощью хэдера cache-control

  • управлять cookie и разруливать их атрибуты

  • устанавливать соединение по http1 и http2 (а по http3 нет, завидуем iOS-разработчикам)

  • выбирать сеть, по которой будет выполнен запрос

  • работать с DNS и направлять трафик через Proxy

  • поддерживает разные виды сжатия трафика

  • выполнять сам запрос, то есть как раз передавать байты по интернету. при этом "движок", выполняющий запрос, можно подменить

А возможно это все благодаря Interceptor-ам — цепочке колбеков, позволяющих прочитать/изменить запрос и ответ

Вы можете написать кастомные Interceptor-ы и добавить их в список appInterceptor-ов или networkInterceptor-ов

Или можете залезть в исходники OkHttp и посмотреть на его стандартные Interceptor-ы, в которых как раз и реализована вся вышеперечисленная магия

На картинке:

  • отличия между appInterceptor-ами или networkInterceptor-ами

  • стандартные OkHttp Interceptor-ы и их роль

остальные посты о сети и сетевых клиентах - @dolgo_polo_dev

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Лидерство в коде: технологии, сообщества и корпоративная среда

Привет! Это подкаст «Айтидо» от команды мобильной разработки Альфа-Банка 🎙

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

В первом выпуске подкаста мы поговорили с Никитой Збитневым, техлидом мобильной разработки

Поговорили о его пути в мобильную разработку через Java, как внедряются новые технологии в финтехе и почему многие переходят из корпораций в стартапы. Никита поделился лайфхаками о том, как он остается на одной волне с командой, развивает сообщество и успевает играть в D&D 🐉

🔗 RuTubehttps://alfa.me/bYzuxc

🔗 YouTubehttps://alfa.me/brD4Lx

🔗 ВКонтактеhttps://alfa.me/66Z_dt

Подписывайтесь на telegram-канал Alfa Digital, там много интересного о нашей корпоративной культуре и технологиях.

Теги:
Всего голосов 5: ↑4 и ↓1+5
Комментарии1

Вклад авторов