Обновить
512K+

Android *

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

197,3
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

$1697 за выключатель кондиционера: DIY ремонт управляющего планшета

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели24K

Примечание переводчика: Представьте себе ситуацию, когда ваша система кондиционирования воздуха полностью исправна, но перестает работать из-за отказа простого планшета, который служит обычным выключателем. Вам предлагают решить проблему, заменив всю систему за $1697. Эта история — не просто рассказ о возмутительной ценовой политике, а о том, как инженерный подход и немного упорства могут сэкономить вам кучу денег. В этой статье автор делится своим опытом DIY-ремонта, который позволил ему обойтись без ненужных затрат и вернуть контроль над системой кондиционирования.

Заставлять клиентов менять всю систему из-за поломки самого дешевого компонента — возможно, и выгодно, но меня это так взбесило, что я решил разобраться сам. Я понимаю, что мои действия могут оказаться сложными для большинства пользователей Advantage Air, но в ходе моего исследования я выяснил, что причина несовместимости современных планшетов с более старыми системами управления кроется только в программном обеспечении. Если бы они просто добавили в свои приложения функцию выбора "системы", это решило бы проблему для всех, а их кастомный POE-разъем все равно бы заставлял использовать их оборудование.

Читать далее

Mapping объектов с помощью MapStruct

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели6.4K

В огромном приложении Android с Clean Architecture много рутинной работы, связанной с отображением объектов между различными слоями. Хорошим решением будет автоматизация этого процесса.

В этой статье рассматривается опыт использования библиотеки MapStruct, которая помогает mapp-ить объекты.

Библиотека очень гибка в настройке. И позволяет минимизировать написание шаблонного кода.

Вот пример того, как реализовать gradle зависимости в вашем проекте.

Читать далее

Как я ускорил свое мобильное приложение BookDesk на React Native в 3 раза?

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели6K

Всем привет! В этом материале я поделюсь с вами практическим опытом по оптимизации своего мобильного приложения на React Native. Я расскажу как я ускорил свое приложение в 3 раза.

Я разрабатываю свое мобильное приложение BookDesk для хранения прочитанных книг. Предыдущие серии: 123

Читать далее

Как переход на AGP&Gradle 8.* изменил взгляд на работу с производительностью сборки

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.3K

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

Меня зовут Богдан Мащенко. Я Android-разработчик в платформенной команде Одноклассников. В этой статье я расскажу о нашем опыте перехода на AGP (Android Gradle Plugin) и Gradle версий 8.*: что стало причиной перехода, как преодолевали трудности, и что мы смогли получить в результате.

Читать далее

Kotlin Coroutines. От А до Я

Уровень сложностиПростой
Время на прочтение28 мин
Охват и читатели95K

Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании!
Разберем разницу между многопоточностью и асинхронностью; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope.

Let's go

Понимание прогноза глюкозы AndroidAPS

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели2.8K

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

Читать далее

Из истории ОС к дню Linux

Время на прочтение7 мин
Охват и читатели15K

В 1991 год произошли сразу два важных события, сыгравших огромную роль в развитии информационных технологий: 17 мая – день рождения Интернета, а 25 августа – день рождения Linux (один из четырёх).

Когда-то давно под каждый компьютер разрабатывались свои системы, пока не стало ясно - нужно делать операционную систему, менее зависимую от железа. В 1960-х появилась ОС UNIX, а в 1980-х берут начало Windows и UNIX-подобная система от Apple.

Сегодня предлагаем окунуться в историю операционных систем. А бонусом обсудим, почему Doom – это ОС. 

Читать далее

Web-версия кулинарного android-приложения SystemCook

Время на прочтение6 мин
Охват и читатели2K

Сразу выдам ссылки на скачку того, о чем пойдет речь, чтобы ничего не потерялось и никто не теребил меня, что и где искать/качать (бесплатное и безрекламное android-приложение):

Скачать с Google Play

Прямая ссылка (если скачка с гугл-плей недоступна)

Ссылка вконтакте на видеообзор SystemCook v14.0 (если у вас проблемы с youtube)

Ранее про SystemCook я уже рассказывал на хабре в двух предыдущих статьях тут и тут. Знаю, что много хабровчан пробовало старые версии приложения в процессе разработки, т.к. веду статистику и "мёртвых" аккаунтов у меня в базе полным-полно (кстати, если кто потерял пароль - пишите на мыло, напомню, только скажете, на какой email регистрировались). Сейчас я подытожу, что в итоге у меня вышло, расскажу свои дальнейшие планы и буду ждать от вас фидбека в комментариях.

Прогресс за три года разработки, с июня 2021:

Читать далее

Выносите ViewModel из Compose функций

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.3K

В нашу жизнь андроид разработчиков уже прочно вошел фреймворк Compose. И при создании composable функций возникает соблазн добавить в качестве параметра viewModel. А уже в самой compose функции подписываться на состояния, которые находятся внутри viewModel. Я хочу рассказать, почему так делать не стоит, а передавать в качестве параметров простые классы.

Читать далее

Почему мы решили перейти с JUnit4 на JUnit5

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели4.7K

Меня зовут Александр Чекунков, я — Android‑разработчик в СБЕРе. Занимаюсь разработкой CSI‑опросов в мобильном приложении «СберБанк Онлайн». Я несу ответственность за функциональность, которую используют бизнес‑команды для оценки удовлетворённости клиентов.

Не так давно, в нашем проекте мы приняли решение перейти с JUnit4 на JUnit5. Эта статья поможет разобраться в причинах выбора JUnit5 в качестве целевого решения для написания unit‑тестов. Я постараюсь ответить на ключевые вопросы: что делает JUnit5 предпочтительным выбором для современных проектов, и какие конкретные улучшения и нововведения он предлагает?

Читать далее

Мечтают ли Андроиды о нейропроцессорных модулях? Перенос модели TensorFlow Lite в мобильное приложение

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели2.8K

Несмотря на то, что искусственный интеллект – наиболее хайповая тема в современных ИТ, и учитывая тот факт, что предыдущая мега-история с Internet of Things и Edge Computing до сих пор не забылась, я удивился, что отсутствуют внятные обучалки типа «Hello world» по добавлению machine learning в мобильные приложения на Android. Ну они конечно есть, только совсем не начального уровня. Кроме того, в них предлагается использовать чужие модели для распознавания кошек от собак и рукописных букв в текст итд. Но вот чтобы взять регрессию и с ней поработать – нет (или я не нашел). И в книгах не нашел. Если есть – поделитесь. Ну а пока я буду добавлять свою модель в приложение и параллельно писать этот текст.

История моего приложения есть в публикациях 1, 2, 3. Если коротко, это программа RuLearn для запоминания лексики в иностранных языках или в любой другой области, которая требует механического заучивания. Ее эффективность определяется «кривой забывания» Эббингауза, но как выясняется, интервалы для повторения хорошо было бы адаптировать под сложность изучаемого материала. То есть обучающийся учит новые слова, а приложение учится на его ошибках и подстраивает алгоритмы повторения оптимальным образом. Напрашивается машинное обучение в обучении человека.

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

Читать далее

Мобильная разработка за неделю #506 (12 — 18 августа)

Время на прочтение4 мин
Охват и читатели3.3K
В новом дайджесте закрытие CocoaPods и излишества чистой архитектуры, деструктуризация в Kotlin с примерами и знакомство с Flutter GPU, архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем, кто может стать программистом, сокращение количества вакансий для разработчиков и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

Читать дальше →

Key-Value Хранилище на Стероидах

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели3.1K

Как абстрагироваться от Key-Value хранилища и забыть про бойлерплейт внутри репозиториев с помощью Kotlin делегатов

Читать далее

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

Передача данных между фрагментом и BottomSheetDialogFragment с использованием Dagger и Navigation Component

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели2.5K

Передача данных между фрагментом и BottomSheetDialogFragment может быть эффективно организована с использованием Dagger и Navigation Component, избегая использования передачи данных чрез конструктор или интерфейс, а также SharedViewModel и Hilt. Данный подход позволяет сосредоточиться на интеграции зависимостей и управлении состоянием через стандартные инструменты.

Читать далее

Машинное обучение в обучении человека. Развитие проекта RuLearn

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели3.8K

Уже больше года я занимаюсь проектом RuLearn. Это довольно большое мобильное приложение на ~10000 строчек кода, которое реализует метод интервальных повторений, об истории проекта можно прочитать в моих предыдущих публикациях 1 и 2. Проект получился удачным, и даже побывал в числе победителей школьного московского конкурса "Инженеры будущего". Школьного, потому автор проекта - школьник :)

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

Как я провел летние каникулы

Вредные советы, как приходить с вопросами к техлиду

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели9.7K

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

Важный дисклеймер: это вредные советы, и так делать не нужно!

Читать далее

Сложности масштабирования Kotlin Multiplatform

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4K

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

Читать далее

Когда ваше приложение умирает – жизненный цикл activity в Android для QA

Время на прочтение11 мин
Охват и читатели13K

Если вы не знаете, что такое don’t keep activities, и не понимаете, что может произойти с приложением, когда вы его сворачиваете или когда меняете тему системы на тёмную, то можете считать, что ваше приложение не протестировано!

Что происходит под капотом вашего android приложения, зачем это знать тестировщику, какие критические сценарии можно и нужно проверять основываясь на жизненном цикле activity, и как это убережёт вас от краша на проде.

Читать далее

Мобильная разработка за неделю #550 (5 — 11 августа)

Время на прочтение4 мин
Охват и читатели4.2K
В нашем новом выпуске автоматическое обнаружение утечек памяти в CI/CD с помощью UI-тестов, эффективная работа с legacy кодом Medium и новая версия Flutter, знакомство с Mobile Farm, тестирование платежей в проде, дейтинг-приложение, работающее только по четвергам и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

Читать дальше →

FPC/Lazarus и Android

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели21K

Всем привет, кто не знает меня зовут Сергей! И в очередной статье я задену разработку на Object Pascal.

В настоящее время и Delphi и FPC/Lazarus (FPC - free pascal compiler, Lazarus - IDE) поддерживают сборку под разные платформы.

В данной статье ознакомлю вас с возможностями разработки Android-приложений средствами FPC/Lazarus, в том числе и игр. И так же немного добавлю информации по Delphi, чтоб проще было искать нужную вам информацию, если вы используете данную среду разработки, но по самой разработке в Delphi не смогу вам ни чего дать на данный момент.

интересно