Обновить
512K+

Android *

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

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

Как следить за состоянием мобильного приложения?

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

Знакома ли вам ситуация, когда вы спокойно работаете, а клиентская служба передаёт вам странный репорт: несколько пользователей жалуются, что в приложении не грузятся картинки, но у вас всё работает. Или пользователь пишет в Google Play, что приложение занимает несколько гигабайт, и вы не понимаете, сколько таких пользователей и что с этим делать. Нужно ли срочно бросаться чинить, или это может подождать следующего планового релиза?

Согласитесь, было бы здорово узнавать о проблемах раньше, чем пользователи начнут жаловаться в поддержку. Сегодня я расскажу, как мы в Циан создавали Техническую Мобильную Аналитику (ТьМА) и получили возможность в любой момент времени ответить на вопрос: «Всё ли в порядке с приложением?»

Читать далее

Gradle Convention Plugins: как облегчить себе жизнь и уменьшить boilerplate в gradle-файлах

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

Привет, Хабр! Я Дима Котиков, ведущий android-разработчик в Т-Банке. Работаю в команде приложения Долями. Разработкой под Android начал увлекаться в 2020 году, а потом хобби переросло в работу. Люблю разбираться в технологиях, разрабатывать под Android и KMP и латте на фундучном молоке :)

Я расскажу о том, как облегчить работу с Gradle с использованием Gradle Convention Plugins. Всю информацию я разбил на серию статей для удобства. Они будут полезны всем, кто пользуется Gradle в качестве сборщика проектов. В первой части поговорим о проблеме с build.gradle-файлами и сделаем начальную настройку для написания Gradle Convention Plugins.

Читать далее

Мобильная разработка за неделю #555 (9 — 15 сентября)

Время на прочтение4 мин
Охват и читатели3.6K
В этой подборке детективное расследование утечки памяти с Xcode и перегруженная Android-разработка, удовольствие и боль BDUI, $50K на простой AI-обертке, дейтинг для трезвых, конец миллиардных стартапов, поддерживаемых рекламой, и многое другое. Подключайтесь!

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

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

В Android блокируют установку приложений из сторонних источников. Почему это важно?

Время на прочтение4 мин
Охват и читатели148K
image

Источник: androidauthority.com

Сразу скажу, что это не централизованное блокирование со стороны самой корпорации Google. Нет, компания просто разрешила самим разработчикам ПО закрывать возможность загрузки их приложений из сторонних источников. Включая и установку посредством APK-файлов. Вполне может быть, что некоторые разработчики коммерческих приложений, популярных среди пользователей, этой возможностью могут воспользоваться. Что случилось и к чему это может привести?
Читать дальше →

База джуна на Flutter

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

Йоу, юзер! Данная статья будет являться вводной в серию статей о том, какой базой должен обладать разработчик для первой коммерции на Flutter. Интересно? Тогда ныряй в статью!

Нырнуть в статью

Пишем простенький DI для Android приложения

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

Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение.

Читать далее

ViewModels в Android: «за» и «против». Часть 2

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

Продолжение первой части цикла. В первой части мы разобрались в причинах, по которым загрузка данных в блоке init{} может помешать прогрессу; изучили наиболее рациональные методы организации пользовательского интерфейса и логики приложения с помощью ViewModels. Также мы обсудили простые решения и важные тактики, позволяющие избежать часто встречающихся подводных камней.

В этой части мы продолжим фокусироваться на важных принципах разработки и оптимизации ViewModel в Android, направленных на улучшение архитектуры приложения и повышение его производительности. Рассмотрим подробнее рекомендации, касающиеся раскрытия изменяемых состояний, использования update{} при использовании MutableStateFlows и «ленивого» внедрения зависимостей в конструктор.

Читать далее

Ускоряем Android-приложения с помощью Baseline Profiles

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

Привет, меня зовут Даниль Гатиатуллин, я инженер юнита Performance в Авито. В этой статье я рассказываю, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.

Читать далее

BDUI: удовольствие или боль

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

Backend Driven UI (BDUI) — это подход, при котором сервер управляет не только данными приложения, но и формирует интерфейсы, включая экраны, верстку, реакции на действия пользователя и переходы между экранами. Клиентская часть сводится к рендерингу интерфейсов на основе полученных с сервера данных.

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

На бумаге такие идеи кажутся идеальными, иногда даже «серебряной пулей». Однако на практике всё не так однозначно, и многое зависит от конкретного кейса. В этой статье я поделюсь опытом нашей компании, расскажу о нюансах, которые позволили нам извлечь пользу из BDUI, и представлю рабочий инструмент. Мы использовали нестандартные подходы, которые, надеюсь, вдохновят вас. Похоже, что для нас BDUI — это скорее удовольствие, чем боль. Давайте разберёмся, как нам это удалось!

Читать далее

Основы Jetpack Compose: как обеспечить стабильность вашего кода

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

Привет, меня зовут Вера, я Android‑разработчик в Яндекс Диске. Мы в Диске сейчас активно работаем над переездом на Compose с использованием дизайн‑системы. Про стабильность в Compose есть немало статей, однако ошибки продолжают cовершаться, поэтому решила поделиться своим опытом в формате ликбез‑статьи.

По моему опыту, многие кто начинают писать на Compose, делают это интуитивно. Почему? Чтобы привыкнуть, понять, осознать подход к декларативному UI — нужно много времени, и поэтому к пониманию стабильности приходят, как правило, сильно позже. Однако это важно, ведь правильно организованная стабильность уменьшает количество рекомпозиций, что улучшает производительность и плавность работы приложения.

Читать далее

Мобильная разработка за неделю #554 (2 — 8 сентября)

Время на прочтение4 мин
Охват и читатели3K
В нашем новом дайджесте доступ к данным банковских приложений и интересные приёмы в исходниках Android, атомный лоадер на Jetpack Compose и переход на инхаус-разработку, своя органика в сторах, рекорды дальности связи, стереотипы об автотестах ит многое другое. Подключайтесь!

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

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

Защита мобильных приложений. Записки охотника: Почему Appdome иногда такой себе Dome

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

В статье расскажу случай из практики анализа защиты приложений Android. Имена и место событий изменены. Любые совпадения — случайность)

Читать далее

Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso

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

Всем привет!

Меня зовут Сергей Дударев, я руководитель направления автоматизированных тестов в департаменте мобильной разработки «Лаборатории Касперского». В этой статье хочу рассказать, как я прошел путь от Appium до open-source-фреймворка Kaspresso, с чего начинал, какие делал для себя открытия, как разрушались мои стереотипы и какие по итогу были сделаны выводы.

Читать далее

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

Vivaldi 6.9 для Android — Настройся по-новому

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

Не всегда изменений должно быть много - иногда достаточно одного, но очень важного улучшения. Встречайте Vivaldi 6.9 для Android.

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

Читать далее

Интересные приёмы, взятые из исходников Android

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели24K
Интересные приёмы, взятые из исходников Android

В процессе чтения исходников Android SDK я замечал интересные механики и приёмы написания кода, какие-то из них до сих пор используются при создании новых библиотек, другие, напротив, заменены более логичными и понятными конструкциями. В этой статье я постараюсь перечислить всё, что смог заметить сам при изучении исходников Android'а. Сразу отмечу: эта статья не претендует на полноту материала и возможно вы нашли даже больше интересных моментов при чтении кода, ладно, погнали, короче!
Читать дальше

Фокус в Android TV

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

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

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

Читать далее

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

Время на прочтение4 мин
Охват и читатели3.3K
В этом выпуске борьба с утечками памяти и 10 самых распространенных ошибок с Jetpack Compose, подходы к многомодульной функциональной архитектуре и реализация pixel-perfect тестирования дизайн-системы, 2.5 тысяч экрано-состояний и тесты на сотнях устройств, причины не использовать Server Driven UI, «осознанные» истории Calm и многое другое. Подключайтесь!

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

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

Снифферы трафика в мобильном тестировании: Обзор инструментов и их особенности

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

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

Давайте узнаем, как хватать и чем траффик.

Читать далее

Построчный разбор determine-basal.js в Android APS

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

Давайте разберем файл determine-basal.js в Android APS построчно.

Это основной файл для расчета количества необходимого инсулина.

Читать далее

Параметр определяющий в Android APS необходимое количество введения инсулина

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

Рассмотрим какой параметр отвечает за расчет необходимого объема введения инсулина.
В предыдущей статье мы определили что таким параметром является insulinReq, здесь же рассмотрим его в контексте разных режимов введения инсулина, а именно basal и SMB.

Чтобы точно ответить на вопрос поисследуем основной файл - determine-basal.js

Читать далее