Разработка Android-приложений в деталях Машнин Тимур
Кнопка Create Device вкладки Device Definitions позволяет создать новое устройство списка Device.
При запуске кнопкой Start виртуального устройства появляется окно Launch Options определения опций запуска, в котором:
Флажки Launch from snapshot и Save to snapshot работают в случае отмеченного флажка Snapshot раздела Emulation Options: и определяют загрузку и сохранение состояния виртуального устройства при закрытии.
Флажок Scale display to real size определяет масштабирование виртуального устройства путем установки диагонали и плотности экрана.
Флажок Wipe user data позволяет при запуске виртуального устройства стереть его сохраненное состояние, при этом будет отключена опция Launch from snapshot.
Виртуальное устройство окончательно запускается кнопкой Launch окна Launch Options.
По умолчанию приложение AVD Manager создает конфигурацию виртуального устройства в каталоге [user]\.android\avd файловой системы компьютера. Если в пути данного каталога будут присутствовать русские буквы, виртуальное устройство не запустится. Кроме того, запуск виртуального устройства занимает значительное время, поэтому рекомендуется как можно реже его закрывать.
После запуска виртуальное устройство отобразится на экране компьютера.
Для запуска Android-приложения в виртуальном Android-устройстве воспользуемся командой Run As | Android Application контекстного меню окна Package Explorer.
В результате запуска Android-приложения каталог bin Android-проекта заполнится файлами и папками:
Папка classes – откомпилированные Java класс-файлы, включая классы приложения и R-классы.
Папка dexedLibs – конвертированные в DEX-формат виртуальной машины Dalvik дополнительные библиотеки.
Папка res – ресурсы приложения.
Файл манифеста AndroidManifest. xml.
Бинарный файл resources.arsc строк приложения.
Файл classes.dex – конвертированные в DEX-формат виртуальной машины Dalvik Java класс-файлы.
APK-файл – ZIP-архив Android-приложения для инсталляции в отладочном режиме, содержащий папку META-INF с Java-манифестом MANIFEST. MF и сертификатами, папку res с ресурсами, файл манифеста AndroidManifest. xml, файл resources.arsc и файл classes.dex.
Подготовка к публикации Android-приложения
Среда выполнения Android при инсталляции приложений требует, чтобы все Android-приложения были подписаны цифровой подписью с помощью сертификата, закрытый ключ которого имеется в распоряжении разработчиков приложений. Однако в отладочном режиме инструменты сборки приложения набора Android SDK автоматически подписывают приложение специальным отладочным ключом, который генерируется и по умолчанию хранится в файле debug.keystore каталога [user]\.android. По умолчанию отладочный сертификат имеет срок действия 365 дней и по истечении этого периода необходимо удалить файл debug.keystore для повторной автоматической генерации сертификата.
Для того чтобы подготовить Android-приложение к реальной инсталляции в Android-устройстве, так как среда выполнения Android не позволит инсталлировать приложение, подписанное отладочным ключом, можно воспользоваться командой Android Tools | Export Signed Application Package контекстного меню окна Package Explorer – в результате откроется мастер Export Android Application, в поле Project: которого будет отображено имя Android-проекта и в окне которого надо нажать кнопку Next.
Далее необходимо создать хранилище своего закрытого ключа, которым будут подписываться все версии данного Android-приложения. Важно использовать один постоянный ключ для одного Android-приложения, так как Android-система позволит обновление приложения только в том случае, если сертификаты старой и новой версии будут совпадать – иначе придется изменять имя пакета приложения, и новая версия будет уже устанавливаться как новое приложение. Кроме того, если приложение имеет модульную структуру и все модули подписаны одним сертификатом, тогда все модули будут запускаться в одном процессе, и смогут обновляться независимо друг от друга.
Для создания хранилища закрытого ключа в окне Export Android Application выберем переключатель Create new keystore, в поле Location: введем путь файла хранилища, в полях Password: и Confirm: введем пароль хранилища и нажмем кнопку Next.
Примечание
Для поля Location: необязательно использовать кнопку Browse – можно вручную ввести путь несуществующего файла, например, C:\Users\user\my_keystore, где файл my_keystore будет сгенерирован.
В поле Alias: введем имя ключа, в полях Password: и Confirm: введем пароль ключа, в поле Validity (years): введем срок действия сертификата более 25 лет, в поле First and Last Name: введем имя разработчика и нажмем кнопку Next, в поле Destination APK file: введем путь APK-файла Android-приложения и нажмем кнопку Finish.
В результате будет создан подписанный и готовый к публикации файл приложения, обработанный при этом оптимизирующим инструментом zipalign набора SDK Tools.
Activity-компонент
Сгенерированная мастером Android Project основа Android-проекта Blank Activity в узле src окна Package Explorer содержит файл исходного кода Activity-компонента, в котором его класс, расширяющий класс android.app.Activity, переопределяет метод onCreate ().
Данный метод является одним из методов обратного вызова Activity-компонента, которые среда выполнения Android вызывает при переходе Activity-компонента между различными состояниями его жизненного цикла. Переопределение метода onCreate () является важным, так как он вызывается при запуске Activity-компонента и предназначен для инициализации GUI-интерфейса.
Помимо метода onCreate () класс android.app.Activity предоставляет следующие методы обратного вызова для их переопределения:
onRestart – метод жизненного цикла, вызывается после того как Activity-компонент был остановлен, перед вызовом метода onStart.
onStart – метод жизненного цикла, вызывается, когда Activity-компонент становится видимым.
onResume – метод жизненного цикла, вызывается, когда Activity-компонент помещается на передний план для взаимодействия с пользователем.
onPause – метод жизненного цикла, вызывается, когда Activity-компонент помещается на задний план. После данного метода может вызываться метод onResume, если Activity-компонент помещается снова на передний план, или метод onStop, если Activity-компонент становится невидимым.
onStop – метод жизненного цикла, вызывается, когда Activity-компонент становится невидимым. После данного метода может вызываться метод onRestart или метод onDestroy.
onDestroy – метод жизненного цикла, вызывается перед уничтожением Activity-компонента программным способом методом finish класса android.app.Activity или Android-системой для освобождения ресурсов.
onActionModeFinished – вызывается при окончании работы режима контекстного меню ActionMode.
onActionModeStarted – вызывается при запуске режима контекстного меню ActionMode для Activity-компонента.
onActivityResult – при запуске другого Activity-компонента методом startActivityForResult вызывается после закрытия запущенного Activity-компонента для обработки возвращаемых им результатов.
onAttachFragment – вызывается при присоединении объекта Fragment к объекту Activity между вызовами методов жизненного цикла Fragment. onAttach и Fragment. onCreate.
onAttachedToWindow – вызывается при присоединении окна Activity-компонента к Window-менеджеру, метод может быть использован вместо метода onCreate.
onBackPressed – вызывается при нажатии пользователем клавиши Back.
onConfigurationChanged – вызывается при изменении конфигурации устройства во время работы Activity-компонента, при этом информацию о новой конфигурации предоставляет объект android.content.res.Configuration.
onContentChanged – вызывается при изменении GUI-интерфейса Activity-компонента при вызове метода setContentView.
onContextItemSelected – вызывается при выборе элемента контекстного меню.
onContextMenuClosed – вызывается при закрытии контекстного меню.
onCreateContextMenu – вызывается при создании контекстного меню – меню, которое открывается при долгом нажатии на GUI-элементе.
onCreateDescription – вызывается перед вызовом метода onPause.
onCreateNavigateUpTaskStack – вызывается при создании стека задач.
onCreateOptionsMenu – вызывается при создании меню опций – меню, которое связано с Activity-компонентом.
onCreatePanelMenu – вызывается для инициализации содержимого меню (меню опций или контекстного меню).
onCreatePanelView – вызывается при создании панели меню.
onCreateThumbnail – вызывается перед вызовом метода onPause и позволяет определить для Activity-компонента значок, а не скриншот.
onCreateView – вызывается для создания фрагментом GUI-интерфейса.
onDetachedFromWindow – вызывается при отсоединении окна Activity-компонента от Window-менеджера.
onGenericMotionEvent – вызывается для необработанного события MotionEvent.
onKeyDown – вызывается для необработанного события KeyEvent при нажатии клавиши.
onKeyLongPress – вызывается для необработанного события KeyEvent при долгом нажатии.
onKeyMultiple – вызывается для необработанного события KeyEvent при многократном нажатии одной клавиши.
onKeyShortcut – вызывается для необработанного события KeyEvent при нажатии комбинации клавиш.
onKeyUp – вызывается для необработанного события KeyEvent при освобождении клавиши.
onLowMemory – вызывается при уменьшении оперативной памяти, когда система будет вынуждена остановить все фоновые процессы, используется для освобождения всех ненужных ресурсов.
onMenuItemSelected – вызывается при выборе элемента меню.
onMenuOpened – вызывается при открытии меню.
onNavigateUp – вызывается при нажатии кнопки Up.
onNavigateUpFromChild – вызывается, если дочерний Activity-компонент использует Up-навигацию.
onNewIntent – при запуске данного Activity-компонента другим Android-компонентом вызывается для уже существующего экземпляра Activity-компонента переднего плана своей задачи, имеющего атрибут android: launchMode=«singleTop» файла манифеста, или если вызывающий Android-компонент использует метод startActivity с флагом FLAG_ACTIVITY_SINGLE_TOP Intent-объекта, вместо создания нового экземпляра Activity-компонента.
onOptionsItemSelected – вызывается при выборе элемента меню опций.
onOptionsMenuClosed – вызывается при закрытии меню опций.
onPanelClosed – вызывается при закрытии панели меню.
onPostCreate – вызывается после вызова метода onRestoreInstanceState.
onPostResume – вызывается после вызова метода onResume.
onPrepareNavigateUpTaskStack – вызывается перед созданием стека задач.
onPrepareOptionsMenu – вызывается перед открытием меню опций.
onPreparePanel – вызывается перед открытием панели меню.
onProvideAssistData – вызывается, когда пользователь запрашивает помощь.
onRestoreInstanceState – вызывается после метода onStart для восстановления состояния Activity-компонента из объекта android. os. Bundle.
onSaveInstanceState – вызывается перед уничтожением Activity-компонента, перемещенного с переднего плана, Android-системой для освобождения ресурсов памяти. Данный метод предназначен для сохранения состояния Activity-компонента в объекте android. os. Bundle в виде пар имя-значение. Измененный объект Bundle передается Android-системой в методы onCreate (Bundle) и onRestoreInstanceState (Bundle).
onSearchRequested – вызывается при запуске поиска.
onTouchEvent – вызывается для необработанного события MotionEvent при прикосновении к экрану.
onTrackballEvent – вызывается для необработанного события MotionEvent при перемещении указателя.
onTrimMemory – вызывается при сокращении ненужной памяти у процесса.
onUserInteraction – вызывается при взаимодействии с пользователем.
onUserLeaveHint – вызывается, когда Activity-компонент перемещается на задний план в результате действий пользователя.
onWindowAttributesChanged – вызывается при изменении атрибутов окна.
onWindowFocusChanged – вызывается при потере или получении фокуса окном.
onWindowStartingActionMode – вызывается при запуске режима ActionMode для окна.
Другой метод обратного вызова класса android.app.Activity, который рекомендуется переопределять – это метод onPause (), вызываемый при потере фокуса Activity-компонентом и который предназначен для сохранения состояния Activity-компонента, так как Android-приложение не контролирует полностью жизненный цикл своих компонентов – Android-система может уничтожать приостановленные Activity-компоненты для освобождения ресурсов памяти.
В методе onPause () производится сохранение данных, общих для приложения или для использования другими приложениями, с помощью ContentProvider-компонента, или прямое сохранение измененных данных с помощью объекта SharedPreferences (сохранение пар имя-значение примитивных типов данных), метода openFileOutput () класса android.content.Context (сохранение данных во внутреннем хранилище устройства), метода getCacheDir () класса android.content.Context (кэширование данных), метода getExternalStorageDirectory () класса android. os. Environment (сохранение данных в карте памяти), сохранение данных в базе данных SQLite, в Web-сервисах с использованием пакетов java.net.* и android.net.*.
Использование метода onPause () для сохранения состояния Activity-компонента имеет свои преимущества, по сравнению с применением метода onSaveInstanceState (), так как метод onSaveInstanceState () не будет вызываться Android-системой, если Activity-компонент был уничтожен пользователем, например, нажатием клавиши BACK.
Переопределение методов onCreate (), onStart (), onRestart (), onResume (), onPause (), onStop (), onDestroy () и др. должно сопровождаться вызовом суперкласса с помощью ключевого слова super.
В переопределенном методе onCreate () класса Activity-компонента сгенерированной основы Android-проекта вызывается метод setContentView () класса android.app.Activity, устанавливающий GUI-интерфейс Activity-компонента на основе XML-файла activity_main. xml каталога ресурсов res/layout проекта.
В переопределенном методе onCreateOptionsMenu () класса Activity-компонента сгенерированной основы Android-проекта методом getMenuInflater () получается объект android.view.MenuInflater, отвечающий за создание объектов меню из XML-описания.
Переопределенный метод onOptionsItemSelected () класса Activity-компонента сгенерированной основы Android-проекта представляет каркас обработки выбора элементов меню.
Layout-редактор ADT-плагина
Для работы с XML-описанием GUI-интерфейса Activity-компонента ADT-плагин предлагает визуальный графический редактор.
Layout-редактор ADT-плагина имеет вкладку Graphical Layout для визуального редактирования GUI-интерфейса и XML-вкладку, отображающую код Layout-файла.
XML-код Layout-файла сгенерированной основы Android-проекта Blank Activity определяет GUI-интерфейс, состоящий из RelativeLayout-контейнера, содержащего TextView-компонент.
RelativeLayout-контейнер представлен классом android.widget.RelativeLayout, обеспечивающим компоновку дочерних компонентов android.view.View друг относительно друга и относительно родительского компонента.
Компоновку View-компонентов определяют XML-атрибуты.
Атрибуты android: layout_above и android: layout_below располагают компонент выше или ниже компонента с указанным идентификатором.
Атрибуты android: layout_toLeftOf, android: layout_toStartOf и android: layout_toRightOf, android: layout_toEndOf располагают компонент слева или справа компонента с указанным идентификатором.
Атрибуты android: layout_alignLeft, android: layout_alignStart, android: layout_alignRight, android: layout_alignEnd, android: layout_alignBottom, android: layout_alignTop выравнивают стороны компонента по сторонам компонента с указанным идентификатором.
Атрибут android: layout_alignBaseline выравнивает компонент по базовой линии компонента с указанным идентификатором.
Атрибуты android: layout_alignParentBottom, android: layout_alignParentEnd, android: layout_alignParentTop, android: layout_alignParentStart, android: layout_alignParentLeft, android: layout_alignParentRight располагают компонент внизу, вверху, в левой и в правой части родительского компонента.
Атрибут android: layout_alignWithParentIfMissing со значением true определяет расположение компонента по умолчанию относительно родительского компонента.
Атрибуты android: layout_centerHorizontal, android: layout_centerInParent, android: layout_centerVertical располагают компонент по центральной горизонтальной линии, по центру и по центральной вертикальной линии родительского компонента.
Атрибуты android: layout_marginBottom, android: layout_marginEnd, android: layout_marginLeft, android: layout_marginRight, android: layout_marginStart, android: layout_marginTop определяют отступы компонента.
Атрибуты android: layout_height и android: layout_width указывают размеры компонента, при этом константы FILL_PARENT, MATCH_PARENT и WRAP_CONTENT определяют заполнение родительского компонента, соответствие размерам родительского компонента и соответствие содержимому. Данные атрибуты могут принимать значения в виде px (пиксели), dp (виртуальные пиксели, px = dp * (dpi / 160)), sp (масштабируемые пиксели, основанные на предпочтительном размере шрифта), in (дюймы), mm (миллиметры).
TextView-компонент представлен классом android. widget. TextView, обеспечивающий отображение текста пользователю. XML-атрибуты android: layout_height и android: layout_width со значением «wrap_content» устанавливает высоту и ширину компонента, определяемые размером его содержимого. XML-атрибут android: text со значением @string/hello_world устанавливает текстовое содержимое компонента в виде значения строкового ресурса файла strings. xml Android-проекта с именем hello_world.
Интернационализация
Кнопка Any вкладки Graphical Layout указывает, что данный Android-проект не обеспечивает интернационализацию и локализацию приложения.
Для интернационализации Android-приложения в окне Package Explorer нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | Android | Android XML Values File и нажмем кнопку Next. В окне мастера в поле File: введем имя файла strings. xml и нажмем кнопку Next, в списке Optional: Choose a specific configuration to limit the XML to: выберем Language и нажмем кнопку ->. В поле Language введем ru и нажмем кнопку Finish. В результате в каталоге res проекта будет создана папка values-ru с файлом strings. xml.
Для работы с Values-файлами Android-проекта ADT-плагин также предлагает визуальный графический редактор, имеющий вкладку Resources для визуального редактирования и XML-вкладку, отображающую код Values-файла.
Для создания локализованных строк Android-приложения откроем файл strings. xml каталога res/values-ru в редакторе и нажмем кнопку Add вкладки Resources, в предложенном списке выберем элемент String и нажмем кнопку OK. В поле Name введем имя элемента «hello_world», а в поле Value введем строку «Привет!». Еще раз нажмем кнопку Add вкладки Resources, в предложенном списке выберем элемент String и нажмем кнопку OK. В поле Name введем имя элемента «app_name», а в поле Value введем строку «Приложение Андроид». Таким образом, файл strings. xml каталога res/values будет локализован для России.
Откроем файл activity_main. xml каталога ресурсов res/layout Android-проекта и увидим, что кнопка Locale… вкладки Graphical Layout изменилась на список с элементами Russian (ru) (русская версия) b Other (английская версия), при выборе которых в окне конечного вида GUI-интерфейса вкладки Graphical Layout будет отображаться соответствующий текст TextView-компонента.
После инсталляции и запуска Android-приложения в виртуальном устройстве с помощью выбора команды Run As | Android Application контекстного меню окна Package Explorer, нажмем кнопки Home и Settings устройства и выберем настройки Language & keyboard, в настройке Select locale выберем Русский – в результате Android-приложение будет отображать GUI-интерфейс в русской версии.
Другой, более быстрый способ интернационализации Android-приложения – это использование команды Add New Translation кнопки Locale…, открывающей диалоговое окно, в котором список Language позволяет выбрать язык локализации, а поля New Translation – ввести локализованные значения строковых ключей.
Панель инструментов Graphical Layout
Кнопка Android… вкладки Graphical Layout позволяет посмотреть конечный вид GUI-интерфейса относительно установленных версий Android-платформы.
Меню кнопки Configuration… вкладки Graphical Layout позволяет посмотреть конечный вид GUI-интерфейса для различных типов устройств, различных размеров экрана, различных локализаций, фрагментов и версий. Команда Manual Previews в сочетании с командой Add As Thumbnail дает возможность сформировать свой список просмотра.
Команда Create New кнопки Configuration… вкладки Graphical Layout обеспечивает создание альтернативных версий файла activity_main. xml описания GUI-интерфейса Activity-компонента для различных конфигураций Android-устройства. При запуске Android-приложения среда выполнения Android-устройства будет загружать подходящий ее конфигурации Layout-файл. Команда Create New предлагает следующие спецификаторы Android-конфигураций:
Country Code и Network Code – альтернатива языковой и региональной локализации.
LTR – layout-direction-left-to-right (определитель ldltr) направление письменности слева направо.
sw [n] dp – создает Layout-файл каталога res/layout-sw [n] dp для наименьшего размера из высоты и ширины ndp.
w [n] dp – создает Layout-файл каталога res/layout-w [n] dp для минимальной ширины экрана ndp.
h [n] dp – создает Layout-файл каталога res/layout-h [n] dp для минимальной высоты экрана ndp.
Small, Normal, Large, Xlarge – создает Layout-файл каталога res/layout- [small, normal, large, xlarge] для различных разрешений экрана 320x426, 320x470, 480x640, 720x960.
Long, Not Long – создает Layout-файл каталога res/layout-long и res/layout-notlong для широких экранов WQVGA, WVGA, FWVGA и для экранов QVGA, HVGA, VGA.
Portrait, Landscape – создает Layout-файл каталога res/layout-port и res/layout-land для вертикальной и горизонтальной ориентации экрана.
Not Night, Night – создает Layout-файл каталога res/layout-notnight и res/layout-night для работы в дневное и ночное время.
Low Density, Medium Density, High Density, Extra High Density, TV Density – создает Layout-файл каталога res/layout-ldpi, res/layout-mdpi, res/layout-hdpi, res/layout-xhdpi, res/layout-tvdpi для плотности экрана 120dpi, 160dpi, 240dpi, 320dpi, 213dpi.
Finger – создает Layout-файл каталога res/layout-finger для сенсорного экрана.
Soft – создает Layout-файл каталога res/layout-keyssoft для устройства с виртуальной клавиатурой.
No Keys – создает Layout-файл каталога res/layout-nokeys для устройства без аппаратной клавиатуры.
Hidden, Exposed – создает Layout-файл каталога res/layout-navhidden, res/layout-navexposed для устройства без и с кнопками навигации.
None, Trackball – создает Layout-файл каталога res/layout-nonav, res/layout-trackball для устройства, предоставляющим навигацию только с помощью сенсорного экрана, и для устройства с трекболом.
800x480 – создает Layout-файл каталога res/layout-1280x800 для экрана с разрешением 1280x800.
API 18 – создает Layout-файл каталога res/layout-v18 для устройства с Android-платформой 4.3 и выше.
Меню кнопки обеспечивает просмотр конечного вида GUI-интерфейса для различных типа экранов.
Меню кнопки дает возможность посмотреть конечный вид GUI-интерфейса для вертикальной и горизонтальной ориентации экрана (Portrait и Landscape), в нормальном состоянии, в настольном и автомобильном держателях, при соединении с телевизором, без экрана (Normal, Car Dock, Desk Dock, Television, Appliance), для Android-устройства, работающего в дневное и ночное время (Day Time и Night Time).
Меню кнопки обеспечивает просмотр конечного вида GUI-интерфейса с применением различных стилей для приложения.
Для всего приложения стиль устанавливается с помощью атрибута android: theme="@style/AppTheme» тэга <application> файла манифеста AndroidManifest. xml и ресурса res/values/styles. xml.
Для Activity-компонента стиль устанавливается с помощью атрибута android: theme="@style/ActivityTheme» тэга <activity> файла манифеста AndroidManifest. xml и ресурса res/values/styles. xml.
Применение стиля к Activity-компоненту может существенно менять отображение его GUI-интерфейса на экране Android-устройства. Например, при установке стиля Theme. Dialog, Activity-компонент отображается в виде диалогового окна, не заполняя полностью весь экран.
Кнопки вкладки Graphical Layout, расположенные ниже панели кнопок с меню, обеспечивают регулировку значений атрибутов android: layout_width, android: layout_height и др. корневого контейнера, а также эмуляцию размера экрана и увеличение-уменьшение изображения экрана.
Palette-палитра вкладки Graphical Layout позволяет визуально заполнить GUI-интерфейс Activity-компонента View-компонентами с помощью перетаскивания элементов Palette-палитры в область просмотра конечного вида GUI-интерфейса.
Кроме того, вкладка Graphical Layout имеет контекстное меню, открывающееся при нажатии правой кнопкой мышки на View-компоненте в окне просмотра конечного вида GUI-интерфейса, с помощью опций которого можно изменять свойства выбранного View-компонента.
Редактор файла AndroidManifest. xml ADT-плагина
Для файла манифеста AndroidManifest. xml ADT-плагин также предоставляет визуальный графический редактор.
Редактор файла AndroidManifest. xml ADT-плагина имеет вкладки Manifest, Application, Permissions, Instrumentation и AndroidManifest. xml.
Набор опций вкладок Manifest и Application зависит от версии Android-платформы, на основе которой создан Android-проект.
Вкладка Manifest ADT-редактора файла AndroidManifest. xml содержит следующие поля и ссылки:
Package – редактирование имени пакета Android-приложения, значение атрибута package элемента <manifest>.
Version Code – редактирование версии Android-приложения, значение атрибута android: versionCode элемента <manifest>.
Version name – редактирование строки, представляющей пользователю версию Android-приложения, значение атрибута android: versionName элемента <manifest>.
Shared user id – если данное приложение является одним из модулей большого Android-приложения, установка данного идентификатора одинаковым для всех модулей с подписанием их одним сертификатом дает взаимный доступ к данным, значение атрибута android: sharedUserId элемента <manifest>.
Shared user label – отображаемая пользователю метка sharedUserId-идентификатора, значение атрибута android: sharedUserLabel элемента <manifest>.
Раздел Manifest Extras – с помощью кнопки Add обеспечивает добавление в манифест следующих тэгов:
<uses-sdk> (элемент Uses Sdk) – указывает совместимость с версиями Android-платформы.
<supports-screens> (элемент Supports Screens) – указывает поддержку Android-приложением различных экранов.
<uses-configuration> (элемент Uses Configuration) – указывает, какие опции устройства требуются для работы Android-приложения.
<uses-feature> (элемент Uses Feature) – указывает для других Android-приложений, от какой опции устройства зависит работа данного Android-приложения.
<protected-broadcast> (элемент Protected Broadcast) – указывает Broadcasts-сообщения, которые может посылать только Android-система.
<compatible-screens> (элемент Compatible Screens) – указывает для Android Market совместимость приложения с конфигурациями экрана, используя тэги <screen> (элемент Screen кнопки Add).
<original-package> (элемент Original Package) – предназначен только для системных приложений.
<package-verifier> (элемент Package Verifier) – указывает имя пакета приложения, которое вызывается PackageManager-сервисом при инсталляции данного приложения. PackageManager-сервис посылает Broadcast-сообщение ACTION_PACKAGE_NEEDS_VERIFICATION указываемому пакету, который должен содержать BroadcastReceiver-компонент для верификации инсталляции.
Exporting – содержит ссылки Use the Export Wizard и Export an unsigned APK, запускающие опции экспорта подписанного и неподписанного для публикации Android-приложения.
Links – содержит ссылки Application (открывает вкладку Application редактора), Permission (открывает вкладку Permission редактора), Instrumentation (открывает вкладку Instrumentation редактора), XML Source (открывает вкладку AndroidManifest. xml редактора), Documentation (пытается открыть локализованную страницу документации).
Вкладка Application ADT-редактора файла AndroidManifest. xml помогает редактировать тэг <application> файла манифеста с помощью разделов Application Toggle, Application Attributes и Application Nodes.
Раздел Application Toggle вкладки Application содержит ссылку application – открывает страницу документации элемента <application> и флажок Define an <application> tag in the AndroidManifest. xml – включает элемент <application> в файл манифеста.
Раздел Application Attributes вкладки Application определяет атрибуты элемента <application> с помощью следующих полей и списков:
Name – при нажатии открывает мастер создания Java-класса, расширяющего класс android. app. Application. Созданный Application-класс указывается в качестве значения атрибута android: name тэга <application>. Если приложение содержит несколько Activity-компонентов, решить проблему обеспечения для них общих глобальных в рамках приложения данных и сервисов поможет Application-класс. При запуске приложения Android-система создаст единственный экземпляр Application-класса и будет вызывать его методы жизненного цикла. Рекомендуется реализовать Application-класс как Singleton-класс со статическим доступом к глобальным данным и сервисам.
Theme – общий для Activity-компонентов стиль, указываемый как значение атрибута android: theme тэга <application>. Предварительно необходимо создать ресурсный файл каталога res/values со стилем, используя команду New | Other | Android | Android XML Values File контекстного меню окна Package Explorer, дополнить его тэгом <style>, нажать кнопку Browse поля Theme и выбрать созданный ресурс – в результате у тэга <application> появится атрибут android: theme.
Label – отображаемое пользователю имя приложения, указываемое значением атрибута android: label тэга <application>. Кнопка Browse поля Label позволяет выбрать значение атрибута в ресурсном файле каталога res/values, содержащем тэги <string>.
Icon – значок приложения, определяемый значением атрибута android: icon тэга <application>. Кнопка Browse поля Icon позволяет выбрать значение атрибута как имя файла изображения, расположенного в каталоге res/drawable. Папки drawable могут иметь спецификаторы ldpi, mdpi, hdpi, xhdpi, nodpi и tvdpi, обеспечивающие отображение значка на экранах с различной плотностью.
Logo – определяет значение атрибута android: logo тэга <application>, указывающего логотип приложения для отображения в панели ActionBar.
Description – краткое описание приложения, которое указывается значением атрибута android: description тэга <application> и должно определяться ссылкой на строковый ресурс. Кнопка Browse поля Description позволяет выбрать значение атрибута в ресурсном файле каталога res/values, содержащем тэги <string>.
Permission – список позволяет выбрать разрешение, которое должно иметь стороннее Android-приложение для взаимодействия с данным Android-приложением в целом, указывается значением атрибута android: permission тэга <application>.
Process – определяет значение атрибута android: process тэга <application>, указывающего имя процесса приложения. Если данное приложение является одним из модулей большого Android-приложения, которые имеют одинаковый sharedUserId-идентификатор и подписаны одним сертификатом, тогда установка значения атрибута android: process одинаковым для всех модулей обеспечивает их запуск в одном процессе.
Task affinity – определяет значение атрибута android: taskAffinity тэга <application>, указывающего имя задачи для всех Activity-компонентов приложения, по умолчанию – имя пакета приложения. Task-задача представляет собой набор Activity-компонентов, с которыми пользователь взаимодействует для выполнения своей задачи, при этом Activity-компоненты задачи организуются в обратный стек, в порядке, в котором каждый Activity-компонент был запущен другим Activity-компонентом.
Allow task reparenting – определяет значение атрибута android: allowTaskReparenting тэга <application> – если true, тогда Activity-компоненты приложения могут перемещаться из задачи, которая их запустила, в задачу переднего плана, с которой Activity-компоненты имеют общее taskAffinity-значение, по умолчанию false.
Has code – определяет значение атрибута android: hasCode тэга <application> – если false, тогда приложение не содержит Java-кода, а полностью реализовано на основе программного интерфейса NDK API, по умолчанию true.
Persistent – определяет значение атрибута android: persistent тэга <application> – если true, тогда приложение работает до тех пор, пока работает устройство, обычно используется системными приложениями, по умолчанию false.
Enabled – определяет значение атрибута android: enabled тэга <application> – если false, тогда Android-система не может создавать экземпляры компонентов приложения, по умолчанию true.
Debuggable – определяет значение атрибута android: debuggable тэга <application>. Android-инструменты сборки ADT-плагина автоматически добавляют значение атрибута true в отладочном режиме и удаляют данный атрибут, имеющий по умолчанию значение false, при экспорте релиза приложения.
Vm safe mode – определяет значение атрибута android: vmSafeMode тэга <application> – если true, тогда JIT-оптимизация отключается.
Hardware accelerated – определяет значение атрибута android: hardwareAccelerated тэга <application> – если true, тогда включается аппаратное ускорение визуализации, по умолчанию false.
Manage space activity – определяет значение атрибута android: manageSpaceActivity тэга <application>, указывает имя Activity-компонента, который запускается дополнительной кнопкой Управление местом в разделе настроек Приложения | Управление приложениями Android-устройства.
Allow clear user data – определяет значение атрибута android: allowClearUserData тэга <application> – применимо только для системных приложений, для обычных приложений игнорируется.
Test only – определяет значение атрибута android: testOnly тэга <application> – если true, тогда приложение находится в стадии тестирования и не может быть инсталлировано в Android-устройстве.
Backup agent – определяет значение атрибута android: backupAgent тэга <application>, указывает имя класса, расширяющего класс android.app.backup.BackupAgent, который вызывается сервисом Backup Manager для определения настроек приложения, сохраняемых в облачном хранилище, и их восстановления при реинсталляции приложения в случае обновления Android-системы устройства.
Allow backup – определяет значение атрибута android: allowBackup тэга <application> – если false, тогда приложение не обслуживается сервисом Backup Manager, по умолчанию true.
Kill after restore – определяет значение атрибута android: killAfterRestore тэга <application> – используется системными приложениями.
Restore needs application – определяет значение атрибута android: restoreNeedsApplication тэга <application> – используется системными приложениями.
Restore any version – определяет значение атрибута android: restoreAnyVersion тэга <application> – если true, тогда сервис Backup Manager будет восстанавливать приложение даже в том случае, если версии облачного хранилища и текущей инсталляции не совпадают, по умолчанию false.
Never encrypt – определяет значение атрибута android: neverEncrypt тэга <application> – если true, тогда приложение отказывается от защиты хранения своих данных.
Large heap – определяет значение атрибута android: largeHeap тэга <application> – если true, тогда приложению может понадобиться расширение размера кучи.
Cant save state – определяет значение атрибута android: cantSaveState тэга <application> – если true, тогда приложение является ресурсоемким и отказывается участвовать в сохранении-восстановлении Android-системой своего состояния. При таком работающем приложении, если пользователь пытается загрузить другое приложение, он запрашивается на выход из первого приложения.
Ui options – определяет значение атрибута android: uiOptions тэга <application>, указывающее дополнительные опции GUI-интерфейса Activity-компонентов приложения с помощью двух значений: none (по умолчанию, нет дополнительных опций) и splitActionBarWhenNarrow (добавляет панель ActionBar, разделенную на секцию навигации и панель действий).