Теперь можно безопасно разблокировать зашифрованный LUKS на GNU/Linux с помощью режима USB-аксессуара, без необходимости вводить пароль.
👀 GitHub
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1
Курс «Профессия Архитектор ПО» поможет вам систематизировать знания и получить новые навыки для перехода в профессию. За 4 месяца вы освоите лучшие практики и разберёте реальные кейсы от тимлидов «Альфа-Банка».
Что вам даст этот курс?
— Научитесь планировать архитектуру и выбирать стек в зависимости от задачи проекта.
— Сможете разделять систему на компоненты исходя из требований.
— Познакомитесь с фреймворками и паттернами API Gateway, CQRS и «Сага».
— Будете создавать безопасные приложения — работать с аутентификацией, SSL и TLS и строить интеграции.
— Научитесь презентовать архитектурные решения перед бизнесом и командой.
В конце курса — разработаете архитектуру приложения по брифу от заказчика. Такой опыт поможет вам брать на себя ответственность за ведение проектов и быстро получить повышение на работе.
Спешите приобрести курс со скидкой!
Подробнее по ссылке https://epic.st/--So-
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Что вам даст этот курс?
— Научитесь планировать архитектуру и выбирать стек в зависимости от задачи проекта.
— Сможете разделять систему на компоненты исходя из требований.
— Познакомитесь с фреймворками и паттернами API Gateway, CQRS и «Сага».
— Будете создавать безопасные приложения — работать с аутентификацией, SSL и TLS и строить интеграции.
— Научитесь презентовать архитектурные решения перед бизнесом и командой.
В конце курса — разработаете архитектуру приложения по брифу от заказчика. Такой опыт поможет вам брать на себя ответственность за ведение проектов и быстро получить повышение на работе.
Спешите приобрести курс со скидкой!
Подробнее по ссылке https://epic.st/--So-
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
This media is not supported in your browser
VIEW IN TELEGRAM
— это многофункциональный набор инструментов для прокси на Android, который является улучшенной версией NekoBoxForAndroid.
В новой версии был удален нежелательный контент и значительно улучшен пользовательский интерфейс.
✔SOCKS (4/4a/5)
✔HTTP(S)
✔SSH
✔Shadowsocks
✔VMess
✔VLESS
✔WireGuard
✔Trojan
✔Trojan-Go ( trojan-go-plugin )
✔NaïveProxy ( naive-plugin )
✔Hysteria ( hysteria-plugin )
✔TUIC
🌐 F-droid
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Дайджест мобильной разработки за август
— Реализуем современный UI на Jetpack Compose
— «Подарил удочки и попрощался с друзьями на год»: как я стал Android-разработчиком, отказавшись даже от прогулок
— Мобильная разработка за неделю #506 (11 — 17 сентября)
— Understanding Stateful vs. Stateless Widgets in Flutter
— #11 Example of Views & View Groups in android | Android Studio Tutorial | SoftwareTechIT
— Why Should Startups Develop a React Native App?
— Stop Using Result Wrappers In Your Reactive Return Types
— #10 Introduction to Views & View groups |Android Studio Tutorial| #softwaretechit
— #9 Example Of Fragment in android | Android Studio Tutorial| #SoftwareTechIT
— Android Application(Shot badges notification)
— Android Application(Shot badges notification)
— Integrating Android MRZ Recognition in .NET MAUI: From AAR Files to a NuGet Package to a Complete App
— Using setState for Simple State Management in Flutter
Посмотреть:
🌐 Python Matplotlib. Визуализация данных на PRO уровне. (⏱ 24:43)
🌐 Поиск мотивации. Ментор же решит всё. Что мне делать (⏱ 21:39)
🌐 Собеседование на Mobile Developer. Алексей Панов, Контур (⏱ 01:50:36)
🌐 Модерация приложений и игр в магазине. RuStore (⏱ 01:06:06)
Хорошего дня!
@android_its
Почитать:
— Дайджест мобильной разработки за август
— Реализуем современный UI на Jetpack Compose
— «Подарил удочки и попрощался с друзьями на год»: как я стал Android-разработчиком, отказавшись даже от прогулок
— Мобильная разработка за неделю #506 (11 — 17 сентября)
— Understanding Stateful vs. Stateless Widgets in Flutter
— #11 Example of Views & View Groups in android | Android Studio Tutorial | SoftwareTechIT
— Why Should Startups Develop a React Native App?
— Stop Using Result Wrappers In Your Reactive Return Types
— #10 Introduction to Views & View groups |Android Studio Tutorial| #softwaretechit
— #9 Example Of Fragment in android | Android Studio Tutorial| #SoftwareTechIT
— Android Application(Shot badges notification)
— Android Application(Shot badges notification)
— Integrating Android MRZ Recognition in .NET MAUI: From AAR Files to a NuGet Package to a Complete App
— Using setState for Simple State Management in Flutter
Посмотреть:
🌐 Python Matplotlib. Визуализация данных на PRO уровне. (⏱ 24:43)
🌐 Поиск мотивации. Ментор же решит всё. Что мне делать (⏱ 21:39)
🌐 Собеседование на Mobile Developer. Алексей Панов, Контур (⏱ 01:50:36)
🌐 Модерация приложений и игр в магазине. RuStore (⏱ 01:06:06)
Хорошего дня!
@android_its
👍4❤2🔥2
🔥 Дайджест полезных материалов из мира Android за неделю
Почитать:
— Возможна ли жизнь после плеймаркета?
— NoArchitecture Kotlin Compose
— Как Google победила фрагментацию и возвращает контроль над Android
— Мобильная разработка за неделю #507 (18 — 24 сентября)
— Mobile MVP — minimum viable Features
— Implementing Swipe-to-Refresh in Android Studio using Kotlin: Step-by-Step Tutorial
— I'm trying to running the react-native application
— Running a Node.js App (Angular/React) on Android using Termux
— How to setup Burp Suite on Android
— How to Create Time Picker Dialogue Android Tutorial | Best Android Developer Series #softwaretechit
— Jetpack Compose
— The Rise of Video Conferencing: How It's Transforming Communication in the Digital Age
— Implement RecyclerView using Swift PM libraries
— Leading Android App Developers - Transform Your Ideas into Apps with Experts in Android Mobile App Development
— Android Plataforma - Parte 0: Introdução à Série
Посмотреть:
🌐 Django начало работы. (⏱ 08:18)
🌐 Популярная задача с собеседования в Яндекс #python #задача #программирование #собеседование (⏱ 01:00)
🌐 Новые функции в IOS 17 (⏱ 00:29)
🌐 TokenFlow редактирование видео с помощью текстового описания (⏱ 00:22)
🌐 Парсер телеграм каналов на Python. Гайд по написанию мощного бота. (⏱ 11:58)
🌐 Задача из Собеседования в Яндекс с зарплатой 85000 рублей #python #собеседование #задача #yandex (⏱ 00:59)
🌐 Асинхронный парсинг сайтов на Python (⏱ 22:06)
🌐 Как изменились подходы к автоматизированному тестированию в Тинькофф — Валерий Суковых, Тинькофф (⏱ 36:35)
🌐 Как Google победила фрагментацию и возвращает контроль над Android (30 мин)
🌐 Dependency Management in a Multi-Module Project (25 мин)
🌐 Как работает шифрование. С нуля за 1 час (1 час)
🌐 Советы к собеседованию от эксперта после 100 собесов (1 час)
Доклады
🌐 Сергей Боиштян — Здоровье вашей Gradle-сборки (45 мин)
🌐 Андрей Данилов — Gradle Kotlin DSL: о чем умолчали в документации (45 мин)
Хорошего дня!
@android_its
Почитать:
— Возможна ли жизнь после плеймаркета?
— NoArchitecture Kotlin Compose
— Как Google победила фрагментацию и возвращает контроль над Android
— Мобильная разработка за неделю #507 (18 — 24 сентября)
— Mobile MVP — minimum viable Features
— Implementing Swipe-to-Refresh in Android Studio using Kotlin: Step-by-Step Tutorial
— I'm trying to running the react-native application
— Running a Node.js App (Angular/React) on Android using Termux
— How to setup Burp Suite on Android
— How to Create Time Picker Dialogue Android Tutorial | Best Android Developer Series #softwaretechit
— Jetpack Compose
— The Rise of Video Conferencing: How It's Transforming Communication in the Digital Age
— Implement RecyclerView using Swift PM libraries
— Leading Android App Developers - Transform Your Ideas into Apps with Experts in Android Mobile App Development
— Android Plataforma - Parte 0: Introdução à Série
Посмотреть:
🌐 Django начало работы. (⏱ 08:18)
🌐 Популярная задача с собеседования в Яндекс #python #задача #программирование #собеседование (⏱ 01:00)
🌐 Новые функции в IOS 17 (⏱ 00:29)
🌐 TokenFlow редактирование видео с помощью текстового описания (⏱ 00:22)
🌐 Парсер телеграм каналов на Python. Гайд по написанию мощного бота. (⏱ 11:58)
🌐 Задача из Собеседования в Яндекс с зарплатой 85000 рублей #python #собеседование #задача #yandex (⏱ 00:59)
🌐 Асинхронный парсинг сайтов на Python (⏱ 22:06)
🌐 Как изменились подходы к автоматизированному тестированию в Тинькофф — Валерий Суковых, Тинькофф (⏱ 36:35)
🌐 Как Google победила фрагментацию и возвращает контроль над Android (30 мин)
🌐 Dependency Management in a Multi-Module Project (25 мин)
🌐 Как работает шифрование. С нуля за 1 час (1 час)
🌐 Советы к собеседованию от эксперта после 100 собесов (1 час)
Доклады
🌐 Сергей Боиштян — Здоровье вашей Gradle-сборки (45 мин)
🌐 Андрей Данилов — Gradle Kotlin DSL: о чем умолчали в документации (45 мин)
Хорошего дня!
@android_its
👍7❤1🔥1
Pachli - это полнофункциональный Android-клиент.
- Разработан с использованием кооперативной модели разработки.
- Пользователи могут читать, отвечать, фильтровать, публиковать, отмечать избранные и продвигать сообщения.
- В приложении реализованы функции автономного чтения, черновиков сообщений и планирования постов.
- Поддерживается работа с несколькими аккаунтами.
- Есть возможность настройки тем и шрифтов.
- Пользователи имеют контроль над уведомлениями.
- В приложении можно просматривать популярные посты, ссылки и хэштеги.
🐱 GitHub
🔗F-droid
🌐Site
@android_its
- Разработан с использованием кооперативной модели разработки.
- Пользователи могут читать, отвечать, фильтровать, публиковать, отмечать избранные и продвигать сообщения.
- В приложении реализованы функции автономного чтения, черновиков сообщений и планирования постов.
- Поддерживается работа с несколькими аккаунтами.
- Есть возможность настройки тем и шрифтов.
- Пользователи имеют контроль над уведомлениями.
- В приложении можно просматривать популярные посты, ссылки и хэштеги.
🔗F-droid
🌐Site
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥1
Значительно ускоряем сборку проектов
В этой статье автор подробно разбирает, как устроена оптимизация компиляции в Gradle и почему она работает быстрее, чем в других системах сборки типа Bazel.
Автор раскроет, что такое интерфейс бинарных приложений (ABI), «заголовочные jar-файлы» и как они используются для избежания повторной компиляции.
📌 Читать
В этой статье автор подробно разбирает, как устроена оптимизация компиляции в Gradle и почему она работает быстрее, чем в других системах сборки типа Bazel.
Автор раскроет, что такое интерфейс бинарных приложений (ABI), «заголовочные jar-файлы» и как они используются для избежания повторной компиляции.
📌 Читать
❤4👍3🔥1
🔥 Дайджест полезных материалов из мира 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
Почитать:
— 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
👍5❤2🔥1
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥1🥰1
🔥 Дайджест полезных материалов из мира 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)
Хорошего дня!
Почитать:
— Определение произвольной точки на полигоне. 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)
Хорошего дня!
👍5❤1
Скриншот-тестирование — ценный метод проверки пользовательского интерфейса и предотвращения регрессий при обновлении экранов и компонентов. Однако, как и любой вид тестирования, он требует значительных временных затрат на написание и сопровождение тестов.
Showkase
Одним из способов автоматизации скриншот-тестирования является использование Showkase — библиотеки от Airbnb, предназначенной для генерации веб-компонентов, а также позволяющей с помощью Paparazzi автоматически тестировать все методы, аннотированные @Preview. Вот только для этого придется добавить Showkase в качестве зависимости для каждого модуля, в котором есть предварительные просмотры, требующие тестирования, что увеличит время сборки всех модулей, так как Showkase опирается на генерацию кода. Поэтому использование Showkase только для скриншот-тестов может оказаться не лучшим решением, поскольку это не основная функция библиотеки.
Отражение
Альтернативным подходом является использование отражения для поиска всех предварительных просмотров во время выполнения и динамического создания тестов для них. В этой статье предлагается реализация, которая, в отличие от базовой, является более гибким решением, предусматривающим дополнительные граничные случаи.
Для тестов мы будем использовать библиотеку Paparazzi, разработанную Cashapp. Главное ее преимущество — отсутствие необходимости в эмуляторе для выполнения тестов, что делает их более быстрыми и надежными.
Однако предлагаемое решение может работать и с другими библиотеками скриншот-тестирования. Если вам интересны альтернативы, загляните в этот Github-репозиторий. Здесь представлено много полезной информации обо всех доступных вариантах скриншот-тестирования в Android, включая подробные описания и кейсы реализации.
Пример проекта
📌 Читать дальше
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥2
Полезный репозиторий, в котором представлены все основные принципы чистой архитектуры: разделение ответственности, слоев, представления и данных.
Проект написан на Kotlin с применением Jetpack Compose и Coroutines. В нём есть юнит-тесты, интеграционные и анализ качества кода.
• Github
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2❤1
Что отличает архитектурные паттерны MVC, MVP, MVVM, MVVM-C и VIPER друг от друга?
Эти архитектурные паттерны являются одними из наиболее часто используемых при разработке приложений, как на платформах iOS, так и Android. Разработчики внедрили их, чтобы преодолеть ограничения предыдущих паттернов. Чем же они отличаются друг от друга?
- MVC, самый старый паттерн, появился почти 50 лет назад.
- В каждом паттерне есть "представление" (V), отвечающее за отображение содержимого и прием пользовательского ввода
- Большинство паттернов включают "модель" (M) для управления бизнес-данными.
- "Контроллер", "презентатор" и "представление-модель" - это трансляторы, которые являются посредниками между представлением и моделью ("сущность" в паттерне VIPER).
- Эти трансляторы могут быть достаточно сложными в написании, поэтому были предложены различные паттерны, позволяющие сделать их более удобными в эксплуатации
От себя: имейте в виду, что это не исчерпывающий список архитектурных паттернов. Среди других известных паттернов можно отметить Flux и Redux.
@android_its
Эти архитектурные паттерны являются одними из наиболее часто используемых при разработке приложений, как на платформах iOS, так и Android. Разработчики внедрили их, чтобы преодолеть ограничения предыдущих паттернов. Чем же они отличаются друг от друга?
- MVC, самый старый паттерн, появился почти 50 лет назад.
- В каждом паттерне есть "представление" (V), отвечающее за отображение содержимого и прием пользовательского ввода
- Большинство паттернов включают "модель" (M) для управления бизнес-данными.
- "Контроллер", "презентатор" и "представление-модель" - это трансляторы, которые являются посредниками между представлением и моделью ("сущность" в паттерне VIPER).
- Эти трансляторы могут быть достаточно сложными в написании, поэтому были предложены различные паттерны, позволяющие сделать их более удобными в эксплуатации
От себя: имейте в виду, что это не исчерпывающий список архитектурных паттернов. Среди других известных паттернов можно отметить Flux и Redux.
@android_its
👍7❤3🔥2
🔥 Дайджест полезных материалов из мира 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
Почитать:
— Электронные книги? Аудиокниги? Смешать, но не взбалтывать
— Оптимизируя 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
👍5❤1
Настройка 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"))
}
}
}
}
Окончательный результат
Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1👍1
🎉 Мы рады сообщить, что в Android добавлена поддержка RISC-V 👉 https://goo.gle/3QDaYfl
RISC-V - это открытый стандарт архитектуры наборов инструкций (ISA), обеспечивающий новую эру инноваций в области процессоров.
RISC-V - это открытый стандарт архитектуры наборов инструкций (ISA), обеспечивающий новую эру инноваций в области процессоров.
👍7🔥3❤1
Emudroid
- это бесплатный эмулятор Android, предназначенный для использования на macOS.
Он позволяет пользователям создавать и сохранять виртуальные экземпляры различных смартфонов Android, включая самые новые модели Google Pixel.
С помощью данной утилиты можно легко скачивать и устанавливать свои любимые приложения и игры из Google Play Store, а также проводить тестирование своих веб-сайтов и приложений прямо внутри эмулятора Android.
📌Пробовать
- это бесплатный эмулятор Android, предназначенный для использования на macOS.
Он позволяет пользователям создавать и сохранять виртуальные экземпляры различных смартфонов Android, включая самые новые модели Google Pixel.
С помощью данной утилиты можно легко скачивать и устанавливать свои любимые приложения и игры из Google Play Store, а также проводить тестирование своих веб-сайтов и приложений прямо внутри эмулятора Android.
📌Пробовать
👍6❤2🔥1
🔥 Дайджест полезных материалов из мира 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
Почитать:
— Как продвигать приложения: советы от 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
🔥3❤2
Иногда требуется установить приложение на устройство не как пользователю, а как разработчику другого приложения. Возможно, вашему приложению, будь то магазин приложений или файловый менеджер, требуется самообновление, а вы его не опубликовали на 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:
Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
Forwarded from Code Digest
🔥 Дайджест полезных материалов из мира 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 Denoscriptions 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)
Хорошего дня!
Почитать:
— Погружение в 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 Denoscriptions 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)
Хорошего дня!
👍6❤1🔥1
Рассмотрим 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), которая предоставляет программистам доступ к широкому набору инструментов, повышающих уровень комфорта при создании сложных приложений.
📌 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1