#Decompilation #Reverse
Reverse engineering an Android Application
Реверс-инжиниринг — это целый пласт в IT сфере, который не обошёл стороной и мобильную разработку. Среди вакансий мобильных разработчиков периодически всплывают предложения на должность реверс-инженера. Понимание того как работает декомпиляция, помогает лучше понять структуру вашего приложения, погрузиться в недры Android и, зная о процессе декомпиляции, вы будете уже под другим углом смотреть на безопасность своего приложения.
В статье автор даёт азы реверс-инжиниринга, на примере показывает сам процесс, получая доступ к скрытому API, и рассказывает какими утилитами он пользуется, для того чтобы добраться до необходимых данных в декомпелируемом приложении.
Reverse engineering an Android Application
Реверс-инжиниринг — это целый пласт в IT сфере, который не обошёл стороной и мобильную разработку. Среди вакансий мобильных разработчиков периодически всплывают предложения на должность реверс-инженера. Понимание того как работает декомпиляция, помогает лучше понять структуру вашего приложения, погрузиться в недры Android и, зная о процессе декомпиляции, вы будете уже под другим углом смотреть на безопасность своего приложения.
В статье автор даёт азы реверс-инжиниринга, на примере показывает сам процесс, получая доступ к скрытому API, и рассказывает какими утилитами он пользуется, для того чтобы добраться до необходимых данных в декомпелируемом приложении.
The epic.blog
Reverse engineering an Android Application
Hello, a good reader of my epic.blog!
#Android #UnderTheHood
Android Vitals - Rising to the first drawn surface
Продолжение статей о запуске Android приложения. В новой части рассказывается про запуск первой Activity приложения при холодном старте
Android Vitals - Rising to the first drawn surface
Продолжение статей о запуске Android приложения. В новой части рассказывается про запуск первой Activity приложения при холодном старте
DEV Community
Android Vitals - Rising to the first drawn surface 🤽♂️
Header image: Flying in the Light by Romain Guy. This blog series is focused on stability and perf...
#Subscription
Как внедрить in-app подписки в Android-приложения: советы и рекомендации
В апреле 2020 года Google выпустил обновления правил по работе с in-app подписками. Новые меры направлены на то, чтобы сделать условия получения услуг для пользователя более прозрачными: все важные условия должны быть четко сформулированы, ясны для пользователя и изложены полностью, в т.ч. условия о размере и периодичности списаний, окончании бесплатного пробного периода, изменении или отмены подписки и т.д.
В статье указаны основные рекомендации по in-app подпискам в Google Play от
В статье и в самих требованиях можно найти примеры распространенных ошибок.
Как внедрить in-app подписки в Android-приложения: советы и рекомендации
В апреле 2020 года Google выпустил обновления правил по работе с in-app подписками. Новые меры направлены на то, чтобы сделать условия получения услуг для пользователя более прозрачными: все важные условия должны быть четко сформулированы, ясны для пользователя и изложены полностью, в т.ч. условия о размере и периодичности списаний, окончании бесплатного пробного периода, изменении или отмены подписки и т.д.
В статье указаны основные рекомендации по in-app подпискам в Google Play от
команды Центрального Маркетинга Mail.ru Group
, которые они собрали в результате изучения новых требований и анализа более сотни случайных приложений.В статье и в самих требованиях можно найти примеры распространенных ошибок.
Хабр
Как внедрить in-app подписки в Android-приложения: советы и рекомендации
С каждым годом требования к in-app подпискам в мобильных приложениях в App Store и Google Play меняются, становится все сложнее учесть их с первого раза и не получить серию реджектов, тем самым...
#Figma #UI
FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты
Статья о том, как получилось автоматизировать экспорт цветов, иконок, картинок из Figma в iOS или Android проекты.
Проблемы, которые решались:
1️⃣ нет возможности автоматически экспортировать цвета, необходимость корректировки скопированного имени цвета
2️⃣ неудобный экспорт иконок и иллюстраций стандартными средствами: файлы экспортируется в несколько вложенных директорий, необходимость переименования имени файла, ручной перенос в проект или конвертация SVG в vector drawable XML
В результате поиска решения, была создана утилита FigmaExport. Для работы необходимо договориться с дизайнером о том, как хранить цвета, иконки, картинки и потребуется использовать Team Library (дизайнеру нужна платная подписка на Figma).
Также из статьи можно узнать про способы расширения функционала в Figma (Figma-плагин и Figma API) и их короткое сравнение.
FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты
Статья о том, как получилось автоматизировать экспорт цветов, иконок, картинок из Figma в iOS или Android проекты.
Проблемы, которые решались:
1️⃣ нет возможности автоматически экспортировать цвета, необходимость корректировки скопированного имени цвета
2️⃣ неудобный экспорт иконок и иллюстраций стандартными средствами: файлы экспортируется в несколько вложенных директорий, необходимость переименования имени файла, ручной перенос в проект или конвертация SVG в vector drawable XML
В результате поиска решения, была создана утилита FigmaExport. Для работы необходимо договориться с дизайнером о том, как хранить цвета, иконки, картинки и потребуется использовать Team Library (дизайнеру нужна платная подписка на Figma).
Также из статьи можно узнать про способы расширения функционала в Figma (Figma-плагин и Figma API) и их короткое сравнение.
Хабр
FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты
Если вы iOS- или Android-разработчик и дизайн вашего проекта разрабатывается в Figma, то скорее всего вы сталкиваетесь с проблемами при экспорте ресурсов: цвет...
👍1
#AndroidBroadcast #Mentor
Всем привет! С вами Кирилл Розов. Я помню, как я учился программированию (2011 год) и что было плохо, а что наоборот было хорошо. С опытом я вывел формулу, которая играет самую важную роль - наличие ментора.
Ментор - это не тот, кто ведет лекции, а человек, способный указать верное направление и не дать сбиться с пути, подсказать где найти нужную информацию и пр.
Можно подумать, что менторство помогает только тому кто учится, но нет! Для ментора это приобретение:
👉 Заведение знакомств
👉 Получение навыков донесения информации
👉 Работа с менее опытными разработчиками
👉 Навык постановки задач
👉 Структурирование подачи данных
👉 Изучение подход работы с людьми
Все это поможет двигаться вам на уровень Senior, Lead, а может и вовсе сменить ветку, ведь помимо технических навыков вам все больше будут нужны навыки коммуникации и менеджмента (soft skills).
Я предлагаю всем желающим присоединится к программе в качестве Ментора или Падавана и помочь тем, кому это нужно.
Участие абсолютно бесплатное, Android Broadcast выступает лишь в роли медиатора, чтобы помочь вам найти свою реализацию, а Кирилл Розов и др. ребята из сообщества поделятся своими знаниями и ответят на ваши вопросы
Заполнить форму здесь
Всем привет! С вами Кирилл Розов. Я помню, как я учился программированию (2011 год) и что было плохо, а что наоборот было хорошо. С опытом я вывел формулу, которая играет самую важную роль - наличие ментора.
Ментор - это не тот, кто ведет лекции, а человек, способный указать верное направление и не дать сбиться с пути, подсказать где найти нужную информацию и пр.
Можно подумать, что менторство помогает только тому кто учится, но нет! Для ментора это приобретение:
👉 Заведение знакомств
👉 Получение навыков донесения информации
👉 Работа с менее опытными разработчиками
👉 Навык постановки задач
👉 Структурирование подачи данных
👉 Изучение подход работы с людьми
Все это поможет двигаться вам на уровень Senior, Lead, а может и вовсе сменить ветку, ведь помимо технических навыков вам все больше будут нужны навыки коммуникации и менеджмента (soft skills).
Я предлагаю всем желающим присоединится к программе в качестве Ментора или Падавана и помочь тем, кому это нужно.
Участие абсолютно бесплатное, Android Broadcast выступает лишь в роли медиатора, чтобы помочь вам найти свою реализацию, а Кирилл Розов и др. ребята из сообщества поделятся своими знаниями и ответят на ваши вопросы
Заполнить форму здесь
Google Docs
Программа менторства от Android Broadcast
В качестве Падавана вы будете учиться разработке и получать помощь от Ментора. Учтите, что ментор дает вам консультации и помогает, а не является учителем, который станет проводить лекции на регулярной основе и проверять все задания.
В качестве Ментора вам…
В качестве Ментора вам…
👍1
#ConstraintLayout #MotionLayout
Motion Tags Ep2 - ConstraintSet + Constraint
Продолжение серии видео о
Motion Tags Ep2 - ConstraintSet + Constraint
Продолжение серии видео о
MotionLayout
. В новой версии разбираются ConstraintSet
-ы и трансформацииYouTube
ConstraintSet + Constraint - Motion Tags #2
On today’s episode of the Motion Tags series, we will talk about ConstraintSet and Constraint. Stay tuned for our next episode on Transition!
MotionLayout API Reference → https://goo.gle/30Wddzi
Motion Tags playlist → https://goo.gle/MotionTags
Subscribe…
MotionLayout API Reference → https://goo.gle/30Wddzi
Motion Tags playlist → https://goo.gle/MotionTags
Subscribe…
Почему iPhone хватает 4 ГБ ОЗУ, а Android — нет?
Для флагманов Android ставить 8 Гб оперативки, а то 12 и 16 - это норма. Порой в компьютерах памяти меньше. С другой стороны iPhone столько оперативной памяти не имеют и работают хорошо.
Все это связано с разными принципами компрессии памяти и выгрузки приложений при ее нехватке.
Для флагманов Android ставить 8 Гб оперативки, а то 12 и 16 - это норма. Порой в компьютерах памяти меньше. С другой стороны iPhone столько оперативной памяти не имеют и работают хорошо.
Все это связано с разными принципами компрессии памяти и выгрузки приложений при ее нехватке.
Хабр
Почему iPhone хватает 4 ГБ ОЗУ, а Android — нет?
Из года в год Android-производители форсируют железную часть смартфонов: 108 МП, 8к-видеосъемка 12гб оперативной памяти… Но подождите, у iPhone всего 4 ГБ ОЗУ. И это не мешает ему работать на уровне...
#Gradle
Introducing Configuration Caching
В предстоящей версии Gradle 6.6 появится новая экспериментальная возможность - Configuration Caching, которая значительно ускоряет фазу конфигурации Gradle проекта.
Чтобы новая возможность заработала, плагинам надо её поддержать (полный список требований).
Поддержка configuration caching появится в Android Gradle Plugin 4.2 и ожидается в Kotlin 1.4.20. Информацию по другим популярным Gradle плагинам можно найти здесь
Introducing Configuration Caching
В предстоящей версии Gradle 6.6 появится новая экспериментальная возможность - Configuration Caching, которая значительно ускоряет фазу конфигурации Gradle проекта.
Чтобы новая возможность заработала, плагинам надо её поддержать (полный список требований).
Поддержка configuration caching появится в Android Gradle Plugin 4.2 и ожидается в Kotlin 1.4.20. Информацию по другим популярным Gradle плагинам можно найти здесь
#ChromeOS
ChromeOS.dev — A blueprint to build world-class apps and games for Chrome OS
"Продажи Chromebook растут в несколько раз быстрее чем другие ноутбуки" - это причина по которой Google предлагает нам активнее поддерживать на Android эту платформу. Платформа также активнее упрощает разработку приложений на ней: поддержка эмулятора, Linux терминал и др.
ChromeOS.dev — A blueprint to build world-class apps and games for Chrome OS
"Продажи Chromebook растут в несколько раз быстрее чем другие ноутбуки" - это причина по которой Google предлагает нам активнее поддерживать на Android эту платформу. Платформа также активнее упрощает разработку приложений на ней: поддержка эмулятора, Linux терминал и др.
Chromium Blog
ChromeOS.dev — A blueprint to build world-class apps and games for Chrome OS
This article originally appeared on ChromeOS.dev While people are spending more time at home than on the go, they’re relying increasingly on...
#Security
Implement security by design for your apps
Google обновила документацию по безопасности, обеспечив более простую навигацию. Основные разделы:
👉 Encrypt your data
👉 Detect insecure devices
👉 Authenticate users and keys with biometrics
👉 Communicate securely
👉 Address issues found by Google Play
👉 Be the first to know
👉 Test, test, and test again
👉 Audit third-party libraries
Implement security by design for your apps
Google обновила документацию по безопасности, обеспечив более простую навигацию. Основные разделы:
👉 Encrypt your data
👉 Detect insecure devices
👉 Authenticate users and keys with biometrics
👉 Communicate securely
👉 Address issues found by Google Play
👉 Be the first to know
👉 Test, test, and test again
👉 Audit third-party libraries
Android Developers
Design for Safety | App quality | Android Developers
#wear
What’s happening in Wear OS by Google
Жива ли WearOS или нет? Может ли жить платформа без устройств на ней? Google продолжает развивать ОС:
👉 Осенью будет обновление со значительным улучшением производительности и системного UI, таймер для мытья рук, улучшенное приложение погоды
👉 Новые производители WearOS часов - Oppo, Suunto и Xiaomi
👉 Обновление WearOS до Android 11 и недавняя androidx.wear 1.1.0
What’s happening in Wear OS by Google
Жива ли WearOS или нет? Может ли жить платформа без устройств на ней? Google продолжает развивать ОС:
👉 Осенью будет обновление со значительным улучшением производительности и системного UI, таймер для мытья рук, улучшенное приложение погоды
👉 Новые производители WearOS часов - Oppo, Suunto и Xiaomi
👉 Обновление WearOS до Android 11 и недавняя androidx.wear 1.1.0
Android Developers Blog
What’s happening in Wear OS by Google
Posted by Karen Ng, Director of Product and Robert Simpson, Product Manager This blog post is part of a weekly series for #11WeeksOfAn...
#UI #View
Writing Performant Layouts
Jetpack Compose все еще в разработке, а это значит что старый UI на View все еще с нами и нам надо писать его эффективно, помня о его проблемах.
В статье вы найдете основные рекомендации. Новичкам полезно, а вот бывалым верстальщикам будет просто тратой времени!
Writing Performant Layouts
Jetpack Compose все еще в разработке, а это значит что старый UI на View все еще с нами и нам надо писать его эффективно, помня о его проблемах.
В статье вы найдете основные рекомендации. Новичкам полезно, а вот бывалым верстальщикам будет просто тратой времени!
Medium
Writing Performant Layouts
With the ever-increasing complexity of mobile applications, you would always want to avoid user reviews like “this app is janky” or “it is…
#AndroidBroadcast #Analytics #Architecture
Делаем аналитику правильно c Aviasales.ru
Где: YouTube канал Android Broadcast
Когда: среда, 19 августа, 20:00 (GMT+3)
Аналитика - это непростой функционал вашего приложения, который пронизывает всего его уголки. Он может быть в любой строчке, в синхронном или асинхронном коде, а также вам может быть нужно поддерживать несколько различных сервисов аналитики.
В выпуске обсудим правильный подход к трекингу сообщений из Android приложений, который соответствует всем требованиям: расширяемость, тестируемость, удобство работы, многомодульность и пр.
Своим опытом делится Максим Дворецкий, Android разработчик в Aviasales, которые не так давно прошли через рефакторинг своей аналитики.
Делаем аналитику правильно c Aviasales.ru
Где: YouTube канал Android Broadcast
Когда: среда, 19 августа, 20:00 (GMT+3)
Аналитика - это непростой функционал вашего приложения, который пронизывает всего его уголки. Он может быть в любой строчке, в синхронном или асинхронном коде, а также вам может быть нужно поддерживать несколько различных сервисов аналитики.
В выпуске обсудим правильный подход к трекингу сообщений из Android приложений, который соответствует всем требованиям: расширяемость, тестируемость, удобство работы, многомодульность и пр.
Своим опытом делится Максим Дворецкий, Android разработчик в Aviasales, которые не так давно прошли через рефакторинг своей аналитики.
#Kotlin #Coroutines
Вышли Coroutine 1.3.9
👉 Поддержка
👉 Обновление Kotlin до 1.4.0 (анонс уже совсем скоро)
👉 Переход на новую схему публикацию мультиплатформенных библиотек - HMPP (Hierarchical MPP). Тоже новая фича 1.4. Скоро появится отдельный пост об этом
Что изменилось в артефактах:
👉 Удалены
👉 Для мультиплатформенного использования теперь достаточно подключить
👉 Тот же артефакт может использоваться в качестве зависимости для platform-specific артефакта в platform-specific source-set.
Вышли Coroutine 1.3.9
👉 Поддержка
CoroutineContext
в Flow.asPublisher
и других билдерах (#2155).👉 Обновление Kotlin до 1.4.0 (анонс уже совсем скоро)
👉 Переход на новую схему публикацию мультиплатформенных библиотек - HMPP (Hierarchical MPP). Тоже новая фича 1.4. Скоро появится отдельный пост об этом
Что изменилось в артефактах:
👉 Удалены
kotlinx-coroutines-core-common
и kotlinx-coroutines-core-native
👉 Для мультиплатформенного использования теперь достаточно подключить
kotlinx-coroutines-core
в commonMain
👉 Тот же артефакт может использоваться в качестве зависимости для platform-specific артефакта в platform-specific source-set.
#RxJava #Backpressure
Анатомия backpressure в реактивных потоках
Backpressure - один из важных элементов реактивной парадигмы и может казаться что это довольно сложный механизм, но автор статьи рассказывает о том как "под капотом" устроен этот механизм и что, фактически, реализовать его можно довольно быстро.
В качестве примере автор приводит код, в котором он описал упрощённый механизм backpressure при помощи обычного семафора.
Анатомия backpressure в реактивных потоках
Backpressure - один из важных элементов реактивной парадигмы и может казаться что это довольно сложный механизм, но автор статьи рассказывает о том как "под капотом" устроен этот механизм и что, фактически, реализовать его можно довольно быстро.
В качестве примере автор приводит код, в котором он описал упрощённый механизм backpressure при помощи обычного семафора.
Хабр
Анатомия backpressure в реактивных потоках
Читая многочисленные статьи по теме реактивных потоков, читатель может прийти к выводу, что: backpressure это круто backpressure доступно только в библиотеках,...
This media is not supported in your browser
VIEW IN TELEGRAM
#Kotlin #Kotlin1_4
Вышел Kotlin 1.4
Вышел долгожданный релиз новой мажорной версии любимого языка Android разработки. Релиз сконцентрировался на производительности и качестве, а также инструментарии.
Давайте конкретнее:
👉 Скорость подсветки синтаксиса выросла от 1.5 до 4 раз, как и автодополнение
👉 Отладчик Coroutine
👉 Обновленный мастер для создания Kotlin проектов
👉 Обновленный компилятор
👉 Новая система вывода типов (Type Inference)
👉 SAM для Kotlin интерфейсов
👉 Улучшения стандартной библиотеки
👉 Explicit режим для авторов библиотек, который заставляет явно указывать модификаторы доступа и др. важные для библиотек вещи
👉 Возможность использовать именованные и позиционные аргументы
👉 В конце параметров теперь можно ставить запятую
👉 Теперь можно использовать
👉 Улучшения в Kotlin Multiplatform
Также добавили всего много нового экспериментального
Вышел Kotlin 1.4
Вышел долгожданный релиз новой мажорной версии любимого языка Android разработки. Релиз сконцентрировался на производительности и качестве, а также инструментарии.
Давайте конкретнее:
👉 Скорость подсветки синтаксиса выросла от 1.5 до 4 раз, как и автодополнение
👉 Отладчик Coroutine
👉 Обновленный мастер для создания Kotlin проектов
👉 Обновленный компилятор
👉 Новая система вывода типов (Type Inference)
👉 SAM для Kotlin интерфейсов
👉 Улучшения стандартной библиотеки
👉 Explicit режим для авторов библиотек, который заставляет явно указывать модификаторы доступа и др. важные для библиотек вещи
👉 Возможность использовать именованные и позиционные аргументы
👉 В конце параметров теперь можно ставить запятую
👉 Теперь можно использовать
break
и continue
внутри when
выражений, который находятся в циклах👉 Улучшения в Kotlin Multiplatform
Также добавили всего много нового экспериментального
#BestPractice
Android Development | Best Practices
Большая статья от разработчика с более чем пятилетним опытом в Android разработке, которая содержит 25 советов и рекомендаций, для того чтобы улучшить и оптимизировать ваше приложение. Среди рекомендаций:
👉 Выбор архитектуры и Build Type'ов
👉 Рекомендации по работе с изображениями и layout'ами
👉 Много советов по безопасности приложения
👉 Оптимизация Gradle
К какому пункту автор даёт пояснение и полезные ссылки.
Android Development | Best Practices
Большая статья от разработчика с более чем пятилетним опытом в Android разработке, которая содержит 25 советов и рекомендаций, для того чтобы улучшить и оптимизировать ваше приложение. Среди рекомендаций:
👉 Выбор архитектуры и Build Type'ов
👉 Рекомендации по работе с изображениями и layout'ами
👉 Много советов по безопасности приложения
👉 Оптимизация Gradle
К какому пункту автор даёт пояснение и полезные ссылки.
Medium
Android Development | Best Practices
Android development is all the hype these days as it continues to dominate the world of mobile development. Fun projects, great pay, and…
#Notifrications #Kotlin #DSL
Android Notifications DSL 0.1.0
Push уведомления в приложениях - один из важнейших функционалов, который позволяет нам получать информацию без входа в приложение, а разработчикам заманивать к себе пользователей в приложение.
Удобство создания Notification в Android SDK хромает:
👉 Множество Builder-ов
👉 Фрагментированность возможностей уведомлений на разных версиях Android
👉 Непонятно какие параметры надо явно задавать, чтобы получить необходимый тип уведомлений
👉 Отсутствие Compat API для NotificationChannel
👉 Как хорошо реализовать альтернативный вариант для старой версии Android, а для новой показывать более функциональный?
Все это заставило задуматься о создании библиотеки Android Notification DSL, которая позволит избавиться от этих недостатков. Библиотека опирается на возможности NotificationCompat и Notification из Android SDK
Разработчику библиотеки @krlrozov очень важна ваша обратная связь. Пишите в личку или давайте обсуждать в @android_broadcast_talks
Android Notifications DSL 0.1.0
Push уведомления в приложениях - один из важнейших функционалов, который позволяет нам получать информацию без входа в приложение, а разработчикам заманивать к себе пользователей в приложение.
Удобство создания Notification в Android SDK хромает:
👉 Множество Builder-ов
👉 Фрагментированность возможностей уведомлений на разных версиях Android
👉 Непонятно какие параметры надо явно задавать, чтобы получить необходимый тип уведомлений
👉 Отсутствие Compat API для NotificationChannel
👉 Как хорошо реализовать альтернативный вариант для старой версии Android, а для новой показывать более функциональный?
Все это заставило задуматься о создании библиотеки Android Notification DSL, которая позволит избавиться от этих недостатков. Библиотека опирается на возможности NotificationCompat и Notification из Android SDK
Разработчику библиотеки @krlrozov очень важна ваша обратная связь. Пишите в личку или давайте обсуждать в @android_broadcast_talks
#Kotlin #DateTime
Первый релиз Kotlinx DateTime - 0.1.0
Уже давно обсуждали чего стоит ждать и вот с выходом Kotlin 1.4 мы получаем первую версию мультиплатформенной Kotlin официальной библиотеки для работы с датами.
У библиотеки нет цели покрыть любые возможности для работы с датой, а только основные и самые распространенные, которые хватит большинству обычных разработчиков.
Библиотека включает в себя классы:
👉 Instant
👉 Clock
👉 LocalDateTime
👉 LocalDate
👉 TimeZone и ZoneOffset
👉 Month и DayOfWeek
👉 DateTimePeriod
👉 DatePeriod
👉 DateTimeUnit
В репозитории вы найдете больше подробностей и примеры использования нового API
Первый релиз Kotlinx DateTime - 0.1.0
Уже давно обсуждали чего стоит ждать и вот с выходом Kotlin 1.4 мы получаем первую версию мультиплатформенной Kotlin официальной библиотеки для работы с датами.
У библиотеки нет цели покрыть любые возможности для работы с датой, а только основные и самые распространенные, которые хватит большинству обычных разработчиков.
Библиотека включает в себя классы:
👉 Instant
👉 Clock
👉 LocalDateTime
👉 LocalDate
👉 TimeZone и ZoneOffset
👉 Month и DayOfWeek
👉 DateTimePeriod
👉 DatePeriod
👉 DateTimeUnit
В репозитории вы найдете больше подробностей и примеры использования нового API
GitHub
GitHub - Kotlin/kotlinx-datetime: KotlinX multiplatform date/time library
KotlinX multiplatform date/time library. Contribute to Kotlin/kotlinx-datetime development by creating an account on GitHub.