Как стать автором
Обновить
60.96
Рейтинг

Разработка под Android *

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

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

Запросы в сеть с Clean Architecture и MVVM. Boilerplate ч. 2

Разработка мобильных приложений *Разработка под Android *
Tutorial

Что такое чистая архитектура, зачем использовать? Сегодня я не отвечу вам на эти вопросы :) (для этого существуют много других хороших статей одна из них Заблуждения Clean Architecture) Но отвечу на то как реализовать Clean Architecture в Android'е по крайней мере покажу вам свою реализацию.

Для общего понятия что здесь будет происходить вам нужно уметь пользоваться такими технологиями как: Coroutines, Retrofit 2, Lifecycle, Hilt. Ну приступим!

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 1.3K
Комментарии 6

Новости

Как и зачем собирать Android приложение в docker контейнере

Разработка под Android *DevOps *
Из песочницы

Добрый день, уважаемые читатели.

Я - Владимир, меня зовут девопс. Говорят, что девопс - это болезнь и я это вам сегодня докажу.

Ответа на вопрос "зачем?" вы тут не найдете, это кликбейт, я и сам не знаю. Все происходящее мотивируется девизом "бекоз ай кен".

Если без шуток, то можно прогонять процесс сборки, создавать изолированные тест-кейсы, прогонять через автотесты, SonarQube и прочие SAST-ы

Итак. Дано. Один безумный девопс, один несчастный андроид-разработчик, собирающий апк локально. Ситуация, увы, распространенная.

Под катом описание Dockerfile с подробностями и нюансами.

Процесс создания Dockerfile
Всего голосов 10: ↑7 и ↓3 +4
Просмотры 4.9K
Комментарии 3

Браузер Vivaldi — мобильный автомобильный

Блог компании Vivaldi Technologies AS Разработка под Android *Браузеры

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

В прошлом году мы уже представили браузер Vivaldi для топовых электромобилей Polestar - проекта, развивающегося под контролем Volvo. А сегодня рады объявить о новом достижении - наш браузер теперь получает прописку в бортовой системе OpenR Link новых автомобилей Renault. Водители смогут легко установить Vivaldi для OpenR Link в свои новые Megane E-Tech Electric и All-New Austral, а также в будущие автомобили французского производителя, оснащённые системой OpenR Link. И это замечательная новость.

Читать далее
Всего голосов 6: ↑1 и ↓5 -4
Просмотры 1.3K
Комментарии 2

Как работает UI в Android. Не все так сложно

Разработка под Android *

Одна из фундаментальных тем в разработке под Android это работа с UI. Понимание того, как работает UI не даст многого в практическом плане, зато уменьшит вероятность того, что вы натворите полную дичь.

Это статья должна дать хоть и не исчерпывающее представление о том как работает UI в Android, но простым языком объяснит основные концепции и на каких сущностях он построен.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 4K
Комментарии 2

Chrome на Android сломал чужие MitM-сертификаты, но это можно исправить

Блог компании GlobalSign Информационная безопасность *Google Chrome Разработка под Android *Браузеры


Прозрачность сертификатов (CT) — отличный проект компании Google, который сейчас фактически стал стандартом де-факто в интернете. Серверы CT показывают все выпущенные EV-сертификаты в открытых и общедоступных источниках.

Всё работает отлично до тех пор, пока не сломается.

В частности, в последнее время браузер Chrome создал ряд проблем под Android, фактически заблокировав работу сторонних приложений, таких как снифферы, MitM-прокси и средства разработки. Эти программы устанавливают в систему собственные доверенные сертификаты для перехвата и разбора трафика.
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 3.6K
Комментарии 6

О чём расскажут на Mobius 2022 Spring: декларативный UI, глубокие ссылки и многое другое

Блог компании JUG Ru Group Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Конференции

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

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

И сейчас, когда большинство тем докладов уже известно, расскажем Хабру, о чём именно они будут.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1K
Комментарии 1

Знакомьтесь: библиотека TiRecycler

Блог компании TINKOFF Разработка под Android *

Всем привет! Меня зовут Александр Гузенко, и в Тинькофф я занимаюсь всякими техническими вещами вроде CI/CD, gradle и внедрением новых подходов. Хочу рассказать вам про библиотеку, которую мы создали в команде Тинькофф Бизнеса, когда столкнулись с многословными адаптер-делегатами.

Прочитать подробнее
Всего голосов 22: ↑21 и ↓1 +20
Просмотры 4K
Комментарии 2

Как я перестал бояться и начал делиться секретами с телефоном

Информационная безопасность *Разработка мобильных приложений *Разработка под Android *

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

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

Да, есть не очень многочисленные приложения, которые работают оффлайн, то есть все данные хранятся на телефоне. Даёт ли это какие-то гарантии приватности? Возможно, но едва ли от производителя ОС или телефона, потому что все данные хранятся в открытом виде. Хорошо, есть ли какие-то оффлайн приложения, которые шифруют хранимые данные (или, как это называют по-английски, “encryption at rest”), и делают это относительно удобным способом? И вот тут меня ожидал большой облом. Ну что же, как говорится, “хочешь что-то сделать хорошо – сделай это сам”. Так возник мой проект “Дневник Параноика” (“Paranoid Diary”). Ну и, поскольку лично я предпочитаю Андроид, проект возник именно на этой платформе.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 6.3K
Комментарии 15

Дайджест интересных материалов для мобильного разработчика #442 (9 — 15 мая)

Блог компании Productivity Inside Разработка под iOS *Разработка мобильных приложений *Разработка под Android *
В нашем новости дайджеста анонсы с Google I/O 2022 и выселение Carthage из git, загадочный WorkManager и замена натива веб-приложением, регрессионное тестирование, вопросы с собеседования, миллиарды уведомлений в месяц и многое другое. Подключайтесь!

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.9K
Комментарии 0

Как я игрульку создал: ч. 1 Предыстория и идея, ч. 2 Игрок и сборщик уровней

Разработка игр *Разработка под Android *C# *Unity *Игры и игровые консоли
Из песочницы

Здравствуй, Хабр!

Я хочу поделиться опытом в создании одной гиперказуалки. Сам я, правда, ещё совсем зелен и юн на этой тернистой тропе игроделания, но может кому-то станет интересно и он прочтёт цикл этих статей. Самого кода здесь не будет, а если и будет, то в очень мизерных количествах, в связи с чем вряд-ли эти статьи будут интересны людям, которые хотят применить главную основу программирования "Ctrl+C/Ctrl+V" да и так как я сам новичок то заядлым "про" тут тоже будет скучновато, а плюсом на них может наложиться дебафф "BloodFromTheEyes" от порой наинеумнейших решений наиглупейших проблем. Но всё же опыт есть опыт, так что расскажу что есть.

Хочу прочесть!
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 5.5K
Комментарии 9

Дайджест недели (мобильная разработка) – #2

Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Kotlin *Flutter *

Главным событием этой недели было Google I/O, на которой представили некоторые нововведения, зарелизили ряд новых версий библиотек и инструментов. Из интересного: вышла вторая Beta Android 13, запустили сервис Google Play SDK Index, представили Flutter 3, выложили исходники приложения Now in Android. Все ссылки в дайджесте.

Дайджест и другие полезные материалы для мобильных разработчиков доступны в моем тг-канале Mobile Native, присоединяйтесь.

Android 🤖

• 13 Things to know for Android developers at Google I/O!
• Google Play SDK Index
• Что нового в инструментах Android-разработки
• Что нового в Jetpack Compose (Beta 1.2)
• Now in Android - a new, open source, real-world sample app
• Вышла вторая Beta Android 13
• Android Lint. Подборка
• Fragula – swipe-to-dismiss extension for navigation component library for Android
• Письмо счастья: как мы разделили наши сборки для AppGallery и Google Play
• Compose performance
• Jetpack DragAndDrop Released 1.0.0
• Here's a productivity hack to save tens of engineering hours* when working with Jetpack Compose!
• Android Studio Chipmunk Released
• Understand Proguard Generated Files and Manually De-obfuscate Stacktrace
• Build a Custom IntelliJ Code Inspection Plugin
• How To Use Android’s Proto DataStore With Kotlin Support
• The Guide To Your First Annotation Processor with KSP (And Becoming A Kotlin Artist)
• Airbnb uses Jetpack Compose to empower devs to do their best work

iOS 🍏

• Apple отключила оплату в App Store со счёта мобильного у «Мегафона», Yota и Tele2
• Write Beautiful Code With Swift Result Builder
• Modeling errors in Swift
• A flexible way to handle and alert errors in SwiftUI
• How do we use SwiftUI in the Medium iOS application
• Заполнители типа в Swift: что это такое и когда их следует использовать
• On iOS applications architecture
• 5 актуальных расширений Xcode для оптимизации разработки
• 10 Tips and Tricks for Swift Developers
• How to Read Websites in SwiftUI — Data Scraping in iOS
• Swift: A few tips for improving code quality
• SSL/Certificate Pinning — iOS 14.0 Never easy before
• Clean Architecture: iOS App
• Creating hex-based colors in UIKit, AppKit and SwiftUI
• Core Data Relationship in Swift 5— made simple
• Building a document scanner in SwiftUI
• Bottom Sheet, shall we drop the formalities?
• Introduction to Dependency Injection with Needle - The Uber Way
• SwiftUI Still Isn’t Production-Ready

Читать далее
Всего голосов 6: ↑1 и ↓5 -4
Просмотры 1.2K
Комментарии 0

Четыре всадника апокалипсиса джуниора Android разработчика

Разработка под Android *
Из песочницы

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

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

Читать далее
Всего голосов 6: ↑3 и ↓3 0
Просмотры 4.5K
Комментарии 4

19 мая Ozon Tech × Сoffee&Code приглашают на Mobile Meetup: перформанс и Backend-Driven UI

Блог компании Ozon Tech Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Конференции

Привет! Меня зовут Саша Свиридов, я руковожу отделом мобильной разработки в Ozon. В моей команде чуть больше 80 человек — это Android- и iOS-разработчики и QA-инженеры. Мы делаем основное приложение Ozon для покупателей. Моя команда состоит из семи кроссфункцинальных групп разработки, каждая из которых отвечает за определенный скоуп задач. Спектр наших задач очень широк: мы разрабатываем чаты на сокетах, работаем с картографией, с потоковым видео, пушами, с аналитикой, со сложным UI. Пожалуй, у нас нет только GameDev:)

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

Чем поделимся на митапе:

— Какие метрики собираются и как мы боремся за перформанс приложения.

— Как мы делали плавный скролл для нагруженного UI, и при этом не переверстали все приложение. Рассмотрим необычные подходы, которые мы опробовали на практике, и расскажем, что из этого получилось.

— Как работает новая модель многопоточности. На примерах разберём, что нового появилось в Swift и как это подружить со своим кодом. 

— Круглый стол, на котором мы обсудим темы, предложенные вами при регистрации на мероприятие.

Подробнее про наш стек и программу — под катом.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 806
Комментарии 0

Письмо счастья: как мы разделили наши сборки для AppGallery и Google Play

Блог компании HeadHunter Разработка мобильных приложений *Разработка под Android *

В марте Google Play стал рассылать письмо-предупреждение для разработчиков, использующих Huawei Mobile Services в своих мобильных приложениях. И в этом письме было сказано, что использование HMS в сборках для Google Play противоречит политикам стора приложений, а на решение проблемы дается 120 дней. В противном случае Google Play обещает перестать принимать обновления для таких приложений.

После получения такого “письма счастья” мы окончательно убедились, что наша единая сборка приложения для всех сторов с переключением платформенных сервисов в рантайме – не самое надежное решение в столь изменчивом мире. В общем, мы решили оперативно перейти на раздельные сборки. Особенность нашего решения в том, что мы сохранили GMS+HMS сборку приложения для AppGallery, добавив в наш проект возможность сделать чистую GMS-сборку для Google Play. Мы использовали флейворы, но в связке с многомодульностью нам удалось затащить под флейворы лишь минимальное количество кода. 

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

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 3.1K
Комментарии 4

Android Studio. Kotlin. Подключение Google календаря через Content Provider

Разработка под Android *Google API *Kotlin *
Tutorial

Подробно с демонстрацией своего кода рассказываю о том, как я реализовал в своем приложении на Kotlin добавление, редактирование, удаление и чтение событий из Google календаря при помощи Content Provider. Описываю "грабли", на которые наступал, не найдя в сети помощи и поддержки в тяжелое для себя время...

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 1.4K
Комментарии 4

Дайджест недели (мобильная разработка) – #1

Разработка под iOS *Разработка мобильных приложений *Разработка под Android *Kotlin *Flutter *
Из песочницы

Привет, Хабр! Каждую неделю, в своем телеграм-канале Mobile Native, я публикую дайджест с интересными и полезными материалами (новости, статьи, инструменты, библиотеки и т.д.) для мобильных разработчиков. Решил попробовать публиковать эту рубрику и на Хабре. Посмотрим, что из этого получится.

Android 🤖

• Dependency Inversion Principle: How Google Developers write code
• Как мы используем фича-флаги в мобильном приложении QIWI Кошелек
• Google запускает бесплатный курс Android Basics with Compose
• Опубликована программа Google I/O
• The first developer preview of Privacy Sandbox on Android
• Google Play запретил разработчикам загружать и обновлять платные приложения в России
• Learn Dagger 2 to Hilt for Android Easily in under 10 Minutes
• Jetpack Compose Dropdown
• S.O.L.I.D Principles (Examples in Kotlin)
• Kotlin-inline, crossline, noinline function and reified: Everything you need to know(Android) — Part 1
• 7 things to keep in mind while building jetpack composable’s.
• Architecture MAD Skills series wrap up
• Топ вопросов работодателю от Android-разработчика
• Isolate Koin Within an Android Module
• Kotlin, обрабатываем исключения в корутинах правильно
• The curious case of crashing Workers
• Material Components Android 1.6.0 Released
• Конвергенция в многомодульном приложении
• Passive Views: keep your UI code simple and stupid
• CI-CD: Firebase App Distribution with Fastlane on Android
• Creating reliable tests for Android notifications

iOS 🍏

• I replaced my native iOS app with a cross platform web app and no-one noticed
• Measuring app performance in Swift
• Types of memory in swift
• Improve Performance in Your iOS Applications — Part 1
• Swift 5.7: Unwrapping Optionals Gets an Improvement
• Clarifying criteria & new timing extension for App Store Improvements process
• Тест-ревью: как прошли два года написания unit-тестов
• Is It Possible to Have a Half-modal View in SwiftUI?
• Swift visitor design pattern
• Two Ways to Unit Test Notification Center in Swift
• Send Events from SwiftUI to UIKit and Vice Versa
• AsyncThrowingStream and AsyncStream explained with code examples
• AttributedString’s Codable format and what it has to do with Unicode
• SwiftUI Supporting External Screens
• Flow Navigation With SwiftUI (Revisited)
• Делаем патч для Pods библиотеки
• Как нативно визуализировать голос в iOS
• 6 Tips to improve Coding of Swift

Читать далее
Всего голосов 4: ↑2 и ↓2 0
Просмотры 1.5K
Комментарии 0

Kotlin, обрабатываем исключения в корутинах правильно

Разработка мобильных приложений *Разработка под Android *Kotlin *
Перевод

Возможно вы думаете обработка таких исключений происходит как обычно в Kotlin/Java коде. К сожалению, при использовании вложенных корутин, все может работать не так как ожидается.

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 3.1K
Комментарии 0

Как мы используем фича-флаги в мобильном приложении QIWI Кошелек

Блог компании QIWI Программирование *Разработка мобильных приложений *Разработка под Android *Kotlin *

Привет, Хабр! 

Меня зовут Василий Материкин, я — Android-разработчик в QIWI. В этом посте я расскажу о применении фича-флагов в QIWI Кошельке.

Внедрение Trunk-Based Development и Feature Flags

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

Поэтому мы решили перейти на Trunk-Based Development (TBD). TBD предлагает работать в небольших ветках и, желательно, чтобы они как можно быстрее были влиты основную ветку. Для этого, конечно же, реализацию нового функционала нужно оформлять небольшими пулл-реквестами, чтобы они быстро проходили ревью и были влиты в основную ветку. Это, в свою очередь, создает другую проблему — когда в главной ветке может появиться код, который ещё не готов к релизу, но при этом нам нужно как-то релизить с этим кодом приложение. Мы же релизы выпускаем достаточно часто. И для этого TBD предлагает пользоваться такими подходами, как Branch by Abstraction (BBA) и Feature Flags (FF).

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

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 2.3K
Комментарии 0

Как начать писать приложения на ClojureDart

Разработка под iOS *Lisp *Разработка под Android *Clojure *Flutter *

16 апреля зарелизился ClojureDart, а это значит, что для любителей Clojure открылась возможность писать мобильные, веб- и десктоп-приложения на Flutter. Зачем использовать для этого Clojure, как бы очевидно это ни было, выходит за границы фокуса статьи.

На текущий момент инструменты еще не отшлифованы, нет репла(!) и автодополнений для dart-интеропа, но пользоваться можно, и некоторые плюшки кложуры уже показали себя (например, nest-макрос, убирающий проблему вложенности).

В этой статье хочу рассказать, как написать свое первое flutter-приложение на Clojure, какими инструментами удобно пользоваться, где искать ответы на вопросы. Статья для тех, кто имеет хотя бы минимальный опыт работы с Clojure.

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 2.8K
Комментарии 2

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

Работа