Pull to refresh
0
0
Send message

Разработка плагина для Android Studio

Reading time10 min
Views2.4K

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

Читать далее

KISS — принцип проектирования, содержащий все остальные принципы проектирования

Reading time12 min
Views100K
Постараюсь объяснить сущность принципа проектирования KISS просто и одновременно очень подробно. KISS – это очень общий и абстрактный принцип проектирования, который содержит в себе практически все остальные принципы проектирования. Принципы проектирования описывают как писать «хороший» код. Однако что значит хороший код? Некоторые считают, что это код, который выполняется максимально быстро, некоторые – что это код, в котором задействовано как можно больше паттернов проектирования… Но верный ответ лежит на поверхности. Код – это информация в чистом виде. А основные критерии ценности информации – это 1)достоверность 2)доступность 3)понятность. То, почему важны достоверностью и доступность – очевидно. От кода нет проку, если он работает с ошибками или если сервер с приложением «лежит». Почему же важна понятность кода? В понятном коде проще искать ошибки, проще его изменять, дорабатывать и сопровождать. Итак, понятность – основная ценность, к которой должен стремиться программист. Однако тут есть одна неувязочка. Дело в том, что понятность – вещь сугубо субъективная.
Читать дальше →

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

Reading time5 min
Views4.2K

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

Читать далее

Обходим блокировку VPN

Level of difficultyMedium
Reading time2 min
Views72K

Мой провайдер помимо замедления (читай полная блокировка) YouTube так-же стали блокировать соединения с моими рабочими VPN. Работодатель не очень любит, когда на встречах на вопрос о прогрессе, я неделю отвечаю, что у меня не работает VPN! Своими действиями, мой провайдер сам меня подтолкнул к поиску обходных путей.

Сразу скажу, обходной путь придумал не сам, мне его подсказал автор проекта zapret, а точнее его комментарий, более того, я использую его проект, чтоб смотреть нормально YouTube. Спасибо огромное!

Добавлю, я использую nftables и nfqws, если этот вариант работает у меня — это не значит, что оно заработает и у вас! Возможно, вам придётся изменить некоторые параметры.

Читать далее

Разработка под Android в 2024 году

Reading time15 min
Views16K

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

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

Читать далее

Страшные истории про SWIFT: инструкция, как профукать $100500 на переводе

Reading time11 min
Views42K

В этой статье мы детально разбираемся: как на самом деле работает этот ваш SWIFT, каким образом россияне теряют огромные суммы денег в недрах зарубежных банков из-за неудачных переводов, и, самое главное, – что конкретно нужно делать, чтобы ваш перевод долетел куда надо в сухости и комфорте?

Читать далее

Разрушители легенд: Как на самом деле магазины проверяют приложения на уязвимости

Reading time22 min
Views8.1K

Всем привет! Снова с вами Юрий Шабалин. Уже много лет я занимаюсь безопасностью мобильных приложений и в своих исследованиях доношу важность этого направления для бизнеса.

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

Давайте посмотрим!

Читать далее

Денежные переводы Россия-Казахстан в 2024 году

Level of difficultyEasy
Reading time5 min
Views47K

Наступил 2024 год и пора сделать обзор на возможность переводов из России в Казахстан и обратно.

По официальным данным Национального банка Казахстана за прошлый 2023 год основную долю международных денежных переводов между физ.лицами России и Казахстана неизменно удерживает сервис «Золотая Корона».

Но с ними так и остался один нюанс: Мобильное приложение не даёт возможности перевести деньги онлайн.

Читать далее

Сравниваем готовые решения для реализации MVI-архитектуры на Android

Reading time8 min
Views20K


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

В этой статье мы разберем решения для реализации MVI-архитектуры на Android, большинство из которых применимы в работе. Описали их преимущества и недостатки, основываясь на опыте коллег и собственной практике. Материал будет полезен для разработчиков, ещё не знакомых с паттерном MVI, и для тех, кто выбирает библиотеку для своего проекта.
Читать дальше →

Неочевидное про Fragment API. Часть 1. Транзакции

Reading time7 min
Views20K

Всем привет! Меня зовут Максим Бредихин, я Android-разработчик в Тинькофф. В этой серии статей я расскажу об интересных моментах из Fragment API, о которых вы могли не знать. Материал будет полезен как начинающим разработчикам, так и закаленным в боях с багами девелоперам.

Усаживайтесь поудобнее, мы начинаем!

Читать далее

Permissions в Android: как не допустить ошибок при разработке

Level of difficultyMedium
Reading time13 min
Views16K

Всем привет! На связи Юрий Шабалин, ведущий архитектор Swordfish Security и генеральный директор Стингрей Технолоджиз. Эта статья написана в соавторстве с Android-разработчиком Веселиной Зацепиной @VeselinaZatsepinaa). В материале мы поговорим про один из ключевых механизмов в Android, а именно про разрешения. Разберем, что это такое, как с ними работать, а главное, какие ошибки могут возникнуть и как их не допустить. Будет интересно, поехали!

Читать далее

Что под капотом у Leak Canary?

Level of difficultyEasy
Reading time7 min
Views5.8K

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

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

Читать далее

Откуда возникает TransactionTooLargeException, если я ничего такого не делал?

Reading time9 min
Views9K

Android-разработчиков часто спрашивают на технических собеседованиях, как запускать фрагменты, как передавать туда данные, почему нельзя класть много в аргументы, а много — это сколько, а что может пойти не так и т.д. Мы в Dodo тоже иногда такие вопросы задаём. Я думал, что понимал всё это, но оказалось, что довольно поверхностно. Всё изменилось, когда я столкнулся с частыми крашами TransactionTooLargeException в приложении Дринкит.

TransactionTooLargeException — это исключение из области IPC-вызовов (interprocess communication) и Android Binder. Но его можно получить в безобидной ситуации, когда, казалось бы, мы ничего такого не делали, и не пользовались IPC.

В этой статье предлагаю разобраться с этим крашем и поговорить про IPC-вызовы и Binder.

Читать далее

Deep Dive Into Deep Link. Часть 1. Введение и исходная задача

Reading time11 min
Views27K

Давно хотели разобраться, как работают Deep Link-и? Мы стартуем новый цикл статей, который посвящен работе Deep Link в Android. В первой части мы зафиксируем основные понятия: ​​Deep Link, Web Link, App Link. Разберем особенности каждого вида Deep Link-ов и разницу между ними.

Читать лонгрид

MotionLayout: анимации лучше, кода — меньше

Reading time10 min
Views35K

Google продолжает улучшать нашу жизнь, выпуская новые удобные библиотеки и API. Среди которых оказался и новый MotionLayout. Учитывая обилие анимаций в наших приложениях, мой коллега Cedric Holtz сразу же реализовал важнейшую анимацию нашего приложения — голосование в знакомствах — с использованием нового API, сэкономив при этом огромное количество кода. Делюсь переводом его статьи. 

Недавно закончилась конференция Google I/O 2019, на которой анонсировали обновления и самые свежие улучшения нашего любимого SDK. Лично мне особенно интересна была презентация Николаса Роарда и Джона Хофорда о будущей функциональности ConstraintLayout. А точнее, о его расширении в виде MotionLayout. 

После выпуска бета-версии мне захотелось реализовать анимацию знакомств на основе этой библиотеки.
Читать дальше →

Так для чего же нам все таки нужен MVI в мобильной разработке

Reading time6 min
Views7K
Много уже сказано про MVI, о том как его правильно прожарить и настроить. Однако не так много времени уделяется тому, насколько этот метод упрощает жизнь в определенных ситуациях, в сравнении с остальными подходами.

Цель этой статьи


Я не буду углубляться в то как технически реализуется MVI (способов больше одного и у каждого есть свои плюсы и минусы). Моя главная цель в короткой статье заинтересовать тебя изучать эту тему в дальнейшем и возможно побудить внедрить данный паттерн на своих боевых проектах или хотя бы проверить на домашних заготовках.

С какой проблемой можно столкнуться


Мой дорогой друг, давай представим такую ситуацию, у нас имеется интерфейс вью, с которым
предстоит работать:

interface ComplexView { 
   fun showLoading()   
   fun hideLoading()   
   fun showBanner()    
   fun hideBanner()    
   fun dataLoaded(names: List<String>)    
   fun showTakeCreditDialog()
   fun hideTakeCreditDialog()
}
Читать дальше →

Шпаргалка по шаблонам проектирования

Reading time2 min
Views1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

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

Разбираем шаблоны проектирования

Reading time17 min
Views24K

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

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

Представленный в статье материал предполагает знакомство читателя с основами объектно-ориентированного программирования.

Читать далее

Как работает Activity. Часть 2

Reading time7 min
Views11K

В прошлой статье я описал, как стартует процесс нашего приложения, что такое ActivityStarter и как стартуют все Activity.

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

Читать далее

Как работает Activity. Часть 1

Reading time12 min
Views24K

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

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

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

Читать далее
1

Information

Rating
Does not participate
Registered
Activity