We Love Android – Telegram
We Love Android
630 subscribers
259 photos
26 videos
4 files
630 links
Новости из мира Android-разработки
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Выпадающее анимированное меню на Jetpack Compose

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

Как использовать: https://github.com/AndroidPoet/Dropdown

#android #библиотеки
Forwarded from Mobile AppSec World (Yury Shabalin)
Способы определения и способы обхода обнаружения отладки приложения.

Хорошая статья на корейском языке, которая описывает способы обнаружить, что приложение пытаются отладить или устройство подключено к компьютеру и активирован режим отладки по USB.

Вообще, наверное, самая полная статья по этому вопросу. Если вы, как и я не знаете корейский, то вот ссылка на переведенный вариант (спасибо гугл-транслейт)

Будет полезно как для разработки, чтобы включить эти проверки к себе в приложение, так и для тех, кто эти проверки собирается обойти 😄 не проходите мимо, забирайте и используйте, метод обнаружения достаточно интересный, особенно по сравнению с классическим android.os.Debug.isDebuggerConnected(),на который проверяют все популярные фреймворки по обнаружению отладчика.

#android #debug #frida
👍1
Forwarded from Mobile AppSec World (Yury Shabalin)
Быстрый способ проверить наличие обфускации, тип шифрования apk и различных проверок

Очень полезный инструмент для быстрого анализа приложения на наличие обфускации или специального пакера, который зашифровывает dex файлы.

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

|-> anti_vm : Build.FINGERPRINT check, Build.MANUFACTURER check, Build.MODEL check, Build.PRODUCT check, Build.TAGS check, SIM operator check, device ID check, network operator name check, ro.kernel.qemu check
|-> compiler : r8
|-> obfuscator : unreadable field names, unreadable method names

То есть, теперь нет необходимости вручную смотреть, какие проверки есть внутри приложения и что нужно подменять, а достаточно запустить простую команду, передать ей на вход имя файла и получить результат.

Конечно, инструмент не покрывает всех проверок, но в качестве отправной точки может неплохо помочь.

Удачного использования!

#android #obfuscation #apk #emulation
👍2
Forwarded from Android Broadcast
#testing #coroutines

Google обновила руководство по тестированию Coroutine с учетом изменений в библиотеке Kotlinx Coroutines 1.6:
👉 как вызывать suspend функции в тестах
👉 новые TestDispatcher
👉 подмена Dispatcher-ов
👉 тестовые CoroutineScope
👍1
Forwarded from StartAndroid
Новая стабильная версия студии - Chipmunk. Не очень много новых фич, но включены последние апдейты IntelliJ, и проведена работа над качеством и стабильностью.

#androidstudio

https://android-developers.googleblog.com/2022/05/android-studio-chipmunk.html
Forwarded from Mobile Compose
#Article #Blog

Productivity hack to save tens of engineering hours when working with Jetpack Compose

Любопытная статья с кликбейтным заголовком от Vinay Gaba о том, как микрооптимизация автодополнения кода вашего проекта на Compose поможет сэкономить десятки (по мнению автора) часов работы в год.
Forwarded from addmeto (Grigory Bakunov 🧪)
Google прямо сейчас проводит кейноут Google I/O 2022. Да, я тоже удивился, узнал об этом случайно, а там вероятно покажут новые Pixel Buds и Pixel Watch, лайв трансляция по ссылке https://www.youtube.com/watch?v=nP-nMZpLM1A
Forwarded from Android Live 🤖
​​Koin 3.2 - New DSL
#koin

Тут совсем недавно вышло крутое обновление библиотеки Koin, которое позволяет гораздо проще настраивать сам Koin — Constructor DSL.

Раньше типичный модуль в Koin выглядел следующим образом:

class MyClassA()
class MyClassB(val a : MyClassA)

// Let Koin find dependencies for you with get()
module {
single { MyClassA() }
single { MyClassB(get()) }
}


Как видно, в MyClassB нужно добавить get() по количеству параметров, которые в этот класс передаются. Если таких параметров будет много, то и число этих get() будет кратно увеличиваться.

В новой же версии мы получаем более удобную структуру:

class MyClassA(val id : String)

module {
singleOf(::MyClassA)
}

// in calling code
val classA : MyClassA by inject { parametersOf("_id_")}


То есть теперь все вызовы get() останутся в прошлом, и мы получим гораздо более красивый и читаемый код.
Больше примеров кода и инфа о других изменениях по ссылке.
👍2
Счетчик рекомпозиций - фича, о которой давно просило Android сообщество, уже совсем близко.

https://developer.android.com/studio/preview/features#li-compose-counter
👍1🔥1
Forwarded from Mobile Native ️️
Google Play SDK Index

Google представили прикольную штуку Google Play SDK Index – некий новый общедоступный портал, на котором собраны более 100 наиболее широко используемых коммерческих SDK с подробной инфой о каждом из них.

Посмотреть доступные sdk можно тут: Google Play SDK Index
Приложение Now in Android от Google, совмещающее в себе несколько полезных практик разработки

Now in Android — серия материалов от команды Android, в которых рассказывают о новостях, интересных статьях и крутых инструментах для Android-разработчиков.

Google опубликовала исходный код приложения Now in Android. В репозитории на GitHub вы можете познакомиться с примером реализации дизайна на Material3, а также с передовыми практиками разработки.

Репозиторий: https://github.com/android/nowinandroid

#android
👍2
Forwarded from Стой под стрелой (Nikita Prokopov)
В истории программирования много раз брали на лозунги шаблон Everything is a X:

- Everything is a string (TCL)
- Everything is a list (Lisp)
- Everything is a file (Unix)
- Everything is an object (OOP)
- Everything is a function (FP)

И знаете что? Каждый раз эта абстрация протекала сразу с момента ее создания. Медленно/неудобно/все равно нужно различать и т.п.

Когда нам в школе рассказывали про «everything is a file» я очень удивлялся: очевидно же, что, например, с сокетом, или с процессом, или с принтером ты хочешь делать совсем не те операции, что с файлом. Оказалось, что имеелось в виду, что в виде файла доступна какая-то ненужная тривиальщина типа пида процесса, я для нормальной работы есть нормальные специальные методы, которые не притворяются, что «все есть файл». И чего было заморачиваться, спрашивается?

Есть мнение, что и в будущем next big thing которая выберет своим лозунгом Everything is X окажется такой же дырявой еще на этапе создания. Потому что мир разный, работает по-разному и хотят от разных вещей разного. Засовывать круглое в квадратное так же логично, как носить кастрюлю в качестве головного убора. А притворяться, что это еще и удобно — ну это только программисты так могут.

Nothing is everything, короче.
👍1
Новое поделие: Media3 (от создателей ViewPager2, Camera2 и CameraX)

https://www.youtube.com/watch?v=Z6iFhczA3NY
😁1🤬1
Forwarded from Mobile Compose
#Video #Youtube #GoogleIO

Performance best practices for Jetpack Compose

Доклад с прошедшего Google I/O 2022, в котором спикеры рассказывают о лучших практиках Jetpack Compose в отношении производительности, а также о связанных с этим распространённых ошибках и способах их избежать.
Forwarded from Android Good Reads (Egor Tolstoy)
Поддержка MotionLayout в Jetpack Compose все еще в экспериментальном состоянии, но работать с ней вполне можно. В гайде разбирается, как с помощью MotionLayout анимировать несколько связанных между собой компонентов.
Forwarded from Mobile AppSec World (Yury Shabalin)
Доклады о мобильной безопасности с Positive Hack Days

Как вы знаете, на неделе прошла конференция Positive Hack Days и на ней были доклады про безопасность мобильных приложений.

Я ещё не все разобрал, но вот парочка достаточно интересных, которые можно посмотреть уже сейчас:

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

- Уязвимое мобильное приложение AllSafe глазами аналитика
Доклад от аналитиков Appscreener (статический анализатор), про уязвимое приложение и разбор нескольких уязвимостей в нем, как искать и как эксплуатировать:
* Sql Injection
* Arbitrary code execution
* Insecure Content Provider

А вот и сам код приложения. Что приятно, автор на каждый «флаг» дает ссылки на статьи/репорты о реально найденных подобных багах.


По мере просмотра, если найду что-то интересное из докладов, обязательно расскажу :)

#phd #video #mobile
Forwarded from Android Good Reads (Egor Tolstoy)
Mosaic – библиотека от Джейка Уортона для создания консольных интерфейсов поверх компилятора и рантайма Compose. Это – интересный кейс, потому что на его примере хорошо видно, что потенциальная сфера применения Compose намного шире, чем просто работа с UI. В статье разбирается, как библиотека устроена под капотом и как она взаимодействует с рантаймом Compose.
👍3
​​Первый взгляд на Privacy Sandbox для Android

В
апреле вышла первая Developer Preview версия Privacy Sandbox — набора инструментов, которые позволят улучшить конфиденциальность пользователей Android-устройств.

Разработчик протестировал один из элементов «песочницы» — SDK Runtime — и рассказал, как работает среда выполнения, а также поделился своими впечатлениями:

https://proandroiddev.com/a-first-look-googles-privacy-sandbox-and-its-effect-on-sdks-93b781470df9

#android
Forwarded from Mobile Developer (Алексей Гладков)
Тут человек разработал тулзу, которая позволяет на компоузе делать презентации в павер поинте) и это очень интересно, что компоуз всеми силами продвигают как инструмент не только для программистов

Ссылка тут - https://github.com/fgiris/composePPT
🤔1
Forwarded from Android Good Reads (Egor Tolstoy)
Роман Елизаров написал лонгрид про то, с какими проблемами сталкиваются дизайнеры Kotlin и как они оптимизируют язык с учетом реальных потребностей его пользователей:
0️⃣Поиск компромисса между null safety и интеропом с Java
🧱 Дизайн корутин с учетом необходимости интеграции их с уже написанными библиотеками
🤝Трейдоффы в системе вывода типов, усложняющие язык, но упрощающие частые юзкейсы разработчиков
🤏Как небольшие улучшения в языке тащат за собой много сложностей
👍1