Android разработка – Telegram
Android разработка
5.22K subscribers
442 photos
25 videos
1 file
547 links
все о Android разработке

@itchannels_telegram - 🔥 лучшие it каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - ml 📚

@pythonlbooks -📚books
Download Telegram
Как Proguard удаляет неиспользуемый код?

Одна из функций Proguard – это удаление неиспользуемого кода программы.

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

Proguard запускается после компиляции исходного кода и получения .class файлов, но до конвертации в dex.

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

Входные точки программы задаются в файлах конфигурации правилом -keep. Android Gradle Plugin генерирует дефолтный файл c правилами для сохранения базовых компонент и специфичных для андроида классов, таких как View.

Если класс, метод или поле используется только через Reflection, Proguard пометит этот компонент как неиспользуемый и удалит. Это является частой причиной крэшей ClassNotFoundException при использовании Proguard.
Для сохранения таких компонентов нужно добавить правила -keep в файл конфигурации.

После сборки приложения с Proguard, генерируется файл usage.txt, в котором хранится список всех удаленных компонентов.

#Build

@android_its
👍6
Как уменьшить APK?

• Подключить к своему приложению Proguard;

• Избавиться от неиспользуемых ресурсов с помощью атрибута shrinkResources;

• Избавиться от ресурсов сторонних библиотек, которые не подходят под вашу локаль, с помощью атрибута resConfigs;

• Сконвертировать все картинки в формат webp или VectorDrawable.

Подробнее об этих советах можно почитать в статье.

#Build
👍7🔥1
Как отладить приложение на девайсе?

Для удаленной отладки используется технология Android Debug Bridge. Она включает три компонента:

• adbd – демон на стороне девайса, который принимает и выполняет команды.

• ADB Сервер – демон на стороне компьютера, с которого ведется отладка. Принимает запросы от отладочных клиентов на TCP порт 5037. Служит единой точкой доступа к удаленной отладке. Запускается при первом старте adb клиента.

• Клиенты – различные приложения, которые пользуются инструментами отладки. Самое простое – консольный клиент adb из SDK. Более сложные клиенты могут использовать adb внутри, либо самостоятельно подключаться к порту ADB сервера.

Сервер передает команды от клиентов в adbd на эмуляторах через TCP порты, либо в adbd на реальных девайсах через USB или WiFi.

Помимо самого дебаггера для отладки применяются дополнительные инструменты, такие как Android profiler и Device File Explorer. Для исследования проблем полезны баг репорты.

Если необходимо отладить web-приложение, используется специальная фича Chrome DevTools.

#Tools

@android_its
👍5🔥1
Какие классы служат для доступа к сенсорам?

Таких классов четыре:

• SensorManager – точка входа для работы с сенсорами и listener-ами их событий. Системный сервис, получаемый по имени Context.SENSOR_SERVICE;

• Sensor – представляет отдельно взятый сенсор. Дает различную метаинформацию (энергопотребление, точность, производителя, и т.д.);

• SensorEventListener – интерфейс для реализации обработчиков событий, приходящих из сенсоров. В нём реализуется логика обработки входящих данных;

• SensorEvent – отдельное событие из сенсора: данные и точность их измерения.

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

#Hardware

@android_its
👍3🔥2
orhanobut/logger

Наглядный и удобный логгер для использования в Android-проектах. Фуннкции:

Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");


https://github.com/orhanobut/logger

@android_its
6👍2💩1
Как передать параметры в конструктор фрагмента?

Параметры передаются в конструктор Fragment-а через Bundle, с помощью метода Fragment.setArgument(Bundle). Переданный бандл может быть получен через Fragment.getArguments() в соответствующем методе жизненного цикла фрагмента.

Распространенная ошибка передавать данные через кастомный конструктор. Использовать не-дефолтные конструкторы фрагментов не рекомендуется, потому что фрагмент может быть уничтожен и пересоздан вследствие изменений конфигурации (например при повороте экрана).

Использование пары методов setArguments/getArguments гарантирует, что при пересоздании Bundle будет сериализован/десериализован, и данные восстановятся.

#Fragment

@android_its
👍61
🔥 Как устроена операционная система Android

💣 Заглянем внутрь этой ОС на открытом уроке 21 июня в 20:00. Мы разберем ее устройство с точки зрения архитектуры, что лежит в ее основе, как она загружается, как приложения общаются между собой и другие интересные детали.

📌 На вебинаре выступит Даниил Попов, разработчик эстонской компании Bolt Technology OÜ. Занятие пройдет в рамках онлайн-курса «Android Developer. Professional» от OTUS и позволит протестировать процесс обучения.

🦾 Программа рассчитана на разработчиков с опытом создания Android-приложений.

️️ Пройдите вступительный тест, чтобы зарегистрироваться
👍4
Какова структура Android-проекта?

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

AndroidManifest.xml – определение компонентов и требуемых возможностей девайса для приложения.
build.gradle – файлы конфигурации сборки для всего приложения и отдельных модулей.
src – исходный код классов и ресурсы проекта.
• Файл .R – сгенерированный на этапе компиляции перечень всех ресурсов проекта.
assets – файлы, которые должны попасть в .apk как есть, без изменений.

res/drawable – директория для картинок (drawable-объектов).
res/layout – директория для файлов которые определяют UI приложения.
res/values – директория для различных XML-файлов с простыми ресурсами, такими как строки, цвета и числа.
res/mipmap – иконки для launcher-а разных разрешений.
res/menu – XML с определениями разных меню.
res/font – шрифты.
res/xml – XML файлы, доступные через Resources.getXML().
res/raw – различные файлы, доступные в виде потоков данных через Resources.openRawResource().
res/anim, res/animator – анимации.

#System

@android_its
👍11🔥2
Назовите три основных применения интентов

1. Запустить активити. Intent передается в метод startActivity() явно, либо разрешается с помощью механизма Intent Resolution.

2. Запустить сервис. Можно запустить сервис для выполнения единичной операции, передав Intent в startService().

3. Доставить броадкаст. Для отправки броадкаст-ивента в другие приложения интент передается в sendBroadcast(), sendOrderedBroadcast(), или sendStickyBroadcast().

#Intent
👍7
Назовите два способа очистить back stack при создании Activity

Флаг интента FLAG_ACTIVITY_CLEAR_TASK используется для того, чтобы очистить все активити таска. Activity, запущенная таким интентом становится новым корнем пустого бэкстека. Этот флаг обязан быть использованным вместе с FLAG_ACTIVITY_NEW_TASK.

Другой вариант – FLAG_ACTIVITY_CLEAR_TOP. Разница в том, что если этот флаг задан, а в таск листе существует старый экземпляр данной активити, все другие активити будут удалены, а корнем станет тот старый экземпляр. Использовать при этом FLAG_ACTIVITY_NEW_TASK не обязательно, но рекомендуется.

#Intent
#Activity

@android_its
👍6
🔥 Создайте свою первую аркадную игру на Flutter 3! 🔥

📱 В новую версию Flutter 3.0 добавили официальную поддержку игровых движков Flare и SpriteWidget и набор инструментов CasualGamingKit.

🚀 На открытом уроке 12 июля в 20:00 мск мы изучим возможности Flutter для создания кроссплатформенных игр для мобильных устройств, веб и настольных компьютеров и создадим простую аркадную игру от начала и до подготовки к публикации в магазинах приложений.

💻 Не упустите возможность оценить материалы онлайн-курса «Flutter Mobile Developer» OTUS и познакомиться с преподавателем Дмитрием Золотовым, Flutter-разработчиком в Яндексе.

👉 Пройдите вступительный тест для регистрации на вебинар
💾 Большой гайд по пентестингу мобильных устройств iOS/Android

⚙️ GitHub/Инструкция

⚠️ Информация предоставлена исключительно с целью ознакомления. И побуждает обратить внимание на проблемы в безопасности.

#doc #pentest
👍7
Создание мобильных игр при помощи Flutter и Flame для начинающих

https://flutter.su/note/239

@android_its
👍3🔥2🥰1
💣 Никому не нравится, когда приложение тормозит. Но знаете ли вы, почему так происходит? Разберем этот вопрос на открытом уроке «UI Profiling» 28 июня в 20:00.

🔥 На занятии рассмотрим основные причины такого поведения и инструменты, призванные найти и исправить эту проблему. Кроме оценки производительности приложения на вашем устройстве, мы рассмотрим несколько сервисов для измерения производительности в бою — на телефонах ваших пользователей.

🎤 Спикер: Артур Бадретдинов, ведущий разработчик в американском стартапе.

🦾 Занятие пройдет в рамках онлайн-курса «Android Developer. Professional» для разработчиков с опытом.

❇️ Для участия в вебинаре пройдите вступительный тест
Что я спрашиваю Junior и Senior Flutter разработчиков на собеседовании

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

Я Team Lead мобильного отдела и обязанности включают в себя такие вещи, как codereview, наставничество, программирование, конечно, и интервьюирование кандидатов. За свою карьеру я собеседовал людей на разные должности: Android разработчиков, фронтенд-разработчиков (особенно на позицию React) и последние нескольких лет — flutter разработчиков.

Собеседования на позиции android и front-end довольно понятны. Я имею в виду, что рынок для этой позиции не нов, и ясно, что спрашивать и что интервьюируемый должен знать для каждой позиции. Но с флаттером немного не так. Рынок Flutter приложений пока невелик по сравнению с другими развитыми рынками типа мобильная разработка под Android и iOS или веб разработка.

А flutter разработчик должен знать не только язык Dart и Flutter фреймворк, а также множество аспектов мобильной разработки для разных платформ: как билдить и настраивать приложения для устройств iOS и Android, а также много других мелких, необязательно сложных вещей.

Читать дальше

@android_its
👍4🔥1
scrcpy – приложение, которое обеспечивает отображение экрана и управление устройствами Android, подключенными через USB или по TCP/IP

Оно не требует root-доступа и работает на GNU/Linux, Windows и macOS

@android_its | #Android #Interesting #Useful #Screen #Managed
🥰3
​​BootBoi – Android приложение для удаленного включения/выключения/перезагрузки вашего ПК!

Вы когда-нибудь хотели включить удаленную машину (ноутбук, Raspberry, NAS), но не хотели вставать с дивана? BootBoi избавит вас от такой утомительной задачи!

¡
Для включения удаленного устройства BootBoi использует Wake On Lan. Эту функцию надо включить в BIOS, читайте больше здесь.
¡ Для выключения и перезагрузки используется SSH. Выполняются такие команды как whoami, poweroff и reboot.

@android_its
👍6