Быстрый старт: гайд по автоматизированному тестированию для Android-разработчика. JVM
https://vc.ru/dev/199012-bystryy-start-gayd-po-avtomatizirovannomu-testirovaniyu-dlya-android-razrabotchika-jvm
@android_its
https://vc.ru/dev/199012-bystryy-start-gayd-po-avtomatizirovannomu-testirovaniyu-dlya-android-razrabotchika-jvm
@android_its
vc.ru
Быстрый старт: гайд по автоматизированному тестированию для Android-разработчика. JVM — Разработка на vc.ru
Привет! Меня зовут Сергей Иванов, я ведущий разработчик Android в Redmadrobot. С 2016 использую автотесты различных категорий и успел в этом набить немало шишек. Именно поэтому решил поделиться опытом. Возможно, что кому-то статья поможет систематизировать…
👍6
Activity: Как пережить поворот экрана?
При повороте экрана активити уничтожается и создается заново. Вызываются коллбэки
Чтобы сохранить состояние активити, вы должны переопределить метод onSaveInstanceState() и положить данные в Bundle.
При реинициализации активити,
Система вызывает
onSaveInstanceState() вызывается после
onRestoreInstanceState() вызывается после
#Activity
#Lifecycle
#State
@android_its
При повороте экрана активити уничтожается и создается заново. Вызываются коллбэки
onPause(), onStop(), onSaveInstanceState(), onDestroy() – onCreate(), onStart(), onRestoreInstanceState(), onResume().Чтобы сохранить состояние активити, вы должны переопределить метод onSaveInstanceState() и положить данные в Bundle.
При реинициализации активити,
Bundle с сохраненным состоянием передается в onCreate() и в onRestoreInstanceState().Система вызывает
onSaveInstanceState() и onRestoreInstanceState() только в том случае, когда необходимо сохранить состояние, например при повороте экрана или при убийстве активити для освобождения памяти. Данные коллбэки не вызываются, если пользователь выходит из активити нажав Back или если активити убивается вызовом finish().onSaveInstanceState() вызывается после
onStop() на версии API ≥ 28. На API < 28 этот коллбэк вызывается перед onStop() и нет гарантий до или после onPause().onRestoreInstanceState() вызывается после
onStart().#Activity
#Lifecycle
#State
@android_its
👍8
Нужно ли думать о сохранении состояния, если приложение поддерживает только портретную ориентацию?
– Да.
Поворот экрана – это частный случай Configuration Changes. Другой пример – изменение языка системы.
Кроме того, как было упомянуто постом выше, система может уничтожить активити, чтобы использовать занятые ей ресурсы. В этом случае состояние сохраняется и восстанавливается при пересоздании активити.
#State
Fragment
Fragment используется для отображения части UI на экране. Фрагмент создается внутри активити или внутри другого фрагмента.
Для создания и управления фрагментами используется FragmentManager.
Класс-наследник класса Fragment должен иметь дефолтный конструктор без параметров. Система использует этот конструктор при пересоздании фрагмента.
Начиная с API v28 системный класс Fragment – deprecated. Рекомендуется использовать Fragment из Support Library.
#Fragment
@android_its - все о Android разработке
– Да.
Поворот экрана – это частный случай Configuration Changes. Другой пример – изменение языка системы.
Кроме того, как было упомянуто постом выше, система может уничтожить активити, чтобы использовать занятые ей ресурсы. В этом случае состояние сохраняется и восстанавливается при пересоздании активити.
#State
Fragment
Fragment используется для отображения части UI на экране. Фрагмент создается внутри активити или внутри другого фрагмента.
Для создания и управления фрагментами используется FragmentManager.
Класс-наследник класса Fragment должен иметь дефолтный конструктор без параметров. Система использует этот конструктор при пересоздании фрагмента.
Начиная с API v28 системный класс Fragment – deprecated. Рекомендуется использовать Fragment из Support Library.
#Fragment
@android_its - все о Android разработке
👍5🔥1
Termux - это эмулятор терминала Android и приложение среды Linux, написанный на Java.
Он работает напрямую без рутирования или настройки. Минимальная базовая система устанавливается автоматически - дополнительные пакеты доступны с помощью менеджера пакетов APT.
Termux-app - Пользовательский интерфейс и эмуляция терминала
Termux-api - Android API для использования командной строки и скриптов или программ
Termux-styling (Kotlin) - Дополнительное приложение для настройки шрифтов, терминала и цветовой схемы
Termux-tasker - Дополнительное приложение для интеграции с Tasker
Termux-packages (Shell) - Сборка системы и первичный набор пакетов для Termux
@android_its
Он работает напрямую без рутирования или настройки. Минимальная базовая система устанавливается автоматически - дополнительные пакеты доступны с помощью менеджера пакетов APT.
Termux-app - Пользовательский интерфейс и эмуляция терминала
Termux-api - Android API для использования командной строки и скриптов или программ
Termux-styling (Kotlin) - Дополнительное приложение для настройки шрифтов, терминала и цветовой схемы
Termux-tasker - Дополнительное приложение для интеграции с Tasker
Termux-packages (Shell) - Сборка системы и первичный набор пакетов для Termux
@android_its
🔥8
💣 Хочешь попробовать себя в Android-разработке?
📌 Приглашаем 14 июня в 20:00 на открытый урок в OTUS, где мы создадим приложение для трекинга воды. Занятие проведет Даниил Попов, разработчик в компании Bolt Technology OÜ (Эстония).
🚀 Мы разработаем приложение для отслеживания количества воды, которое человек пьет в сутки. Для этого мы нарисуем стаканчик и будем заполнять его по мере того, как пользователь отмечает сколько воды он выпил за сутки.
💻 Вебинар пройдет в рамках специализации «Android Developer». Это возможность оценить материалы курса и познакомиться с экспертом.
❇️ Для участия необходимо зарегистрироваться
📌 Приглашаем 14 июня в 20:00 на открытый урок в OTUS, где мы создадим приложение для трекинга воды. Занятие проведет Даниил Попов, разработчик в компании Bolt Technology OÜ (Эстония).
🚀 Мы разработаем приложение для отслеживания количества воды, которое человек пьет в сутки. Для этого мы нарисуем стаканчик и будем заполнять его по мере того, как пользователь отмечает сколько воды он выпил за сутки.
💻 Вебинар пройдет в рамках специализации «Android Developer». Это возможность оценить материалы курса и познакомиться с экспертом.
❇️ Для участия необходимо зарегистрироваться
❤5👍1
Fragment
Fragment используется для отображения части UI на экране. Фрагмент создается внутри активити или внутри другого фрагмента.
Для создания и управления фрагментами используется FragmentManager.
Класс-наследник класса Fragment должен иметь дефолтный конструктор без параметров. Система использует этот конструктор при пересоздании фрагмента.
Начиная с API v28 системный класс Fragment – deprecated. Рекомендуется использовать Fragment из Support Library.
#Fragment
@android_its
Fragment используется для отображения части UI на экране. Фрагмент создается внутри активити или внутри другого фрагмента.
Для создания и управления фрагментами используется FragmentManager.
Класс-наследник класса Fragment должен иметь дефолтный конструктор без параметров. Система использует этот конструктор при пересоздании фрагмента.
Начиная с API v28 системный класс Fragment – deprecated. Рекомендуется использовать Fragment из Support Library.
#Fragment
@android_its
❤4👍1
Фоновое изображение в Layout
Android позволяет устанавливать фоновое (background) изображение в корневой элемент разметки интерфейса Layout. Реализовать это совсем просто; достаточно в описание разметки вставить соответствующий атрибут android:background="@drawable/earth". Предполагается, что изображение earth хранится в директории проекта res/drawable. На следующем скриншоте представлено изображение земли earth.png, которое будет использовано в описанном ниже примере в качестве фонового изображения разметки интерфейса Layout.
Читать дальше
@android_its
Android позволяет устанавливать фоновое (background) изображение в корневой элемент разметки интерфейса Layout. Реализовать это совсем просто; достаточно в описание разметки вставить соответствующий атрибут android:background="@drawable/earth". Предполагается, что изображение earth хранится в директории проекта res/drawable. На следующем скриншоте представлено изображение земли earth.png, которое будет использовано в описанном ниже примере в качестве фонового изображения разметки интерфейса Layout.
Читать дальше
@android_its
👍3🥰1
Как собирается Android-приложение?
Сборка Android-приложения состоит из следующих шагов:
1. Компилирование Java/Kotin-исходников.
Компилятор создает .class-файлы, содержащие java-байткод.
2. Конвертация Java-байткода в Dalvik-байткод.
Для конвертации используется утилита
3. Сборка ресурсов и .dex-файлов в APK.
Этот шаг выполняется утилитой aapt (Android Asset Packaging Tool).
4. Оптимизация и подпись .apk-файла.
Для оптимизации APK используется утилита zipalign. APK является zip-архивом.
Подпись приложения выполняется утилитой apksigner.
До Build Tools v24.0.3 подпись APK выполнялась утилитой
#Build
@android_its
Сборка Android-приложения состоит из следующих шагов:
1. Компилирование Java/Kotin-исходников.
Компилятор создает .class-файлы, содержащие java-байткод.
.java source -> javac compiler -> .class files
.kt source -> kotlinc compiler -> .class files2. Конвертация Java-байткода в Dalvik-байткод.
Для конвертации используется утилита
dx. На вход подаются .class-файлы, скомпилированные на предыдущем шаге, и .jar/.aar-файлы скомпилированных библиотек. dx создает файлы формата .dex, которые содержат Dalvik-байткод..class, .jar, .aar -> dx -> classes.dex3. Сборка ресурсов и .dex-файлов в APK.
Этот шаг выполняется утилитой aapt (Android Asset Packaging Tool).
classes.dex, resource files -> aapt -> .apk file4. Оптимизация и подпись .apk-файла.
Для оптимизации APK используется утилита zipalign. APK является zip-архивом.
zipalign выравнивает файлы в архиве определенным образом, что уменьшает использование RAM, при работе приложения.Подпись приложения выполняется утилитой apksigner.
.apk file -> zipalign -> apksigner -> signed .apk fileДо Build Tools v24.0.3 подпись APK выполнялась утилитой
jarsigner, которая была создана для подписи .jar-файлов, и zipalign применялся к уже подписанному APK..apk file -> jarsigner -> zipalign -> signed .apk file#Build
@android_its
Android Developers
AAPT2 | Android Studio | Android Developers
👍8
Опишите структуру APK-файла
APK (Android Package) – это формат файла, который используется для распространения и установки мобильных приложений в операционной системе Android.
APK представляет собой архив, который содержит следующие файлы:
• Папка
•
• Сертификат приложения;
• Файлы с дополнительной метаинформацией.
•
•
•
•
•
•
#Build
APK (Android Package) – это формат файла, который используется для распространения и установки мобильных приложений в операционной системе Android.
APK представляет собой архив, который содержит следующие файлы:
• Папка
META-INF:•
MANIFEST.MF – манифест-файл, который содержит SHA-хэши всех файлов в APK-пакете;• Сертификат приложения;
• Файлы с дополнительной метаинформацией.
•
lib – папка, содержащая скомпилированный код платформенно-зависимых библиотек. lib содержит подкаталоги для соответствующих платформ: armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips.•
res – папка, в которой лежат андроид-ресурсы в Binary XML формате.•
assets – папка, содержащая ассеты приложения.•
AndroidManifest.xml – манифест Андроид-приложения. Этот файл хранится в скомпилированном Binary XML формате.•
classes.dex – один или несколько файлов, которые представляют собой код приложения, скомпилированный в Dalvik-байткод.•
resources.arsc – файл, в котором хранится таблица маппинга id ресурсов в соответствующие файлы.#Build
👍8
Как собирается Android-приложение?
Сборка Android-приложения состоит из следующих шагов:
1. Компилирование Java/Kotin-исходников.
Компилятор создает .class-файлы, содержащие java-байткод.
2. Конвертация Java-байткода в Dalvik-байткод.
Для конвертации используется утилита
3. Сборка ресурсов и .dex-файлов в APK.
Этот шаг выполняется утилитой aapt (Android Asset Packaging Tool).
4. Оптимизация и подпись .apk-файла.
Для оптимизации APK используется утилита zipalign. APK является zip-архивом.
Подпись приложения выполняется утилитой apksigner.
До Build Tools v24.0.3 подпись APK выполнялась утилитой
#Build
@android_its
Сборка Android-приложения состоит из следующих шагов:
1. Компилирование Java/Kotin-исходников.
Компилятор создает .class-файлы, содержащие java-байткод.
.java source -> javac compiler -> .class files
.kt source -> kotlinc compiler -> .class files2. Конвертация Java-байткода в Dalvik-байткод.
Для конвертации используется утилита
dx. На вход подаются .class-файлы, скомпилированные на предыдущем шаге, и .jar/.aar-файлы скомпилированных библиотек. dx создает файлы формата .dex, которые содержат Dalvik-байткод..class, .jar, .aar -> dx -> classes.dex3. Сборка ресурсов и .dex-файлов в APK.
Этот шаг выполняется утилитой aapt (Android Asset Packaging Tool).
classes.dex, resource files -> aapt -> .apk file4. Оптимизация и подпись .apk-файла.
Для оптимизации APK используется утилита zipalign. APK является zip-архивом.
zipalign выравнивает файлы в архиве определенным образом, что уменьшает использование RAM, при работе приложения.Подпись приложения выполняется утилитой apksigner.
.apk file -> zipalign -> apksigner -> signed .apk fileДо Build Tools v24.0.3 подпись APK выполнялась утилитой
jarsigner, которая была создана для подписи .jar-файлов, и zipalign применялся к уже подписанному APK..apk file -> jarsigner -> zipalign -> signed .apk file#Build
@android_its
👍5
В чем разница между jar и aar?
JAR – Java Archive. Содержит файлы классов, java-ресурсы, зависимые библиотеки, и другие необходимые для приложения файлы. JAR может использоваться как в Android-приложении, так и в приложении на чистой Java.
AAR – Android Archive. Так же как и JAR является zip-архивом, но может использоваться только в Android-приложении. AAR содержит скомпилированный исходный код в файле
#Build
jar и aar являются расширениями файлов-архивов, которые содержат части программ и используются в качестве библиотек в Android-приложениях.JAR – Java Archive. Содержит файлы классов, java-ресурсы, зависимые библиотеки, и другие необходимые для приложения файлы. JAR может использоваться как в Android-приложении, так и в приложении на чистой Java.
AAR – Android Archive. Так же как и JAR является zip-архивом, но может использоваться только в Android-приложении. AAR содержит скомпилированный исходный код в файле
classes.jar, Android-ресурсы, AndroidManifest, и другие файлы, входящие в состав APK.#Build
👍6
Что такое Proguard?
Proguard – это инструмент обфускации и оптимизации Java-кода. Proguard может использоваться как на чистом Java-, так и на Android-приложении, но в мире Андроида Proguard популярнее по двум причинам.
Во-первых, Proguard удаляет неиспользуемые классы и методы из уже скомпилированного приложения. Это позволяло решать проблему 64К методов до появления MultiDex.
Во-вторых, Java- и Dalvik-байткод легко декомпилировать. Для серверного Java-приложения это не проблема, а вот к байткоду приложения под Android доступ имеет любой пользователь.
Proguard обфусцирует код, что усложняет задачу декомпиляции.
#Build
@android_its
Proguard – это инструмент обфускации и оптимизации Java-кода. Proguard может использоваться как на чистом Java-, так и на Android-приложении, но в мире Андроида Proguard популярнее по двум причинам.
Во-первых, Proguard удаляет неиспользуемые классы и методы из уже скомпилированного приложения. Это позволяло решать проблему 64К методов до появления MultiDex.
Во-вторых, Java- и Dalvik-байткод легко декомпилировать. Для серверного Java-приложения это не проблема, а вот к байткоду приложения под Android доступ имеет любой пользователь.
Proguard обфусцирует код, что усложняет задачу декомпиляции.
#Build
@android_its
👍7
Как Proguard удаляет неиспользуемый код?
Одна из функций Proguard – это удаление неиспользуемого кода программы.
При подключении сторонних библиотек, часто используется только часть предоставляемой функциональности. Классы, которые не используются в приложении, могут быть безопасно удалены, что уменьшает конечный размер приложения.
Proguard запускается после компиляции исходного кода и получения
Proguard строит граф использования классов, методов и полей, начиная от входных точек программы, как показано на картинке.
Входные точки программы задаются в файлах конфигурации правилом
Если класс, метод или поле используется только через Reflection, Proguard пометит этот компонент как неиспользуемый и удалит. Это является частой причиной крэшей
Для сохранения таких компонентов нужно добавить правила
После сборки приложения с Proguard, генерируется файл
#Build
@android_its
Одна из функций 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;
• Избавиться от неиспользуемых ресурсов с помощью атрибута
• Избавиться от ресурсов сторонних библиотек, которые не подходят под вашу локаль, с помощью атрибута
• Сконвертировать все картинки в формат webp или VectorDrawable.
Подробнее об этих советах можно почитать в статье.
#Build
• Подключить к своему приложению Proguard;
• Избавиться от неиспользуемых ресурсов с помощью атрибута
shrinkResources;• Избавиться от ресурсов сторонних библиотек, которые не подходят под вашу локаль, с помощью атрибута
resConfigs;• Сконвертировать все картинки в формат webp или VectorDrawable.
Подробнее об этих советах можно почитать в статье.
#Build
👍7🔥1
Как отладить приложение на девайсе?
Для удаленной отладки используется технология Android Debug Bridge. Она включает три компонента:
• adbd – демон на стороне девайса, который принимает и выполняет команды.
• ADB Сервер – демон на стороне компьютера, с которого ведется отладка. Принимает запросы от отладочных клиентов на TCP порт 5037. Служит единой точкой доступа к удаленной отладке. Запускается при первом старте adb клиента.
• Клиенты – различные приложения, которые пользуются инструментами отладки. Самое простое – консольный клиент
Сервер передает команды от клиентов в adbd на эмуляторах через TCP порты, либо в adbd на реальных девайсах через USB или WiFi.
Помимо самого дебаггера для отладки применяются дополнительные инструменты, такие как Android profiler и Device File Explorer. Для исследования проблем полезны баг репорты.
Если необходимо отладить web-приложение, используется специальная фича Chrome DevTools.
#Tools
@android_its
Для удаленной отладки используется технология 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
Android Developers
Profile your app performance | Android Studio | Android Developers
Learn about profiling your app in Android Studio.
👍5🔥1
Какие классы служат для доступа к сенсорам?
Таких классов четыре:
• SensorManager – точка входа для работы с сенсорами и listener-ами их событий. Системный сервис, получаемый по имени
• Sensor – представляет отдельно взятый сенсор. Дает различную метаинформацию (энергопотребление, точность, производителя, и т.д.);
• SensorEventListener – интерфейс для реализации обработчиков событий, приходящих из сенсоров. В нём реализуется логика обработки входящих данных;
• SensorEvent – отдельное событие из сенсора: данные и точность их измерения.
Для подробного изучения возможностей сенсоров на официальном сайте есть полный гайд.
#Hardware
@android_its
Таких классов четыре:
• SensorManager – точка входа для работы с сенсорами и listener-ами их событий. Системный сервис, получаемый по имени
Context.SENSOR_SERVICE;• Sensor – представляет отдельно взятый сенсор. Дает различную метаинформацию (энергопотребление, точность, производителя, и т.д.);
• SensorEventListener – интерфейс для реализации обработчиков событий, приходящих из сенсоров. В нём реализуется логика обработки входящих данных;
• SensorEvent – отдельное событие из сенсора: данные и точность их измерения.
Для подробного изучения возможностей сенсоров на официальном сайте есть полный гайд.
#Hardware
@android_its
👍3🔥2
orhanobut/logger
Наглядный и удобный логгер для использования в Android-проектах. Фуннкции:
https://github.com/orhanobut/logger
@android_its
Наглядный и удобный логгер для использования в 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
@android_its
Параметры передаются в конструктор Fragment-а через Bundle, с помощью метода
Fragment.setArgument(Bundle). Переданный бандл может быть получен через Fragment.getArguments() в соответствующем методе жизненного цикла фрагмента.Распространенная ошибка передавать данные через кастомный конструктор. Использовать не-дефолтные конструкторы фрагментов не рекомендуется, потому что фрагмент может быть уничтожен и пересоздан вследствие изменений конфигурации (например при повороте экрана).
Использование пары методов
setArguments/getArguments гарантирует, что при пересоздании Bundle будет сериализован/десериализован, и данные восстановятся.#Fragment
@android_its
👍6❤1
🔥 Как устроена операционная система Android
💣 Заглянем внутрь этой ОС на открытом уроке 21 июня в 20:00. Мы разберем ее устройство с точки зрения архитектуры, что лежит в ее основе, как она загружается, как приложения общаются между собой и другие интересные детали.
📌 На вебинаре выступит Даниил Попов, разработчик эстонской компании Bolt Technology OÜ. Занятие пройдет в рамках онлайн-курса «Android Developer. Professional» от OTUS и позволит протестировать процесс обучения.
🦾 Программа рассчитана на разработчиков с опытом создания Android-приложений.
️️✅ Пройдите вступительный тест, чтобы зарегистрироваться
💣 Заглянем внутрь этой ОС на открытом уроке 21 июня в 20:00. Мы разберем ее устройство с точки зрения архитектуры, что лежит в ее основе, как она загружается, как приложения общаются между собой и другие интересные детали.
📌 На вебинаре выступит Даниил Попов, разработчик эстонской компании Bolt Technology OÜ. Занятие пройдет в рамках онлайн-курса «Android Developer. Professional» от OTUS и позволит протестировать процесс обучения.
🦾 Программа рассчитана на разработчиков с опытом создания Android-приложений.
️️✅ Пройдите вступительный тест, чтобы зарегистрироваться
👍4
Какова структура Android-проекта?
В проекте обычно присутствуют следующие файлы и директории:
•
•
•
• Файл
•
•
•
•
•
•
•
•
•
•
#System
@android_its
В проекте обычно присутствуют следующие файлы и директории:
•
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. Запустить активити.
2. Запустить сервис. Можно запустить сервис для выполнения единичной операции, передав
3. Доставить броадкаст. Для отправки броадкаст-ивента в другие приложения интент передается в
#Intent
1. Запустить активити.
Intent передается в метод startActivity() явно, либо разрешается с помощью механизма Intent Resolution.2. Запустить сервис. Можно запустить сервис для выполнения единичной операции, передав
Intent в startService().3. Доставить броадкаст. Для отправки броадкаст-ивента в другие приложения интент передается в
sendBroadcast(), sendOrderedBroadcast(), или sendStickyBroadcast().#Intent
👍7