Обновить
512K+

Android *

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

Несмотря на то, что искусственный интеллект – наиболее хайповая тема в современных ИТ, и учитывая тот факт, что предыдущая мега-история с 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 не смогу вам ни чего дать на данный момент.

интересно

Кастомная тема Jetpack Compose

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

Уверен, что каждый, кто использовал цветовые схемы в Android приложениях для раскраски интерфейса, хоть раз задавался вопросом "А как можно поменять скучные цвета primary, secondary, tertiary и др. на свои?" В этой статье речь пойдет как раз про использование своей цветовой схемы для работы с приложением.

Читать далее

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

Пишем своё приложение для установки PIN на другие приложения

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

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

Читать далее

Что стоит знать о Jetpack Compose: руководство для начинающих

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

Салют, Хабр! На связи Вадим, Android Developer из Clevertec. Когда я начинал разбираться с Jetpack Compose, он показался простым. Но первое впечатление обманчиво. Поэтому написал этот туториал для начинающих, который сэкономит время на погружение.

Читать далее

«Арендовал телефон — стал фермером»: знакомство с Mobile Farm

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

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

С тех пор многое изменилось: ферма мобильных устройств вышла в релиз, разрослась до 100+ устройств разных моделей и форм-факторов, а в панели управления появился крутой интерфейс. Хочу вкратце рассказать о наших достижениях за последний год и показать, как живет продукт сегодня. Подробности под катом!
Читать дальше →

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

Время на прочтение4 мин
Охват и читатели3.5K
В новом дайджесте конвейеры мобильного развертывания за $0 и нестрашный Metal, Selenoid без симуляции и странные описания в Play Store, адаптивная верстка на React Native, упадок мобильной разработки, оптимизация пейвола и многое другое. Подключайтесь!

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

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

Мастер-аккаунт Zeekr. Как Arduino поможет Вашему китайскому авто?

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

Что происходит когда у Вас гаджет на колесах с одной стороны, и Вы уже окрыленные тем, что Arduino скетчи Blink и Hello_world у Вас получилось запустить? Правильно, приходит мысль, как это можно соединить.

Читать далее

Мобильная разработка за неделю #548 (22 — 28 июля)

Время на прочтение4 мин
Охват и читатели6.3K
В нашей новой еженедельной подборке стенд для UI-тестирования iOS-приложений и реверсинг приложений под Android, Android Studio в вебе и будущее Flutter, результаты опроса разработчиков Stack Overflow 2024, дизайн-тренды 
2025, топ быстрорастущих приложений в России в июле и многое другое. Подключайтесь!

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

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

PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose

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

В данной любительской статье разберемся, что такое KeyStore в контексте мобильной разработки, для чего нужен и применим его в крайне легком варианте. Также погрузимся в разработку экрана входа в ваше приложение. Статья будет разделена на 3 так называемых раздела — KeyStore, UI и ViewModel.

Читать далее