We Love Android
622 subscribers
259 photos
26 videos
4 files
630 links
Новости из мира Android-разработки
Download Telegram
Достаточно забавный доклад с Droidcon Berlin 2019, где индусы (?) из Убера рассказывают как пишут бизнес-логику на Go и как все это дело потом компилится в AAR.

Видео:
https://www.droidcon.com/media-detail?video=352686984

Полезная ссылка:
https://godoc.org/golang.org/x/mobile/cmd/gomobile
Автор по шагам рассказывает о переходе на Kotlin Gradle DSL. Ничего лишнего, все по делу.

Можно отметить, что такой подход весьма интересен, но возникает некоторая сложность с пониманием того, что у некоторой зависимости появилась новая версия. На данный момент при таком подходе студия подсказок не выдает.

https://proandroiddev.com/converting-your-android-gradle-scripts-to-kotlin-1172f1069880
И набравший больше всего голосов доклад с весеннего мобиуса: Денис Неклюдов рассказывал об используемой архитектуре в Lyft.

Некоторые моменты, которые хочется отметить из доклада:
- создают собственные обертки, которые пытаются скрыть использование зависимостей от Android Framework;
- перешли к MVI;
- живут feature-модулями (разные команды несут ответственность за разные модули);
- для сборки проекта используют Bazel, а не Gradle (но для этого есть специальные люди, занимающиеся только сборкой);
- обмазываются линтерами;
- Gitflow упрощенный, фича-ветки льются сразу в мастер;
- используют Feature flags для управления содержимым напрямую с сервера;
- бережно относятся к документации API в Swagger;
- для DI используют Dagger2 (страдают, но альтернатив для проектов такого масштаба особо нет);
- обращает внимание на важность реализации механизма принудительного обновления приложения;
- используют собственную дизайн систему для вьюшек.

https://www.youtube.com/watch?v=_cFHtjIWjCc
Автор рассказывает про новый механизм взаимодействия с View - View Binding. Пытается объяснить, чем это решение лучше findViewById и котлиновских синтетиков.

По итогу, плюсом получаем type safety, а минусом - кодген.

https://joebirch.co/2019/09/18/exploring-view-binding-on-android/
Достаточно живой доклад с Droidcon Berlin 2019, где автор рассказывает про некоторые вещи в Kotlin, которые разработчики зачастую делают, а их следовало бы избегать.

https://www.droidcon.com/media-detail?video=352688794
Насыщенная подробностями история о том, как чувак реверсил игру HackEx.

Обшая последовательность шагов была примерно следующая:

- установил на эмулятор с рутом данную игру;
- собрал дамп сетевого трафика, загрузив tcpdump на устройство;
- проанализировал собранный дамп, убедился, что трафик под SSL;
- чтобы залезть под SSL использовал burp в качестве прокси и установку сертификата в список доверенных;
- собрал дамп сетевого трафика еще раз, уже используя burp, по итогу теперь может смотреть под SSL;
- проанализировав HTTP-запросы, убедился для проверки подлинности используется специальная подпись sig;
- разреверсил апкшку с помощью jadx и нашел необходимую функцию подписи в коде, но не все так просто - сама функция была определена сошке;
- вытащил из апкшки данную сошку и, открыв её с помощью radare2, смог достаточно поверхностно понять алгоритм работы функции подписи;
- затем перешел к динамическому анализу, собрал тестовый пример с использованием данной сошки и функции подписи, подключился с помощью GDB и занялся отладкой (это прям очень сурово);
- после адской отладки, окончательно выяснил как работает функция подписи, смог реализовать собственный аналог и пример, на котором показал успешный итоговый результат.

https://0x00sec.org/t/reversing-hackex-an-android-game/16243
Автор статьи делает базовое введение в функциональное программирование и рассказывает как писать код на Kotlin в функциональном стиле. В конце статьи рассказывает об использовании библиотеки Arrow.

https://www.raywenderlich.com/9527-functional-programming-with-kotlin-and-arrow-getting-started
Доклад с Droidcon Berlin 2019, посвященный анализу данных, которые Google собирает c Android устройств. Позволяет понять чуть больше о том, на основе каких данных строится уникальный отпечаток устройства.

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

https://www.droidcon.com/media-detail?video=352688386
И еще один доклад с Droidcon Berlin 2019. Автор рассказывает о малоизвестных вещах, найденных им в исходниках AndroidX:
- LocalBroadcastManager;
- VersionedParcelable;
- EmojiCompat;
- ImmLeakCleaner.

https://www.droidcon.com/media-detail?video=352671901
Автор рассказывает про механизм анализа apk файлов, используемый в Google Play Protect.

Сам процесс происходит в полуавтоматическом режиме: анализируемые файл прогоняется с помощью ML алгоритмов и если результат подозрительный, то затем происходит ручная проверка - по сути реверс апкшки и её статический и динамический анализ.

Набор инструментов для анализа достаточно стандартный: для статики - apktool, jadx, jeb, IDA, для динамики - Frida, gdb.

https://www.droidcon.com/media-detail?video=352670021
Еще один интересный троян-кликер найден в Google Play. Его основная функция заключалась в незаметной попытке осуществления подписки на платные сервисы.

Дополнительно запакован с помощью пакера Jiagu и пытается мимикрировать под Facebook SDK или Adjust SDK.

Сам троян был ориентирован на определенный набор стран, взаимодействуя с управляющим сервером, получая команды в виде JavaScript кода и выполняя их в невидимом WebView.

https://news.drweb.com/show/?i=13464&lng=en
Стартовал Android Dev Summit 2019. Из Keynote доклада хотелось бы отметить следующие вещи:
- уже доступна Android Studio 4.0 Canary 1, в которой можно пощупать Jetpack Compose;
- для Jetpack Compose добавлен предпросмотр, правда сделано это специальной аннотацией и надо компилить код;
- визуальный редактор MotionLayout доступен из новой студии;
- наконец-таки обещают полную поддержку Gradle Kotlin Scripts в новой студии;
- CameraX уже в бете.

https://www.youtube.com/watch?v=5jJ-e278BFY
Библиотека Store предоставялет удобную обертку для асинхронного получения данных и их кеширования, по сути реализуя паттерн Repository. Все API реализована но Kotlin и использует корутины.

https://github.com/dropbox/Store
Практически в каждом современном Android проекте при необходимости реализации REST API используется библиотека Retrofit. Но как именно работает Retrofit, если он не использует кодогенерацию?

Ответ можно найти в данной статье, а также подробнее узнать как устроено Java Dynamic Proxy API и проксирование вызовов через InvocationHandler.

https://medium.com/mindorks/understand-how-does-retrofit-work-c9e264131f4a
Статья о базовых механизмах безопасной передачи и хранения данных, которые необходимо поддерживать в любом современном мобильном приложении.

https://quickbirdstudios.com/blog/mobile-app-security-best-practices-android-ios/