🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Flutter и ГОСТ TLS
— Трагические микрозаймы, украденные креды: какие Android-зловреды мы обнаружили в официальных маркетах
— Двигай рукой справа налево: адаптация интерфейса в Android приложении под RTL в XML и Jetpack Compose
— Создание кастомного React Native компонента Switch с помощью библиотек Reanimated и Gesture Handler (Часть 2)
— Как реализовать App shortcuts в Android
— Что ждёт мобильную разработку в 2024 году
— Собирательный образ Junior Android Developer. Какой он в 2024?
— Техническое собеседование инженеров мобильной разработки в RuStore
— Изи freestyle android приложения на Kivy (Python), Google collab и ваш не любимый ChatGPT
— Мобильная разработка за неделю #525 (5 — 11 февраля)
— A step-by-step tutorial in codelab format for Android UI testing
— Power your Flutter App with Gemini AI ✨
— Testing with Accessibility Scanner
— A bad and better unit test example for Android network layer with Retrofit | Video
— Should I update the Kotlin version of the Android app?
— Top 10 Healthcare App Development Tips & Tricks in 2024
— Efficient File Transfer from Android to Mac Using ADB
Посмотреть:
🌐 C# полный курс 2024. Урок 7 Условия (⏱ 15:06)
🌐 Телеграм бот приема заявок и рассылок! Огромный прирост подписчиков! (⏱ 17:10)
🌐 Запрещенный синтаксис #Python, за который вас уволят! (⏱ 00:50)
🌐 C# полный курс 2024. Урок 6: Ссылочные типы переменных c# (⏱ 05:42)
🌐 C# полный курс 2024. Урок 5: Переменные (⏱ 10:52)
🌐 C# полный курс 2024. Урок 8 Switch Case (⏱ 08:45)
🌐 Полное собеседование React разработчика 2024🧑🏻💻 (⏱ 01:09:44)
Хорошего дня!
@android_its
🤨Какую архитектуру выбрать — с единой или множеством Activity?
В постоянно развивающейся сфере разработки Android-приложений приходится принимать ответственные решения, определяющие пользовательский опыт и общую архитектуру приложения. Одним из таких решений является выбор структуры Activity — фундаментальных строительных блоков любого Android-приложения.
Перед разработчиками возникает дилемма: упрощенный подход с единой Activity (Single Activity), включающей множество Фрагментов, или разрозненная природа множества Activity (Multiple Activities), каждая из которых представляет собой отдельную часть функциональности приложения.
Выбор между одним или несколькими видами Activity сродни выбору чертежа дома: он оказывает существенное влияние на поток, сложность и масштабируемость приложения. Каждый подход имеет свои преимущества и недостатки, отвечает различным требованиям к приложениям и предпочтениям разработчиков. Как начинающие, так и опытные специалисты должны вдумчиво подходить к принятию решений, чтобы их приложения были не только надежными и эффективными, но и обеспечивали оптимальный пользовательский опыт.
В Android-разработке решение об использовании единой или множества Activity зависит от сложности и структуры приложения. У обоих подходов есть свои преимущества и варианты применения.
📌 Рассмотрим
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Механизм экспорта растровых изображений в Figma: как изменяется качество изображения
— Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
— Мобильная разработка за неделю #517 (27 ноября — 3 декабря)
— Видео-сообщение как в Telegram. Часть третья — Контролы и раскрытое состояние
— Видео-сообщение как в Telegram. Часть вторая — Оптимизация
— Видео-сообщение как в Telegram. Часть первая — Список видео
— Diving into Kotlin .apply{} function
— My video on how I am organizing my Jetpack Compose code
— Implementing View Binding in Fragments with Nav Graph & RecyclerView in Android Studio using Kotlin: Comprehensive Tutorial
— Kotlin: Fungsi
— Entendendo RecyclerView de Uma Vez Por Todas
— Using Golang + Gomobile To Build Android Application (with code)
— Clean Architecture for Android MVI
— The architectural patterns I am using to better organize my Jetpack Compose code
Посмотреть:
🌐 Урок 8: setOnClickListener() - обработка нажатий, property access | Курс Android на Kotlin c нуля
🌐 Задача: Взлом замка на #Python (⏱ 01:00)
🌐 Операционные системы — Как это работает #10 (⏱ 01:18:16)
Хорошего дня!
Первый мобильный митап Тинькофф в Омске?
Да! И проведет команда его 14 декабря в пространстве «Рига-Москва». Для первой встречи с мобильными разработчиками ребята подготовили два крутых кейса:
— сначала расскажут про эффективность Redux в iOS-разработке на примере приложения Тинькофф Инвестиций;
— а после обсудят разработку приложений для синхронизации смартфона с другими устройствами.
После докладов останутся понетворкать с участниками.
📆 Tinkoff Mobile Meetup, 14 декабря, «Рига-Москва». Не забудьте зарегистрироваться и позвать с собой коллег.
erid:2VtzqwyPHWS
Реклама. АО "Тинькофф Банк", ИНН 7710140679, лицензия ЦБ РФ № 2673
Школа мобильной разработки: Android
1. My first app: вводная про платформу
2. Kotlin
3. Базовые компоненты
4. Views & Layout
5. RecyclerView
6. Background Часть 1
7. Background Часть 2
8. Network
9. Storage
10. DI
#video #android
https://www.youtube.com/watch?v=Xfaqnj1egFI&list=PLQC2_0cDcSKAVl_3u-3ZrEW2UFBUjDD97
🤖 Как создать приложение Android за 7 шагов
Создать первое Android-приложение не так сложно, как может показаться.
В этом руководстве мы поможем вам создать первое Android-приложение и запустить его на телефоне.
Android — это операционная система на базе ядра Linux, предназначенная для мобильных устройств с сенсорным экраном, таких как смартфоны, планшеты и смарт-часы.
Это технология с открытым исходным кодом, позволяющая производителям устройств, операторам беспроводной связи и разработчикам свободно изменять и распространять программное обеспечение.
Android был представлен в 2007 году вместе с основанием Open Handset Alliance (альянсом компаний по разработке открытых стандартов для мобильных устройств).
В нашей статье не будем углубляться в установку и настройку Android Studio и посчитаем что она уже установлена.
Создаем приложение Android
Шаг 1. Дважды кликните на программу “Android Studio”.
Шаг 2. Кликните “New Project”.
Шаг 3. Выберите “Empty Activity”
📌 Далее
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Kotlin под капотом: нюансы использования аннотаций
— Пишем Kotlin DSL для графов навигации в домашних условиях
— Дайджест мобильной разработки за октябрь
— Статический анализатор Ktlint для Kotlin в Android
— Большая дыра в безопасности Android: почему смартфоны с зеленым роботом подвержены кражам?
— Мобильная разработка за неделю #515 (13 — 19 ноября)
— Saving Simple Data in Android - SharedPreferences and DataStore APIs
— Gestures in Jetpack compose — All you need to know – Part-2
— Firebase and Kotlin: A Dynamic Duo for Modern App Development
— 100% Flakiness-free UI test automation with Kaspresso and Allure TestOps
— Difference between “𝐈𝐧𝐯𝐚𝐥𝐢𝐝𝐚𝐭𝐞 𝐂𝐚𝐜𝐡𝐞𝐬 and 𝐑𝐞𝐩𝐚𝐢𝐫 𝐈𝐃𝐄 in Android Studio”?
— 💥Ini Caraku Meredirect User ke Aplikasi Android
— Painless building of an Android package installer app
— Downloading Files using Work Manager
— Muay Thaideas: A Roundhouse Kickstart
— Point, Shoot, and Detect: Object Detection with PyTorch Mobile
Посмотреть:
🌐 Эти фишки сделают твой Python код лучше🔥 (⏱ 18:27)
🌐 Мыслим как Platform Engineer — Дмитрий Кузнецов, Тинькофф (⏱ 29:45)
Хорошего дня!
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Погружение в Smali. Как выглядят Java и Kotlin со стороны
— Как сделать автотесты гибкими и лаконичными
— Защита кода приложения Android. Когда хотели как лучше, а вышло не очень
— Сквозь дебри разработки, или как я пытался написать приложение
— Разрушители легенд: Как на самом деле магазины проверяют приложения на уязвимости
— Разделение презентационного слоя фичи на модули в Android приложении
— Как подружить JUnit 5 и Robolectric?
— Как моя 9-месячная дочь заработала больше 1000 долларов в программе bug bounty
— Приложение для мобильных бригад: «толстый клиент» и полмиллиона строк кода
— Менеджер паролей SmallKey
— Flutter's Provider: The Superhero of State Management! 🦸♂️🚀
— Evolution of Android Development: a short summary
— React Native e permissão para salvar arquivos com Android 13
— How to Add Content Descriptions in Compose - A Guide for Android Devs
— Object Relationships in Room ORM Library for Android
— All You Need To Know About Modal Navigation Drawers In Jetpack Compose
— do anyone know
— Kotlin: Var dan Val
— UI Components in React Native
— Swift for Android: How to use Swift-Crypto with Android Studio
Посмотреть:
🌐 Пишем генератор Shorts видео на Python для заработка на YouTube. (⏱ 11:50)
🌐 Озвучка и генерации контента с помощью #Python и AI (⏱ 00:44)
🌐 Замена лица на любой фотографии с помощью #python БЕСПЛАТНО! (⏱ 00:59)
🌐 Android Storage. Обзор инструментария — Филипп Майдуров, Тинькофф (⏱ 30:24)
Хорошего дня!
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Как продвигать приложения: советы от RuStore
— Мобильная разработка за неделю #513 (30 октября — 6 ноября)
— Как стилизовать текст на Compose через Spannable
— Kotlin Multiplatform перешёл в stable. Что это значит?
— Как сделать тесты на Espresso более читабельными и стабильными
— Как реализовать приостановку трансляции и фоновый стриминг на Android с помощью опенсорс-библиотеки
— Байт-код — это просто! Как сделать DI по-настоящему быстрым
— В помощь тем, кто погружается в Smali
— What the key parameter in LazyColumn is actually doing | A deep dive
— Generate Resource Icon Android & iOS
— Why an Android App Development Company Recommends Using Android Jetpack?
— Design Tokens: Cool Philosophy, Cumbersome Experience
— Multi-Modules Architecture: Dependency Management _ Build your own gradle plugin
— Launch Modes in Android - with Examples
— Essential Flutter Developer Skills to Assess while Hiring for Your Next Project
— My First Cross-Platform Hello-World Flutter App
— How to Check if Your Android Device Has a Widevine License
— Advanced Typography: Using OTF Font Features in Android
Посмотреть:
🌐 Задача с реального Python собеседования middle разработчика. Рекурсивная сумма. (⏱ 13:00)
🌐 Определение диабета при помощи машинного обучения в 60 строк кода! (⏱ 12:54)
🌐 Что такое vector в c++ (⏱ 00:51)
🌐 STL C++ стандартная библиотека (⏱ 00:57)
🌐 deque разбор в С++ (⏱ 00:58)
🌐 Последовательные контейнеры c++ List (⏱ 00:47)
🌐 Совет Python разработчикам - реши задачу Chain sum с реального собеседования. (⏱ 14:23)
🌐 Нейросеть для превращения #YouTube видео в презентацию (⏱ 00:28)
🌐 🔥 NVIDIA только что сделала Pandas в 150 раз быстрее без изменений кода. #python (⏱ 00:20)
🌐 Функциональные языки — Как это работает #9 (⏱ 01:07:53)
Хорошего дня!
@android_its
🎉 Мы рады сообщить, что в Android добавлена поддержка RISC-V 👉 https://goo.gle/3QDaYfl
RISC-V - это открытый стандарт архитектуры наборов инструкций (ISA), обеспечивающий новую эру инноваций в области процессоров.
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Электронные книги? Аудиокниги? Смешать, но не взбалтывать
— Оптимизируя sequences — или как мой код попал в kotlin
— Построение графа покрытия UI-тестами бизнес-логики на основе VisualFSM
— Обзор невизуальной доступности смартфонов под управлением операционной системы Android
— Потерял месяц согласований, психанул. Теперь только платные брифы
— Что будет с мобильными релизами, если улучшать и автоматизировать процессы
— Stone: знакомство с API
— Как зловредные приложения могут скрывать работу с буфером обмена в Android 14
— Реализация экранов авторизации и регистрации с помощью Custom View и Firebase
— Мобильная разработка за неделю #511 (16 — 22 октября)
— AdMob Banner Ads Impacting Android Vitals: Seeking Solutions and Alternatives
— How to verify OTP in Android without SMS read permission using Xamarin.Forms?
— Innovating the Music Streaming Landscape: How to Make an App Like Spotify
— Enable Wireless Debugging on Android Device
— Finding the Right Balance in Gradle Dependency Strategy
— Guia Passo-a-Passo: Corrigindo Problemas com o uiautomatorviewer
— Retrieving Device Model Information with JavaScript from Browsers
— Tips to Hire Dedicated Android App Developers for Your Business
— The Best Resources to Learn Android Development
— Desenvolvimento de Aplicativos com Kotlin, Room e Jetpack Compose: Uma Jornada para Interfaces de Usuário Modernas e Eficientes
Посмотреть:
🌐 Прогнозирование цены биткоина при помощи VAR, XGBoost, FB Prophet (⏱ 20:29)
🌐 Django настройка админки (⏱ 06:55)
🌐 Задача на палиндром строки на C++ (⏱ 00:59)
🌐 Django расширяем функционал! (⏱ 07:03)
Хорошего дня!
@android_its
🖥 Чистая архитектура на Android
Полезный репозиторий, в котором представлены все основные принципы чистой архитектуры: разделение ответственности, слоев, представления и данных.
Проект написан на Kotlin с применением Jetpack Compose и Coroutines. В нём есть юнит-тесты, интеграционные и анализ качества кода.
• Github
@android_its
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Определение произвольной точки на полигоне. Jetpack Compose. Canvas. Algorithm
— Как показать номер версии на экране загру…
— 4 сценария, когда нужно сделать ставку на Kotlin Multiplatform, а не Flutter
— 8 вещей, которые я усвоил за 6 лет карьеры разработчика
— Как мониторить здоровье вашей Gradle-сборки
— Как я осваивал Jetpack Compose
— Android 14: что появилось нового и что изменилось? Возможности новой версии мобильной ОС
— Компиляция Record для Android
— Архитектура Android. Понятно и подробно
— Как сделать приложение для мобильного стриминга на Android с помощью опенсорс-инструментов и EdgeStreaming
— ImageEncoder: Your Ultimate Privacy Solution for Image Sharing
— Gestures in Jetpack compose — All you need to know
— Mobile Security Tools part 1: scrcpy
— ListView
— connected Bluetooth classic device battery information? in react-native
— Flutter Platform Channels
— ROOT DETECTION IN ANDROID SOLUTION ?
— Using SFSymbols in Jetpack Compose
— Annotations
— Modifiers
Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. (⏱ 05:23)
🌐 Пишем слайдер на UIKit + Lottie + Animations + Custom PageControll (⏱ 01:43:45)
🌐 NLP практика. Определяем тональность текста при помощи NLTK и DL (⏱ 19:37)
🌐 Django шаблонизация и маршрутизация (⏱ 09:11)
🌐 Задача, которая очень часто встречается на собеседованиях #python (⏱ 00:59)
🌐 Решение непростой задачи с Leetcode, часто всплывает на собеседования #pythontutorial (⏱ 00:59)
🌐 Хитрая задача с собеседования #Python (⏱ 00:59)
Хорошего дня!
Чтобы узнать, что в голове у интервьюера во время собеседования в ИТ-компанию, не обязательно быть телепатом.
В шоу от команды мобильной разработки Тинькофф «Как это работает» приглашенный гость — гуру собеседований — рассказывает, на что обращают внимание во время интервью, и делится лайфхаками для успешного прохождения отбора.
Посмотреть этот и другие выпуски можно тут: Как устроены собеседования в IT - Как это работает #1
Реклама. АО "Тинькофф Банк"
Значительно ускоряем сборку проектов
В этой статье автор подробно разбирает, как устроена оптимизация компиляции в Gradle и почему она работает быстрее, чем в других системах сборки типа Bazel.
Автор раскроет, что такое интерфейс бинарных приложений (ABI), «заголовочные jar-файлы» и как они используются для избежания повторной компиляции.
📌 Читать
🖥Oblivion - Unofficial Warp Client for Android
Oblivion обеспечивает безопасный, оптимизированный доступ в интернет через приложение для Android, написанное на Java с использованием технологии cloudflare warp.
Используя bepass-sdk
и WireGuard
, инструмент предназначен для быстрого и конфиденциального доступа в интернет.
▪Github
@javatg
⚡️ PCAPdroid
PCAPdroid - это приложение на Android с открытым исходным кодом, которое позволяет отслеживать и экспортировать сетевой трафик вашего устройства.
— Приложение имитирует VPN для захвата без полномочий root, но, в отличие от VPN, трафик обрабатывается локально на устройстве.
👉 Ссылка на GitHub
👨💻 Изучаем чистую архитектуру Flutter на практике
Архитектура приложений в разработке — это как план здания, который помогает понять, куда и как всё должно быть устроено. Главная её задача — разделить разные части работы, чтобы можно было удобнее работать по частям.
Если говорить про Flutter, хорошая архитектура позволяет держать отдельно логику приложения от того, что связано с телефонами и компьютерами, например, от экранов и кнопок. Это также делает тестирование кода проще, потому что можно проверять каждую часть по отдельности.
⏳ Содержание:
00:00 Введение
03:44 Добавление пакетов и создание структуры папок
06:33 Определение классов сущностей
09:05 Создание классов и моделей репозитория
11:27 Создание запросов к API с помощью Retrofit
14:40 Варианты использования
17:54 Создание блока
21:16 Инъекция зависимостей
24:32 Отображение новостей
29:20 Локальная база данных
33:39 Добавление методов базы данных в слои
36:45 Сохранение и удаление статьи из базы данных
#полезное
👣 google / comprehensive-rust: Это курс по Rust, используемый командой Android в Google. В нем вы найдете материал для быстрого обучения Rust.
https://github.com/google/comprehensive-rust
🦔 Попробуйте Android Studio Hedgehog одна из лучших IDE для разработки Android-приложений!
Что вас ждет?
🪲 Составление информации о состоянии в отладчике
💎 Показатели Android в App Quality Insights
🔼 Помощник по обновлению Android 14
Узнайте больше → https://android-developers.googleblog.com/2023/11/android-studio-hedgehog-is-stable.html
Добро пожаловать в мир SberAutoTech, где мы не просто разрабатываем беспилотную технологию и собственную электронику, а создаём завтра уже сегодня. Мы растём, расширяемся и не планируем останавливаться.
Вы ищете новые вызовы? У нас вы сможете развивать технологию автономного вождения и беспилотные транспортные средства, создавать автомобильную ОС для комфортных и безопасных поездок и целую экосистему сервисов для автономного транспорта. Вы стремитесь к развитию? Амбициозные задачи и проекты будут сопровождать вас каждый рабочий день. Возможности здесь, как и будущее — безграничны!
Наш секрет — гибкость стартапа в сочетании с поддержкой экосистемы. Здесь идеи и устремления каждого сотрудника не просто приветствуются, а востребованы. С нами вы получите не только интересные задачи, но и комфортное место для реализации задуманного, полный социальный пакет и достойный доход.
Давайте встретимся в мире инноваций и возможностей. Откликайтесь на вакансии и не упустите шанс — будущее уже здесь!
✨10 рекомендаций, которые повысят производительность разработки на Flutter в 2023 году
Рассмотрим 10 экспертных рекомендаций по использованию Flutter, которые помогут разработчикам усовершенствовать свои навыки и создавать еще более качественные мобильные приложения в 2023 году.
1. Горячая перезагрузка
Максимально используйте во Flutter функцию Hot Reload (горячая перезагрузка). Эта функция позволяет ускорить цикл разработки и сэкономить значительное количество времени при работе над новыми проектами.
2. Стабильный канал Flutter
Чтобы воспользоваться преимуществами последних стабильных функций и исправлений, убедитесь в том, что подключены к стабильному каналу Flutter.
3. Организация исходного кода
Организация кода во Flutter играет ключевую роль в обеспечении производительности, эффективности и сопровождаемости.
4. Генераторы кода
Генераторы кода Flutter позволяют упростить написание и сопровождение кода.
5. Dart DevTools
Dart DevTools — это надежный набор инструментов для отладки и оптимизации производительности на Flutter.
6. Виджеты Flutter с поддержкой жестов
Flutter включает широкий набор виджетов, позволяющих создавать привлекательные и отзывчивые пользовательские интерфейсы.
7. Отзывчивый дизайн
Отзывчивый дизайн во Flutter необходим для создания пользовательских интерфейсов (UI), адаптивных к различным размерам и ориентациям экрана. Для этого Flutter предоставляет такие инструменты, как LayoutBuilder и MediaQuery.
8. Анимированные виджеты
Анимированные виджеты Flutter позволяют разработчикам включать в мобильные приложения анимацию, повышая общий уровень взаимодействия пользователя с приложением.
9. Макеты Flutter
С помощью макетов Flutter можно создавать несколько видов макетов приложений — от простых до сложных.
10. Android Studio
Android Studio для работы с Flutter предлагает множество эффективных расширений, позволяющих сэкономить время разработчиков и повысить производительность. Это интегрированная среда разработки (IDE), которая предоставляет программистам доступ к широкому набору инструментов, повышающих уровень комфорта при создании сложных приложений.
📌 Подробнее
🤖 Как с легкостью создать установщик пакетов Android
Иногда требуется установить приложение на устройство не как пользователю, а как разработчику другого приложения. Возможно, вашему приложению, будь то магазин приложений или файловый менеджер, требуется самообновление, а вы его не опубликовали на Play Store. В любом случае вы обратитесь к стандартизированным интерфейсам (API) Android SDK, обеспечивающим установку APK (Android Package Kit). Но, как известно, Android-интерфейсы часто оказываются довольно трудоемкими в использовании.
Возьмем, к примеру, установку APK. Если вы вынуждены поддерживать версии Android ниже 5.0, то для разных версий Android придется использовать разные API: PackageInstaller для версий от 5.0 или какой-нибудь Intent с действием установки.
Способ Intent.ACTION_INSTALL_PACKAGE
Intent довольно прост в использовании. Достаточно создать его, запустить Activity для получения результата и обработать возвращенный код. Вот как обрабатывается установочный intent с помощью API AndroidX Activity Result:// регистрация лаунчера в Activity или Fragment
val installLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
val isInstallSuccessful = result.resultCode == RESULT_OK
// затем проводятся действия в зависимости от полученного результата
}
// запуск intent, например, при нажатии на кнопку
val intent = Intent().apply {
action = Intent.ACTION_INSTALL_PACKAGE
setDataAndType(apkUri, "application/vnd.android.package-archive")
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true)
putExtra(Intent.EXTRA_RETURN_RESULT, true)
}
installLauncher.launch(intent)
Не забудьте объявить разрешение на установку в AndroidManifest:
Читать
Emudroid
- это бесплатный эмулятор Android, предназначенный для использования на macOS.
Он позволяет пользователям создавать и сохранять виртуальные экземпляры различных смартфонов Android, включая самые новые модели Google Pixel.
С помощью данной утилиты можно легко скачивать и устанавливать свои любимые приложения и игры из Google Play Store, а также проводить тестирование своих веб-сайтов и приложений прямо внутри эмулятора Android.
📌Пробовать
💻 Настройка Detekt с помощью каталога версий и convention-плагина
Настройка Detekt под различные модули может быть сложной при работе с многогранными Android-проектами.
Однако использование convention-плагина (решения Gradle, определяющего единый набор соглашений для подмодулей проекта) и AndroidDetektConventionPlugin может упростить этот процесс.
Шаг 1
Добавьте зависимость Detekt в libs.versions.toml.[versions]
detekt="1.23.1"
[libereries]
detekt-gradlePlugin = { group = "io.gitlab.arturbosch.detekt", name = "detekt-gradle-plugin", version.ref = "detekt" }
Шаг 2
Добавьте зависимость в build.gradle.kts convention-модуля:dependencies {
compileOnly(libs.detekt.gradlePlugin)
}
Шаг 3
Создайте файл с именем AndroidDetektConventionPlugin.import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import ir.composenews.configureDetekt
import ir.composenews.libs
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.getByType
class AndroidDetektConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
pluginManager.apply(
libs.findLibrary("detekt-gradlePlugin").get().get().group.toString()
)
val extension = extensions.getByType<DetektExtension>()
configureDetekt(extension)
}
}
}
Шаг 4
Создайте в convention-модуле файл Detekt.kt:internal fun Project.configureDetekt(extension: DetektExtension) = extension.apply {
tasks.named<Detekt>("detekt") {
reports {
xml.required.set(true)
html.required.set(true)
txt.required.set(true)
sarif.required.set(true)
md.required.set(true)
}
}
dependencies {
"detektPlugins"(libs.findLibrary("detekt-formatting").get())
}
}
Шаг 5
Зарегистрируйте AndroidDetektConventionPlugin в build.gradle.kts convention-модуля:gradlePlugin {
plugins {
// другие плагины
register("androidDetekt") {
id = "composenews.android.detekt"
implementationClass = "AndroidDetektConventionPlugin"
}
}
}
Шаг 6
Используйте его в проекте:class AndroidLibraryConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply("com.android.library")
apply("org.jetbrains.kotlin.android")
apply("composenews.android.detekt") // here
apply("composenews.android.ktlint")
}
extensions.configure<LibraryExtension> {
configureKotlinAndroid(this)
defaultConfig.targetSdk = Integer.parseInt(libs.findVersion("projectTargetSdkVersion").get().toString())
}
dependencies {
add("androidTestImplementation", kotlin("test"))
add("testImplementation", kotlin("test"))
}
}
}
}
Окончательный результат ⬇️
Смотреть
Что отличает архитектурные паттерны MVC, MVP, MVVM, MVVM-C и VIPER друг от друга?
Эти архитектурные паттерны являются одними из наиболее часто используемых при разработке приложений, как на платформах iOS, так и Android. Разработчики внедрили их, чтобы преодолеть ограничения предыдущих паттернов. Чем же они отличаются друг от друга?
- MVC, самый старый паттерн, появился почти 50 лет назад.
- В каждом паттерне есть "представление" (V), отвечающее за отображение содержимого и прием пользовательского ввода
- Большинство паттернов включают "модель" (M) для управления бизнес-данными.
- "Контроллер", "презентатор" и "представление-модель" - это трансляторы, которые являются посредниками между представлением и моделью ("сущность" в паттерне VIPER).
- Эти трансляторы могут быть достаточно сложными в написании, поэтому были предложены различные паттерны, позволяющие сделать их более удобными в эксплуатации
От себя: имейте в виду, что это не исчерпывающий список архитектурных паттернов. Среди других известных паттернов можно отметить Flux и Redux.
@android_its
📱 Автоматизация скриншот-тестирования предварительных просмотров Compose с использованием отражения
Скриншот-тестирование — ценный метод проверки пользовательского интерфейса и предотвращения регрессий при обновлении экранов и компонентов. Однако, как и любой вид тестирования, он требует значительных временных затрат на написание и сопровождение тестов.
Showkase
Одним из способов автоматизации скриншот-тестирования является использование Showkase — библиотеки от Airbnb, предназначенной для генерации веб-компонентов, а также позволяющей с помощью Paparazzi автоматически тестировать все методы, аннотированные @Preview. Вот только для этого придется добавить Showkase в качестве зависимости для каждого модуля, в котором есть предварительные просмотры, требующие тестирования, что увеличит время сборки всех модулей, так как Showkase опирается на генерацию кода. Поэтому использование Showkase только для скриншот-тестов может оказаться не лучшим решением, поскольку это не основная функция библиотеки.
Отражение
Альтернативным подходом является использование отражения для поиска всех предварительных просмотров во время выполнения и динамического создания тестов для них. В этой статье предлагается реализация, которая, в отличие от базовой, является более гибким решением, предусматривающим дополнительные граничные случаи.
Для тестов мы будем использовать библиотеку Paparazzi, разработанную Cashapp. Главное ее преимущество — отсутствие необходимости в эмуляторе для выполнения тестов, что делает их более быстрыми и надежными.
Однако предлагаемое решение может работать и с другими библиотеками скриншот-тестирования. Если вам интересны альтернативы, загляните в этот Github-репозиторий. Здесь представлено много полезной информации обо всех доступных вариантах скриншот-тестирования в Android, включая подробные описания и кейсы реализации.
Пример проекта
📌 Читать дальше
@android_its
🖥 Список полезных опенсорс проектов по Jetpack Compose
1. klokk
Кинетические часы, которые сделаны с использованием Jetpack Compose Desktop. В документации вы можете прочитать о вдохновении проекта и посмотреть процесс разработки. Вы также можете внести свой вклад в проект.
Проект: https://github.com/theapache64/klokk
2. MovieCompose
Это демонстрационное приложение, основанное на современном технологическом стеке Android, которое в основном использует Jetpack Compose UI и Movie DB API. 100% Kotlin, Coroutines, Flow, Hilt, MVVM, паттерн репозитория и т.д. Документация хорошо написана и широко описывает технологический стек.
Проект: https://github.com/skydoves/MovieCompose
3. NewtonsTimer
Проект, подготовленный специально для AndroidDevChallenge. Это приложение Simple Timer, вдохновленное колыбелью Ньютона. В README дается хорошее объяснение мотивации проекта. Автор также проделал хорошую работу, объясняя основные моменты и давая ссылки на код. Очень вдохновляюще!
Проект: https://github.com/MaciejCiemiega/NewtonsTimer
4. Flux
Flux — это красивое погодное приложение, которое показывает, как рисовать динамические пейзажи с несколькими слоями, которые меняются в зависимости от фазы дня. Оно опирается на Jetpack Compose Canvas и поддерживает светлую/темную тему. В целом, это отличный учебный материал!
Проект: https://github.com/fidloo/flux
5. Create Compose App
Это действительно классный инструмент, создающий шаблон приложения для Android, Web, Desktop и Chrome, написанного на Jetpack Compose. Он избавляет вас от трудоемкой установки и настройки.
Созданное приложение поддерживает архитектуру MVVM, Hilt как Dependency Injection Framework, Jetpack Navigation, Logger и типографику Google Sans. В шаблоне для десктопа поддерживается архитектура MVVM со структурой, похожей на Android (SingleActivity), Dagger 2 в качестве фреймворка Dependency Injection, навигация/маршрутизация с Decompose, иконки Launcher (для всех платформ), отдельный модуль данных, модульные и UI-тесты, логирование и шрифт Google Sans. Весьма впечатляюще!
Проект: https://github.com/theapache64/create-compose-app
6. McCompose
Это приложение для McDonald’s, созданное для демонстрации использования Jetpack Compose. Из-за того, что проекту уже 2 года, для его компиляции может потребоваться небольшой рефакторинг. Тем не менее, его стоит посмотреть.
Проект: https://github.com/hitanshu-dhawan/McCompose
7. Schedule Calendar
Это демонстрационный проект, который показывает горизонтальный календарь, показывающий события в хронологическом порядке.
Это не библиотека, а скорее проект для любопытных разработчиков, на что можно посмотреть и поучиться. К сожалению, README не содержит никакой информации.
Проект: https://github.com/halilozercan/compose-schedule-calendar
8. Wiggles
Еще одно приложение, подготовленное для Android Dev Challenge. Это приложение для усыновления собаки, реализованное с помощью Android Architecture Components, Compose Navigation и Material Components.
Хотя документация не очень полная, код достаточно понятен.
Проект: https://github.com/Spikeysanju/Wiggles
9. Roffu
Проект представляет собой интернет-магазин, специализирующийся на спортивной обуви от многих известных компаний с современным пользовательским интерфейсом и красивой анимацией
Проект: https://github.com/mustfaibra/RoFFu
10. ViMusic
С помощью этого приложения с открытым исходным кодом для Android можно стримить музыку с YouTube Music.
Проект: https://github.com/vfsfitvnm/ViMusic
@android_its
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Android Ktorfit+Compose
— Миграция конфигурации сборки с Groovy на Kotlin
— Библиотека Scout — быстрый и безопасный DI на Kotlin
— Сервисы: строим масштабируемые и гибкие приложения с помощью чистой архитектуры
— Мобильная разработка за неделю #508 (25 сентября — 1 октября)
— Exploring the Power of Flutter Widgets
— Turning my codepen into an actual app - Brick 1100
— Automate Flutter app delivery to AppCenter with GitHub Actions
— Parsing non-Latin based Twitch usernames in Kotlin
— Tutorial To Add Real-time Call Features To Your Client App In 30 mins
— Why Mobile Apps Get Rejected
— 【徵才】REMOTE远程: Web3/ AI/ Blochain/QA-测试/IOS/Android/JAVA/前端开发
— How to Install Custom Android ROM
— Is React Native the Future, or Is It Just Native?
— Vyapar App: Empowering Small Business Financial Management
Посмотреть:
🌐 Разбор задачи с собеседования Data Science. Подготовка на практике (⏱ 26:12)
🌐 Cобеседование #Python топовый банк Goldman Sachs Associate на 12000 $ #задача #программирование (⏱ 01:00)
🌐 Facebook задача с собеседования на #Python на 120000 рублей #программирование #задача #код (⏱ 00:59)
🌐 Разбора задачи с собеседования #Golang (⏱ 00:22)
🌐 Django создание модели. Вывод даных на страницу (⏱ 13:01)
🌐 Какие проблемы могут возникать с безопасностью в мобильных приложениях — Андрей Цуриков, Тинькофф (⏱ 36:30)
🌐 Как ускорить сборку проекта и не остановить разработку — Сергей Ерохин, Тинькофф (⏱ 37:49)
🌐 Дизайнеры. Михаил Наер, Тинькофф — Как это работает #7 (⏱ 01:18:26)
Хорошего дня!
@android_its
Pachli - это полнофункциональный Android-клиент.
- Разработан с использованием кооперативной модели разработки.
- Пользователи могут читать, отвечать, фильтровать, публиковать, отмечать избранные и продвигать сообщения.
- В приложении реализованы функции автономного чтения, черновиков сообщений и планирования постов.
- Поддерживается работа с несколькими аккаунтами.
- Есть возможность настройки тем и шрифтов.
- Пользователи имеют контроль над уведомлениями.
- В приложении можно просматривать популярные посты, ссылки и хэштеги.
🐱 GitHub
🔗F-droid
🌐Site
@android_its