Главная » Разработка для Android » КОНФИГУРИРОВАНИЕ ФАЙЛА МАНИФЕСТА ANDROID

0

Вопросы, рассматриваемые в этом часе:

•                                    структура файла манифеста Android;

•                                    конфигурирование основных настроек приложения;

•                                    определение деятельности;

•                                    управление правами приложения;

•                                    управление другими настройками приложения.

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

ИССЛЕДОВАНИЕ ФАЙЛА МАНИФЕСТА ANDROID

Файл манифеста Android — AndroidManifest.xml — один из важнейших файлов любого проекта Android. В системе Android этот файл служит для нескольких целей:

•                                    установки и обновления пакетов приложений;

•                                    предоставления информации о приложении пользователю;

•                                    запуска деятельностей приложения;

•                                    управления правами приложения;

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

ЗНАЕТЕ ЛИ ВЫ, ЧТО… ________________________________________________________

Если вы пользуйтесь Eclipse с плагином ADT, то мастер проектов Android автоматиче­ски создавать готовый файл AndroidManifest.xml со значениями по умолчанию для наиболее важных настроек конфигурации.

Вы можете редактирован, файл манифеста Android и редакторе ресурсов Eclipse или в любом другом текстовом редакторе.

Редактор ресурсов Eclipse распределяет данные файла манифеста по нескольким категориям, представленным на пяти вкладках:

•            Manifest (Манифест);

•            Application (Приложение);

•            Permissions (Права);

•            Instrumentation (Инструментарий);

•            AndroidManifest.xml.

Вкладка Manifest (Манифест)

На вкладке Manifest (Манифест) (см. рис. 5.1) содержатся настройки всего пакета, включая имя пакета, информацию о версии приложения и минимально допустимой версии Android SDK. Здесь вы можете также задать аппаратные требования.

Рис. 5.1. Вкладка Manifest (Манифест) в редакторе Eclipse

Вкладка Application (Приложение)

На вкладках Application (Приложение) (см. рис. 5.2) содержатся настройки всего приложе­ния, включая метку приложения и значок, а также информацию о компонентах приложения, таких как деятельности, интент-фильтры, и другой функциональности приложения, включая конфигурацию провайдера услуг и контент-провайдера.

Рис. 5.2. Вкладка Application (Приложение) в редакторе ресурсов Eclipse

Вкладка Permissions (Права)

На вкладке Permissions (Права) (см. рис. 5.3) описаны права, предоставляемые приложению. Здесь могут быть также указаны специальные права, которые требуются приложению для работы.

Рис. 5.3. Вкладка Permissions (Права) в редакторе Eclipse

ВНИМАНИЕ! ___________________________________________________________

Не путайте раскрывающийся список Permission (Права! вкладки Application -Прило­жение) с возможностями вкладки Permissions (Права). На вкладке Permissions (Права) указываются права, требуемые приложению для доступа к необходимым ресурсам или API. В раскрывающемся списке Permission (Права) определяются права, требуемые другими приложениями для доступа к открытым ресурсам и АР! вашего приложения.

Вкладка Instrumentation (Инструментарий)

На вкладке Instrumentation (Инструментарий) (см. рис. 5.4) указываются классы инструментария для мониторинга за приложением. В поле Name (Имя) вводится полное имя класса подкласса instrumentation вашего приложения, а в поле Target Package (Целевой пакет) вы указываете имя пакета, файл которого содержит <application> для контролируемого приложения. Более подробно об инструментарии и тестировании мы поговорим в следующем часе.

Рис. 5.4. Вкладка Instrumentation (Инструментарий) в редакторе Eclipse

Рис. 5.5. Вкладка AndroidManifest.xml редактора ресурсов Eclipse

На рис. 5.5 приведен код файла манифеста проекта Droidl, созданного вами в первом часе. Пока этот XML-код довольно прост.

Обратите внимание на то, что в файле содержится единственный тег <manifest>, в котором содержатся настройки для всего пакета. В этом теге содержится другой тег — <application>, который служит для идентификации приложения, с единственной дея­тельностью DroidActivity и интент-фильтром. Кроме этого здесь присутствует тег <uses-sdk>, который содержит три атрибута версий.

Теперь давайте поговорим о каждой из этих настроек более детально.

КОНФИГУРИРОВАНИЕ ОСНОВНЫХ НАСТРОЕК ПРИЛОЖЕНИЯ

Большинство самых важных настроек приложения задаются атрибутами и дочерними тегами блоков <manifest> и <application>.

Пакет определяется в теге <manifest> файла манифеста Android с помощью атрибута package, например:

<manifest

Вкладка AndroidManifest.xml

Файл манифеста Android представляет собой XML-файл. Вы можете редактировать код XML вручную на вкладке AndroidManifest.xml редактора ресурсов (см. рис. 5.5).

xmlns:android="http://schemas.android.com/apk/res/android" package="com.androidbook.droidl" android:versionCode="1" android:versionName="1.0">

КСТАТИ ________________________________________________________________

Если для создания проектов вы пользуйтесь мастером проектов Android, то вы должны указывать имя пакета. Это имя будет использоваться в файле манифеста Android по умолчанию.

Подключение вспомогательных библиотек

С помощью тега <uses-library> приложения могут взаимодействовать с другими библиотеками в дополнение к стандартным пакетам Android. Эта возможность доступна на вкладке Application (Приложение) редактора ресурсов. Например:

<uses-library

android:name="com.company.sharedutilities" />

Управление версиями приложений

Информация о версии манифеста используется в двух случаях:

•               для организации и отслеживания возможностей приложения;

•              управления обновлениями приложения.

По этой причине у тега <manifest> есть два отдельных атрибута версии: имя версии и код версии.

ОПРЕДЕЛЕНИЕ ИМЕНИ ВЕРСИИ

Имя версии представляет собой информацию о версии, используемой для отслеживания сборок приложения. Продуманное управление версиями очень важно для публикации приложения и последующей поддержки. Атрибут android:versionName тега <manifest> хранит строковое значение для отслеживания номера сборки приложения. Например, проекту Droid 1 присвоено имя версии 1.0. Формат имени версии определяется разработчиком. Учтите, что это поле могут видеть пользователи.

УСТАНОВКА КОДА ВЕРСИИ

Код версии позволяет платформе Android программно обновлять приложения. Значение атрибута android:versionCode тега <manifest> может быть целое число, используемое платформой Android и рынками распространения для управления обновлением приложения. Значение атрибута android:versionCode обычно начинается с 1. Это значение должно постепенно увеличиваться с каждой новой версией приложения, готовой для опубликования. Поле кода версии невидимо для пользователей и не должно синхронизироваться с именем версии.

КСТАТИ _______________________________________________________________

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

Установка минимальной версии Android SDK

Приложения Android могут быть скомпилированы для совместимости с несколькими раз­личными версиями SDK. В теге <uses-sdk> указывается минимально допустимая версия Android SDK для обеспечения нормальной работы приложения на мобильном телефоне. Атрибут android:minSdkVersion этого тега представляет минимально допустимую версию SDK в виде целого числа. В табл. 5.1 представлен список доступных версий.

Таблица 5.1

Доступные версии Android SDK

Версия Android sdk

Значение

Android 1.0 SDK 1

1

Android 1.1 SDK 2

2

Android 1.5 SDK 3

3

Android 1.6 SDK 4

4

Android 2.0 SDK 5

5

Android 2.0.1 SDK 6

6

Android 2.1 SDK 7

7

Например, проекте Droid1 вы уже указывали минимальную версию для Android SDK 2.1:

<uses-sdk

android:minSdkVersion="7" />

ВНИМАНИЕ! ___________________________________________________________

Номер версии для новых релизов Android SDK вы можете найти в сопроводительных комментариях. Во многих инструментах разработки этот номер часто упоминается как API Level (Уровень API), особенно в Android SDK and AVD Manager.

Именование приложения

Атрибут android:label тега <application> хранит строку, представляющую имя приложения. Вы можете определить это имя в виде фиксированной строки, как в следующем примере:

<application

android:label="My application name">

Как вариант, в атрибуте android: label вы можете укатать ссылку на строковый ресурс. В проекте Droid 1 имени приложения соответствует строковый ресурс:

<application

android:label="@string/app name">

В этом случае, имя приложения будет хранить строковый ресурс app_name в файле strings.xml.

Присвоение значка приложению

Атрибут android:icon тега <application> хранит ссылку на строковый ресурс, представляющий собой значок приложения. В проекте Droidl вы можете задать значку приложения графический ресурс следующим образом:

<application

android:icon="@drawable/icon">

ВЫПОЛНИТЕ САМОСТОЯТЕЛЬНО

Несмотря на то, что вы поместили единственную ссылку на значок в атрибуте android: icon тега <application>, вам необходимо создать три различных значка. Каждый из них предназначен для экрана с определенной плотностью распределения пикселов относительно физических размеров экрана: для экранов с низкой плотностью (1dpi). для экранов с высокой плотностью (hdpi) и экранов со средней плотностью (mdpi) (в версии Android 2.2 введено новое значение плотности — xhdpi, т.е. сверхвысокая плотность. — Прим. ред.). Система Android будет автоматически выбирать наиболее подходящее изображение исходя из характеристик устройства, на котором запущено приложение. Более подробную информацию по этой теме вы узнаете в часе 20. Сейчас вы можете просто создать одно графическое изображение и изменить его размеры для трех различных значений плотности распределения пикселей. Чтобы создать собственный значок приложения, выполните следующие шаги:

1.                     Создайте изображение размером 48 х 48 точек в любом графическом редакторе, который вам нравится. Это изображение будет значком для экранов со средней плотностью.

2.                      Сохраните изображение в формате PNG с именем myicon.png.

3.                     Добавьте этот файл в папку /res/drawable-mdpi в качестве графического ре­сурса вашего приложения.

4.                     Повторите шаги 1-3, но теперь для размера 72×72 точки и поместите получившийся файл в папку /res/drawable-hdpi. Это значок для экранов с высокой плотностью.

5.                     Повторите шаги 1-3 для размеров 36×36 точек и поместите графический файл в папку /res/drawable-ldpi. Это значок для экранов с низкой плотностью точек.

6.                      Установите значение атрибута android:icon, чтобы оно соответствовало имени ресурса вашего значка – @drawable/myicon. Система сама выберет одно из трех графических изображений, исходя из плотности размещения точек на экране мобильного телефона (или эмулятора), на котором запущено приложение.

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

Описание приложения

Значение атрибута android:description тега <application> строка, содержащая краткое описание приложения. Вы можете также указать в этом атрибуте ссылку на строковый ресурс: <application

android:label= "My application name" android:description="@string/app desc">

Система Android и электронные системы дистрибуции используют это описание для отображения информации о приложении.

Установка отладочной информации для приложения

Атрибуту android:debuggable тега <application> присваивается булево значение, которое разрешает или запрещает отладку приложения отладчиком, например Eclipse, Вы не сможете проводить отладку приложения, если значение этого атрибута не равно true. Не забудьте перед публикацией приложения присвоить этому атрибуту значение false.

Установка других атрибутов приложения

На вкладке Application (Приложение) вы можете найти еще несколько дополнительных настроек, но они применяются довольно редко. Например, если вы хотите применить к приложению вместо оформления по умолчанию какое-либо другое. Здесь есть также настройки для управления тем, как приложение будет взаимодействовать с операционной системой Android- Для большинства приложений вы можете оставить эти настройки без изменений.

На вкладке Application (Приложение) вам предстоит выполнить множество действий в разделе Application Nodes (узлы приложения), где вы можете зарегистрировать компоненты приложения каждый раз, когда вы регистрируете новую деятельность.

ОПРЕДЕЛЕНИЕ ДЕЯТЕЛЬНОСТЕЙ

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

Каждая деятельность представляет собой определенную задачу для вытю.4- нения, часто связанную с определенным экраном. Деятельность может быть запущена различными способами с помощью интентов. Каждая деятельность может иметь свою собственную метку (имя) и значок, но по умолчанию метка и значок приложению уже назначены.

Регистрация деятельностей

Вы можете регистрировать новые деятельности в разделе Application Nodes (Узлы приложения) вкладки Application (Приложение). Каждая новая деятельность обладает собственным тегом <activity> в получившемся XML- файле. Например, в следующем фрагменте кода XML происходит определение класса деятельности DroidActivity:

<activity

android:name=".DroidActivity" />

Эта деятельность должна быть определена как класс пакета приложения.

ВЫПОЛНИТЕ САМОСТОЯТЕЛЬНО

Зарегистрируйте новую деятельность в проекте Droidl, выполнив следующие шаги:

1.                     Откройте проект Droidl в Eclipse.

2.                     Щелкните правой кнопкой по пакету /com.androidbook.droidl в папке /src и в открывшемся контекстном меню выберите команду New (Новый), затем Class (Класс). Откроется диалоговое окно New Java Class (Новый класс Java).

3.                     Назовите новый класс DroidActivity 2.

4.                     Нажмите на кнопку Browse (Обзор) рядом с полем ввода Superclass (Супер­класс) и задайте суперкласс android.app.Activity.

5.                     Нажмите на кнопку Finish (Завершить). В результате в вашем проекте появится новый класс.

6.                      Сделайте копию файла макета main.xml в папке ресурсов /res/layout для соз­данной только что деятельности и назовите его second.xml. Сделайте пометку в макете, чтобы было понятно, что она предназначена для второй активности. Например, вы можете изменить отображаемый текст. Сохраните новый файл макета.

7.                                  Откроите класс DroidActivity2. Щелкните правой кнопкой по названию класса и в открывшемся контекстном меню выберите команду Source (Источник), за­тем Override/Implement Methods (Замена/Применение методов).

8.                                 Установите флажок рядом с методом onCreate(Bundle). В результате этот метод будет добавлен к вашему классу.

9.                                  Затем е коде метода onCreate () задайте разметку для загрузки новой ак­тивности путем          добавления     и          вызова                    метода setContentview (R. layout. second). Сохраните файл класса.

10.                             Откройте файл манифеста Android и щелкните по вкладке Application (Приложение) в редакторе ресурсов.

11.                             В разделе Application Nodes (Узлы приложения) вкладки Application (Приложение) нажмите на кнопку Add (Добавить) и выберите элемент Activity (Дея­тельность). Справа должен появиться раздел Atributes for Activity (Атрибуты активности).

12.                             Нажмите на кнопку Browse (Обзор) справа от поля ввода Name (Имя) активности. Выберите деятельность DroidActivity 2.

13.                              Сохраните файл манифеста. Перейдите на вкладку AndroidManifest.xml, чтобы увидеть изменения в коде XML.

Теперь у вас есть новая, полностью зарегистрированная деятельность DroidActivity2, кото­рую вы можете использовать в вашем приложении.

ВНИМАНИЕ! ___________________________________________________________

Если вы добавляете новый элемент при выделенной активности, то он будет добавлен в эту деятельность. Поэтому следите, чтобы не было выделенных деятельностей, или устанавливайте переключатель в положение Create a new element at the top level, in Application (Создать новый элемент на верхнем уровне, в приложении) вверху диало­гового окна.

Определение активности запуска

С помощью интент-фильтра вы можете определить деятельность как основную точку входа приложения. Интент-фильтр запуска деятельности по умолчанию должен быть сконфигурирован в теге <intent-filter> с типом действия MAIN и категорией LAUNCHER. В вашем проекте Droidl мастер проектов Android установил деятельность DroidActivity как основную точку запуска приложения:

<activity

android:name=".DroidActivity" android:label="@string/app name"> <intent-filter> <action

android:name="android.intent.action.MAIN" /> <category

android:name="android.intent.category.LAUNCHER" />

</intent-filter> </activity>

Таким образом, тег <intent-filter> покатывает системе Android что все запросы запуска приложения должны направляться деятельности DroidActivity.

УПРАВЛЕНИЕ ПРАВАМИ ПРИЛОЖЕНИЯ

Платформа Android основывается на ядре операционной системы Linux, известной своей встроенной системой безопасности, ставшей частью модели безопасности Android. Каждое приложение Android существует в собственной виртуальной машине и работает в собственной учетной записи пользователя Linux (см. рис. 5.6).

Рис. 5.6. Архитектура платформы Android в упрощенном виде с точки зрения

безопасности

Для приложений, требующих доступа к совместно используемых или привилегированным ресурсам на мобильном телефоне, должны быть объявлены определенные права в файле манифеста Android. Такой принцип обеспечения безопасности гарантирует, что никакие приложение не может изменить свое поведение во время выполнения или выполнить какие-либо операции без разрешении пользователем.

КСТАТИ ________________________________________________________________

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

Приложения Android могут получить доступ к собственным файлам и базам данных без наличия специальных прав. Однако, если приложению необходимо полнить доступ к совместно используемым или особым ресурсам, права, разрешающие такие действия, должны быть указаны в теге <uses- permission> файла манифеста Android. Управлять правами вы можете на вкладке Permissions (Права) в редакторе ресурсов файла манифеста Android.

ВЫПОЛНИТЕ САМОСТОЯТЕЛЬНО

Чтобы предоставить вашему приложению право доступа ко встроенной камере,

выполните следующие шаги:

7.      Откройте проект Droidl в Eclipse.

8.      Откройте файл манифеста Android и перейдите на вкладку Permissions (Права) ресурса редактор.

9.      Нажмите кнопку Add (Добавить) и выберите пункт Uses Permission (Права пользова­ния). Поле ввода атрибута Name (Имя) отображается в правой стороне экрана.

10.  Введите имя android.permission. CAMERA.

11.  Сохраните файл манифеста. Переключитесь на вкладку AndroidManifest.xml, чтобы увидеть изменения в коде XML.

Таким образом, вы зарегистрировали разрешение на пользование камерой. Теперь ваше

приложение может получать доступ с соблюдением прав безопасности.

В табл. 5.2 перечислены некоторые из наиболее часто используемых прав приложениями

Android.

Таблица 5.2

Права, требуемые приложениями Android наиболее часто

Полный список прав, используемых приложениями Android, вы можете найти в документации по классу android.Manifest.permission.

ВНИМАНИЕ! ___________________________________________________________

Некоторые права еще не были реализованы в системе Android. Тем не менее приложе­ния всегда должны запрашивать права на выполнение действий для совместимости с последующими версиями системы.

КСТАТИ

Приложения могут определять и осуществлять свои собственные права. Это может быть очень важно для определенных типов приложений, таких как банковская дея­тельность и коммерческие приложения.

УПРАВЛЕНИЕ ДРУГИМИ НАСТРОЙКАМИ ПРИЛОЖЕНИЯ

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

Вы также должны объявлять здесь все используемые приложением компоненты — напри­мер, если ваша программа предоставляет доступ к каким- либо услугам, контенту или функциям приемника.

ИТОГИ

Файл манифеста Android (AndroidManifestxrnl) присутствует в корневой папке каждого проекта. Это незаменимый компонент любого проекта. В файле манифеста Android используется простая XML-схема для описания самого приложения, его компонентов и прав. Эта информация используется платформой Android для управления приложением. В Eclipse есть удобный редактор ресурсов для управления файлами манифеста Android.

ВОПРОСЫ И ОТВЕТЫ

Вопрос. Существует ли механизм локализации имени приложения для различных языков?

Ответ. Да. Для этого достаточно присвоить атрибуту android: label строковый ресурс и создать файлы ресурса для каждого языка, поддержку которого вы хотите добавить. Подробнее о локализации ресурсов мы поговорим в одном из следующих часов.

Вопрос. Зачем добавлять в файл манифеста Android права, которые не используются системой?

Ответ. Хотя ваша программа может функционировать и без объявления этих прав, их все же нужно декларировать. С выходом новой версии системы Android эти права могут потребоваться, и, если они не будут объявлены, это может привести к сбоям в работе приложения.

Вопрос. Я добавил новый класс Activity в проект, и мое приложение стало работать неста­бильно. Что я сделал не так?

Ответ. Возможно, вы забыли зарегистрировать деятельность в файле манифеста Android. В этом случае приложение может вообще не запуститься.

Вопрос. Зачем редактировать файл манифеста Android в текстовом редакторе, если можно использовать редактор ресурсов Eclipse?

Ответ. В большинстве случаев редактировать файл манифеста удобнее всего в редакторе ресурсов. Но большие изменения лучше вносить в текстовом редакторе.

Вопрос. Зачем объявлять право на чтение общедоступных ресурсов. как список контактов?

Ответ. Чтобы обеспечить защиту конфиденциальных данных пользователя, приложения всегда должны регистрировать право на чтение уязвимых данные. Несмотря на то, что приложение не может причинить вред системе Android чтением данных, информация, хранящаяся в списке контактов или органайзере, теоретически может использоваться в преступных целях. Поэтому приложение должно в явном виде получить право доступа к подобного рода информации.

ПРАКТИКУМ Контрольные вопросы

1.                                 Каждое приложение Android должно иметь собственный файл манифеста. Правда ли это?

2.                                 Номер в значении атрибута android:versionCode должен соответ­ствовать имени версии приложения, хранящемуся в атрибуте android: versionName. Правда ли это?

3.                                 Какое из приведенных ниже выражений служит для предоставления доступа к использованию видеокамеры?

A.             android.permission.USE_CAMERA.

B.             android.permission.CAMERA.

C.             android.permission.hardware.CAMERA.

4.                   Перед установкой приложения пользователь может видеть все права,

объявленные в файле манифеста Android. Правда ли это?

Ответы

1.      Правда. Файл манифеста Android — неотъемлемая часть каждого проекта Android. Этот файл определяет идентичность приложения, его настройки и права.

2.      Нет, это не так. Версия приложения, хранящаяся в атрибуте android:versionCode, должна повышаться при каждом внесении изменений в приложение, она может обновляться. Этот номер не обязательно должен соответствовать значению атрибута android: versionName.

3.      Правильный ответ: Б. Для получения доступа к видеокамере используется выражение android.permission. CAMERA.

4.      Правда. Это делается для того, чтобы пользователь знал, какими правами обладает приложение, например создание снимков с видеокамеры или доступ к списку контактов пользователя.

Литература: Дэрси JI., Android за 24 часа. Программирование приложений под операционную систему Google/ ДэрсиЛ., КондерШ. — М.: Рид Групп, 2011. — 464 с. — (Профессиональные компьютерные книги). ISBN 978-5-4252-0318-2

По теме:

  • Комментарии