Reddit Recap и Jetpack Compose в приложении
Разработчики Reddit поделились своим опытом реализации анимаций на Jetpack Compose и обновленным пользовательским интерфейсом в приложении. Им пришлось полностью переписать весь UI с нуля на Compose, чтобы улучшить тем самым архитектуру проекта. Подробная история — здесь: https://www.reddit.com/r/RedditEng/comments/12axmiu/building_reddit_recap_with_jetpack_compose_on/
@android_its
Разработчики Reddit поделились своим опытом реализации анимаций на Jetpack Compose и обновленным пользовательским интерфейсом в приложении. Им пришлось полностью переписать весь UI с нуля на Compose, чтобы улучшить тем самым архитектуру проекта. Подробная история — здесь: https://www.reddit.com/r/RedditEng/comments/12axmiu/building_reddit_recap_with_jetpack_compose_on/
@android_its
❤2
Обновился гайд по обработке поворота экрана и прочих смен конфигурации. Хороший повод перечитать и освежить знания.
#android #configchanges
https://developer.android.com/guide/topics/resources/runtime-changes
@android_its
#android #configchanges
https://developer.android.com/guide/topics/resources/runtime-changes
@android_its
Android Developers
Handle configuration changes | App architecture | Android Developers
Handle configuration changes in your Android app.
👍4❤1🔥1
6 полезных шаблонов проектирования для Android-разработчика
Шаблоны проектирования не являются специфичными для какого-либо языка программирования или технологии и могут применяться в самых разных проектах. Однако в этой статье, автор подобрал наиболее полезные паттерны в разработке под Android: Builder, Factory, Singleton и другие:
https://medium.com/@naeem0313/6-design-patterns-every-android-developer-must-know-a1ae0954bf21
#android
Шаблоны проектирования не являются специфичными для какого-либо языка программирования или технологии и могут применяться в самых разных проектах. Однако в этой статье, автор подобрал наиболее полезные паттерны в разработке под Android: Builder, Factory, Singleton и другие:
https://medium.com/@naeem0313/6-design-patterns-every-android-developer-must-know-a1ae0954bf21
#android
Medium
6 Design Patterns Every Android Developer Must Know
A design pattern is a general, repeatable solution to a commonly occurring problem in software design. Design patterns provide a way to…
❤4
Android 14 Beta 1
Google выпустила первую бета-версию Android 14. Приложения уже можно протестировать и оставить отзыв о версии. В бета версии пока мало нововведений: новая стрелка назад и более удобный шеринг, а также дополнительные графические возможности.
Подробнее:
https://android-developers.googleblog.com/2023/04/android-14-beta-1.html
#android
Google выпустила первую бета-версию Android 14. Приложения уже можно протестировать и оставить отзыв о версии. В бета версии пока мало нововведений: новая стрелка назад и более удобный шеринг, а также дополнительные графические возможности.
Подробнее:
https://android-developers.googleblog.com/2023/04/android-14-beta-1.html
#android
👍2
«Чем новее, тем лучше: как мы с GSON на Kotlinx.Serialization переезжали»
Андрей Мещеряков, Android-разработчик в команде роста Тинькофф Инвестиций, поделился опытом миграции с Gson на Kotlinx.
С помощью Kotlinx.Serialization разработчики могут сериализовывать данные в такие форматы, как JSON, XML и Protocol Buffers, что делает его ценным инструментом для создания веб-сервисов и приложений. Автор статьи рассказал о подводных камнях, с которыми могут столкнуться разработчики, используя Kotlinx в проекте:
https://habr.com/ru/companies/tinkoff/articles/728928/
#kotlin #android
Андрей Мещеряков, Android-разработчик в команде роста Тинькофф Инвестиций, поделился опытом миграции с Gson на Kotlinx.
С помощью Kotlinx.Serialization разработчики могут сериализовывать данные в такие форматы, как JSON, XML и Protocol Buffers, что делает его ценным инструментом для создания веб-сервисов и приложений. Автор статьи рассказал о подводных камнях, с которыми могут столкнуться разработчики, используя Kotlinx в проекте:
https://habr.com/ru/companies/tinkoff/articles/728928/
#kotlin #android
👍4❤3🔥1
#mobile #pentest #bugbounty #practice
Пошаговая настройка лаборатории для анализа безопасности Android-приложений: гайд для начинающего багхантера.
Читать
@android_its
Пошаговая настройка лаборатории для анализа безопасности Android-приложений: гайд для начинающего багхантера.
Читать
@android_its
TrustedSec
Set Up an Android Hacking Lab for $0
Prerequisites: Python3 - https://www.python.org/downloads/ Android Studio - https://developer.android.com/studio Android Platform-Tools -…
❤3👍1🔥1😡1
В исследование безопасности мобильного приложения среди прочего входит анализ трафика. Но как поднять прокси-сервер для перехвата сетевого трафика Android-устройства?
Есть несколько способов, каждый из которых имеет свои достоинства и недостатки. Подробности — в пошаговом руководстве.
Есть несколько способов, каждый из которых имеет свои достоинства и недостатки. Подробности — в пошаговом руководстве.
GitHub
GitHub - LabCIF-Tutorials/Tutorial-AndroidNetworkInterception: How to intercept network trafic on Android
How to intercept network trafic on Android. Contribute to LabCIF-Tutorials/Tutorial-AndroidNetworkInterception development by creating an account on GitHub.
👍4❤1🔥1🤡1
Переход с MVVM на MVI
Во время перехода на Jetpack Compose разработчик из GityMarket заметил, что некоторые методы во ViewModel перестали соответствовать правилам SOLID. Это отразилось на тестирование и стало понятно, что нужно делать рефакторинг кода или менять архитектуру проекта. Выбор пал на MVI. Свою реализацию автор разбирает в статье, а именно — UI и ViewModel:
https://proandroiddev.com/migrate-from-mvvm-to-mvi-f938c27c214f
#Android
@android_its
Во время перехода на Jetpack Compose разработчик из GityMarket заметил, что некоторые методы во ViewModel перестали соответствовать правилам SOLID. Это отразилось на тестирование и стало понятно, что нужно делать рефакторинг кода или менять архитектуру проекта. Выбор пал на MVI. Свою реализацию автор разбирает в статье, а именно — UI и ViewModel:
https://proandroiddev.com/migrate-from-mvvm-to-mvi-f938c27c214f
#Android
@android_its
Medium
Migrate from MVVM to MVI
This is the explanation of how we decided to switch from CLEAN + MVVM architecture to CLEAN + MVI when migrating to Jetpack Compose.
👍3🔥1🥰1
Руководство для начинающих по работе с Build Gradle с полным разбором файлов конфигурации:
— settings.gradle / setings.gradle.kts,
— build.gradle / build.gradle.kts,
— gradle.properties,
— build.gradle / build.gradle.kts:
https://vtsen.hashnode.dev/beginners-guide-to-understand-build-gradle-files-in-android-studio
#gradle #Android
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2❤1
📲 Тинькофф проведет Android-митап в Петербурге
Встреча пройдет 18 мая в особняке «Пальма». Ребята расскажут, как адаптировать ваше Android-приложение для поддержки устройств с большими экранами, и разберут возможности SDK. В конце митапа выступит Кирилл Розов с докладом про запуск задач в фоне.
Не забудьте зарегистрироваться и позвать с собой коллег.
🗓 До встречи 18 мая в Петербурге на IT’s Tinkoff Mobile Meetup!
Встреча пройдет 18 мая в особняке «Пальма». Ребята расскажут, как адаптировать ваше Android-приложение для поддержки устройств с большими экранами, и разберут возможности SDK. В конце митапа выступит Кирилл Розов с докладом про запуск задач в фоне.
Не забудьте зарегистрироваться и позвать с собой коллег.
🗓 До встречи 18 мая в Петербурге на IT’s Tinkoff Mobile Meetup!
👍1
Разбор практических кейсов уменьшения размера Android-приложения от Кирилла Розова.
🌐 Смотреть
@android_its
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Как уменьшить размер Android приложения
Лучшие практики по уменьшению размера Android приложения
🔗 Технологии и вакансии AvitoTech https://cutt.ly/X7w1vvC
🔗 Telegram канал "Android Broadcast" https://ttttt.me/android_broadcast
💰 Поддержать проект на Boosty https://boosty.to/androidbroadcast…
🔗 Технологии и вакансии AvitoTech https://cutt.ly/X7w1vvC
🔗 Telegram канал "Android Broadcast" https://ttttt.me/android_broadcast
💰 Поддержать проект на Boosty https://boosty.to/androidbroadcast…
❤3👍2🔥1
Лучшие практики, которые позволят предотвратить ошибки в ходе оптимизации iOS-приложения для плохих сетевых условий.
Читать
Читать
AppTractor
Оптимизация приложения для сетевой доступности
Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых условий очень важна.
❤4👍2🔥1
Что нового в Jetpack и Jetpack Compose
10 мая в Маунтин-Вью в Калифорнии началась ежегодная конференция Google I/O 2023. Разработчики OS Android рассказали об обновлениях в Jetpack и Jetpack Compose.
В материале разработчики рассказывают об оптимизации производительности приложений, обновлениях ключевых библиотек, и о библиотеках UI, в том числе Compose:
https://android-developers.googleblog.com/2023/05/whats-new-in-jetpack-io-2023.html
Более подробно об обновлениях в Jetpack Compose в статье:
https://android-developers.googleblog.com/2023/05/whats-new-in-jetpack-compose.html
#jetpack #compose
10 мая в Маунтин-Вью в Калифорнии началась ежегодная конференция Google I/O 2023. Разработчики OS Android рассказали об обновлениях в Jetpack и Jetpack Compose.
В материале разработчики рассказывают об оптимизации производительности приложений, обновлениях ключевых библиотек, и о библиотеках UI, в том числе Compose:
https://android-developers.googleblog.com/2023/05/whats-new-in-jetpack-io-2023.html
Более подробно об обновлениях в Jetpack Compose в статье:
https://android-developers.googleblog.com/2023/05/whats-new-in-jetpack-compose.html
#jetpack #compose
❤2👍2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Сокращение времени запуска Android-приложения
Время запуска — это первое впечатление пользователей о приложении, и медленная загрузка может негативно сказаться на удержании и привлечении пользователей.
Статья рассказывает о том, как разработчики Turo (каршеринг-приложение) сократили время запуска программы на 77%:
https://medium.com/androiddevelopers/turo-reduced-its-app-startup-time-by-77-using-android-developer-tools-and-best-practices-bcf82f596bcf
#android
Время запуска — это первое впечатление пользователей о приложении, и медленная загрузка может негативно сказаться на удержании и привлечении пользователей.
Статья рассказывает о том, как разработчики Turo (каршеринг-приложение) сократили время запуска программы на 77%:
https://medium.com/androiddevelopers/turo-reduced-its-app-startup-time-by-77-using-android-developer-tools-and-best-practices-bcf82f596bcf
#android
👍5❤3🔥1
Серия из 4 видео про работу с камерой
CameraX concepts - https://www.youtube.com/watch?v=I4rDx90Nlus
Setup and permissions - https://www.youtube.com/watch?v=XUN6mUQiDpg
CameraController basics - https://www.youtube.com/watch?v=fazzQs-O31U
CameraProvider basics - https://www.youtube.com/watch?v=OfjPOUunkc8
#android #camera
CameraX concepts - https://www.youtube.com/watch?v=I4rDx90Nlus
Setup and permissions - https://www.youtube.com/watch?v=XUN6mUQiDpg
CameraController basics - https://www.youtube.com/watch?v=fazzQs-O31U
CameraProvider basics - https://www.youtube.com/watch?v=OfjPOUunkc8
#android #camera
YouTube
CameraX concepts
In this video, we’ll take a look at the CameraX Jetpack library, which is the easiest way to add rich camera functionality to your Android application. CameraX provides common camera functionality through 4 UseCases: Preview, ImageCapture, VideoCapture, and…
👍5🔥3❤1
apk.sh
apk.sh — это скрипт Bash, упрощающий обратное проектирование Android-приложений, автоматизируя некоторые повторяющиеся задачи, такие как извлечение, декодирование, пересборка и исправление APK.
apk.sh в основном использует apktool для дизассемблирования, декодирования и восстановления ресурсов и немного bash для автоматизации процесса внедрения гаджета frida.
Android-устройство с root-правами не требуется.
https://github.com/ax/apk.sh
apk.sh — это скрипт Bash, упрощающий обратное проектирование Android-приложений, автоматизируя некоторые повторяющиеся задачи, такие как извлечение, декодирование, пересборка и исправление APK.
apk.sh в основном использует apktool для дизассемблирования, декодирования и восстановления ресурсов и немного bash для автоматизации процесса внедрения гаджета frida.
Android-устройство с root-правами не требуется.
https://github.com/ax/apk.sh
👍4❤2🔥2
Еще раз про Async Tasks
Очень понравилось толкование материала. Для новичков будет весьма полезно. Автор объясняет материал не сухими терминами, а пытается донести до каждого идею асинхронности. Очень рекомендуем!
#дайджестновостей
Очень понравилось толкование материала. Для новичков будет весьма полезно. Автор объясняет материал не сухими терминами, а пытается донести до каждого идею асинхронности. Очень рекомендуем!
#дайджестновостей
👍5❤1🔥1
💻10 функции высшего порядка используемые в проектах Android.
👂Слушатели событий
Слушатели событий — распространенный случай использования функций высшего порядка при разработке Android. Рассмотрим следующую функцию, которая принимает в качестве аргумента функцию высшего порядка для обработки события нажатия кнопки:
Эта функция расширяет класс View и принимает лямбда-выражение, которое будет выполняться при нажатии по представлению (view). Для настройки слушателя нажатия для представления используется метод setOnClickListener, а лямбда-выражение выполняется, когда происходит событие нажатия.
Используя эту функцию, можно обрабатывать события нажатия кнопки кратким и читабельным способом:
🖼Анимация представлений
Анимация в Android легче сделать гибкой и многоразовой, используя функции высшего порядка. Вот пример расширения класса View с функциями высшего порядка для анимации свойств:
📃RecyclerView
Одним из примеров использования RecyclerView в качестве функции высшего порядка является создание функции, которая принимает список элементов и функцию для привязки каждого элемента к держателю представления и возвращает настроенный адаптер RecyclerView.
🖊Обработка разрешений
Обработка разрешений — распространенная задача при создании мобильных приложений.
Вот пример реализации на языке Kotlin:
Эту функцию можно использовать следующим образом:
▪ Читать дальше
@android_its
👂Слушатели событий
Слушатели событий — распространенный случай использования функций высшего порядка при разработке Android. Рассмотрим следующую функцию, которая принимает в качестве аргумента функцию высшего порядка для обработки события нажатия кнопки:
fun View.onClick(action: () -> Unit) {
setOnClickListener { action() }
}Эта функция расширяет класс View и принимает лямбда-выражение, которое будет выполняться при нажатии по представлению (view). Для настройки слушателя нажатия для представления используется метод setOnClickListener, а лямбда-выражение выполняется, когда происходит событие нажатия.
Используя эту функцию, можно обрабатывать события нажатия кнопки кратким и читабельным способом:
button.onClick {
Toast.makeText(context, "Button clicked", Toast.LENGTH_SHORT).show()
}🖼Анимация представлений
Анимация в Android легче сделать гибкой и многоразовой, используя функции высшего порядка. Вот пример расширения класса View с функциями высшего порядка для анимации свойств:
fun View.animateProperty(
property: KProperty0<Float>,
fromValue: Float,
toValue: Float,
duration: Long,
onComplete: () -> Unit = {}
) {
val animator = ObjectAnimator.ofFloat(this, property.name, fromValue, toValue).apply {
setDuration(duration)
addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
onComplete()
}
})
}
animator.start()
}📃RecyclerView
Одним из примеров использования RecyclerView в качестве функции высшего порядка является создание функции, которая принимает список элементов и функцию для привязки каждого элемента к держателю представления и возвращает настроенный адаптер RecyclerView.
fun <T> RecyclerView.bindData(
data: List<T>,
layoutRes: Int,
bindFunc: (View, T) -> Unit,
clickListener: ((T) -> Unit)? = null
) {
adapter = object : RecyclerView.Adapter<ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(layoutRes, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = data[position]
bindFunc(holder.itemView, item)
clickListener?.let { listener ->
holder.itemView.setOnClickListener { listener(item) }
}
}
override fun getItemCount() = data.size
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
}
}🖊Обработка разрешений
Обработка разрешений — распространенная задача при создании мобильных приложений.
Вот пример реализации на языке Kotlin:
fun Activity.withPermissions(vararg permissions: String, callback: () -> Unit) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val ungrantedPermissions = permissions.filter {
checkSelfPermission(it) == PackageManager.PERMISSION_DENIED
}
if (ungrantedPermissions.isEmpty()) {
// Все разрешения предоставлены, выполнить обратный вызов
callback()
} else {
// Запрос разрешений
requestPermissions(ungrantedPermissions.toTypedArray(), 0)
}
} else {
// Устройства до версии Marshmallow, выполнение обратного вызова
callback()
}
}Эту функцию можно использовать следующим образом:
withPermissions(
Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
) {
// Код для выполнения при получении разрешений
}▪ Читать дальше
@android_its
👍6❤2🔥2
Android NDK. Как писать под Android на C++
Интервью с разработчиком в платформенной команде inDriver, который непонаслышке знает что такое Android NDK и зачем он нужен. Он рассказал как пишется C++ код для Android и многое другое.
https://youtu.be/RemuJrVrO8U
@android_its
Интервью с разработчиком в платформенной команде inDriver, который непонаслышке знает что такое Android NDK и зачем он нужен. Он рассказал как пишется C++ код для Android и многое другое.
https://youtu.be/RemuJrVrO8U
@android_its
YouTube
Android NDK. Как писать под Android на C++
Задал кучу вопрос про работу с Android NDK. Уровень базовый, но тем, кто там не копался, может быть полезно.
Если у вас есть интересный опыт в разработке, которым вы хотите поделиться в формате доклада или интервью, то пишите kirill@androidbroadcast.dev…
Если у вас есть интересный опыт в разработке, которым вы хотите поделиться в формате доклада или интервью, то пишите kirill@androidbroadcast.dev…
👍5🔥1🤔1
Пост-дайджест туториалов по разработке для Android: в статьях — полезные весьма полезные штуки — вам должно понравиться 😎
👉 Своя библиотека под Android за один вечер
👉 Кастомный TabRow Indicator в Jetpack Compose
👉 10 полезных функций Kotlin для разработчиков Android
👉 Создаем фоновую службу для Android, которая будет работать вечно
👉 Реализуем WhatsApp’s Circular Reveal на Jetpack Compose
👉 Мануал по созданию приложений с чистой архитектурой, модульностью и тестированием
#дайджест
👉 Своя библиотека под Android за один вечер
👉 Кастомный TabRow Indicator в Jetpack Compose
👉 10 полезных функций Kotlin для разработчиков Android
👉 Создаем фоновую службу для Android, которая будет работать вечно
👉 Реализуем WhatsApp’s Circular Reveal на Jetpack Compose
👉 Мануал по созданию приложений с чистой архитектурой, модульностью и тестированием
#дайджест
👍7❤1🔥1
1. ADB Idea
ADB Idea – это плагин, созданный для Android Studio и Intellij IDEA с целью упрощения процесса разработки под андроид. Он позволяет выполнять различные необходимые действия одним щелчком мыши, вместо того чтобы создавать их с нуля, что в конечном итоге ускоряет процесс разработки.
2. CodeGlance
CodeGlance – это своего рода мини-карта всего кода, которая позволяет с первого взгляда увидеть весь блок кода. После включения CodeGlance весь код отображается сбоку экрана в формате миникарты, откуда можно быстро перейти к нужному участку кода, выбрав его в поле CodeGlance. CodeGlance также отображает цвет блоков, что делает его еще более понятным и продуктивным.
3. Key Promoter X
При работе над проектами Android Key Promoter X помогает добиться необходимых сочетаний клавиш. Key Promoter X отображает сочетание клавиш, которое следовало бы использовать вместо того, чтобы нажать на кнопку в IDE с помощью мыши.
4. Scala
Sbt-android – это основной инструмент, используемый для создания Android-приложений на Scala. С помощью задач sbt этот плагин предлагает вам быстро собрать и запустить ваше приложение из консоли sbt. Что еще лучше, он автоматически загружает и обновляет Android SDK за вас. Как создать новый проект с помощью sbt-android и как настроить IntelliJ, очень хорошо объясняется в README в репозитории GitHub (или Android Studio).
5. IdeaVim
IdeaVim предлагает поддержку широкого спектра возможностей Vim, включая клавиши движения, удаление/изменение, метки, регистры, некоторые команды Ex, регексы Vim, конфигурацию через /.ideavimrc, макросы, плагины Vim и т.д.
6. Android Input
При разработке приложений для Android часто возникает необходимость ввода текста для тестирования определенных функций или функциональности на реальном устройстве Android или эмуляторе.
7. Android Drawable Preview
Android Drawable Preview вставляет превьюшки используемых рисованных файлов вместо стандартных иконок файлов в представлении проекта. Чтобы узнать, какой именно файл вы использовали, просто просмотрите папки в представлении проекта при использовании плагина.
🙌Плагины улучшают процесс работы и повышают производительность, но их избыточное количество может негативно сказаться на результативности. Для предотвращения этого следует разумно подойти к выбору плагинов и использовать только лучшие из них.
@android_its
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2❤1👎1