Рис. 4.2. Файл AndroidManifest.xml только созданного проекта
Рассмотрим подробно файл манифеста.
Первый обязательный элемент является корневым элементом файла, должен содержать обязательный элемент и все остальные элементы по необходимости. Рассмотрим основные атрибуты этого элемента:
xmlns:android
- определяет пространство имен Android, всегда должен иметь значение: "http://schemas.android.com/apk/res/android". Обязательный атрибут.
package
- полное имя пакета, в котором располагается приложение. Обязательный атрибут. Имя должно быть уникальным, может содержать заглавные и строчные латинские буквы, числа и символ подчеркивания. Однако начинаться должно только с буквы. Для избежания конфликтов с другими разработчиками рекомендуется использовать имя вашего сайта (если он есть) записанное в обратном порядке. В нашем случае пакет имеет имя "com.example.projectn" и наше приложение не удастся разместить в Google Play (но мы на это и не претендуем). Внимание: если Вы опубликовали свое приложение, Вы не можете менять имя пакета, т.к. имя пакета служит уникальным идентификатором для приложения и в случае его смены приложение будет рассматриваться, как совсем другое и пользователи предыдущей версии не смогут его обновить.
android:versionCode
- внутренний номер версии приложения не виден пользователю. Этот номер используется только для определения является ли одна версия более современной по сравнению с другой, больший номер показывает более позднюю версию.
android:versionNumber
- номер версии, является строкой и используется только для того, чтобы показать пользователю номер версии приложения.
- эти атрибуты в нашем файле манифеста не представлены, про их назначение можно почитать по ссылке: http://developer.android.com/guide/topics/manifest/manifest-element.html.
Рассмотрим элемент , который показывает совместимость приложения с версиями Android. Основные атрибуты:
android:minSdkVersion
- указывает значение минимального уровня API, необходимого для работы приложения. Система Android не позволит установить приложение, если уровень API ниже, чем уровень, указанный в этом атрибуте. Внимание: если этот атрибут не указан, система установит значение по умолчанию равным "1", которое означает, что приложение совместимо со всеми версиями Android. И в случае, если приложение не совместимо со всеми версиями, установка пройдет на любую версию Android, а во время работы приложение сломается, когда попытается обратиться к недоступным элементам API. Поэтому необходимо всегда указывать значение этого атрибута.
android:targetSdkVersion
- указывает уровень API целевой платформы Android приложения, если этот атрибут пропущен, по умолчанию принимается значение android:minSdkVersion.
android:maxSdkVersion
- указывает максимальное значение уровня API, под который разрабатывалось приложение. Если значение этого атрибута ниже, чем уровень API соответствующий версии Android, на которую устанавливается приложение, то система не позволит установить такое приложение.
Если внимательно посмотреть на файл манифеста рис. 4.2, можно заметить, что данный атрибут в нем отсутствует. На самом деле разработчикам не рекомендуются задавать значение этого атрибута. Во-первых, это значение будет препятствовать использованию приложений на новых версиях Android при их появлении, несмотря на то, что все новые версии полностью обратно-совместимы. Во-вторых, стоит иметь ввиду, что задание этого атрибута может привести к тому, что приложение будет удалено с устройства после обновления Android до более высокого уровня API.
Подробнее с элементом и его атрибутами можно ознакомиться по ссылке: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html.
Рассмотрим элемент , который является обязательным элементом манифеста, полностью определяет состав приложения. Представляет собой контейнер для элементов , , ,
(и не только), каждый из которых определяет соответствующий компонент приложения. Содержит набор атрибутов, действие которых распространяется на все компоненты приложения. Рассмотрим атрибуты элемента , представленные в манифесте на рис. 4.2:
На самом деле у элемента гораздо больше атрибутов, чем нам удалось рассмотреть, найти полный список атрибутов с описаниями можно по ссылке: http://developer.android.com/guide/topics/manifest/application-element.html.
В приложении всего одна активность, других компонентов нет, в связи с этим элемент в манифесте содержит ровно один элемент <activity> и больше никаких других элементов не содержит. Рассмотрим элемент , который определяет активность. Для каждой активности обязательно необходим свой элемент в манифесте. Рассмотрим атрибуты элемента , представленные в манифесте на рис. 4.3:
На самом деле у элемента гораздо больше атрибутов, чем нам удалось рассмотреть, найти полный список атрибутов с описаниями можно по ссылке: http://developer.android.com/guide/topics/manifest/application-element.html.
В манифесте для нашего приложения элемент содержит ровно один элемент: , определяющий типы намерений, которые может принимать активность. Этот элемент содержит два элемента: и .
Первый элемент определяет действия, которые проходят в фильтр намерений, при этом должен содержать хотя бы один элемент , в противном случае ни один объект-намерение не сможет пройти через фильтр и активность невозможно будет запустить. Элемент имеет единственный атрибут android:name="android.intent.action.MAIN".
Второй элемент определяет имя категории в фильтре намерений. Имеет единственный атрибут android:name="android.intent.category.LAUNCHER".
На этом разбор манифеста приложения закончим, подробно с описанием всех элементов этого файла можно познакомиться по ссылке: http://developer.android.com/guide/topics/manifest/manifest-intro.html.
Чаще всего, при создании приложения приходится иметь дело с папками src, res/layout и res/values, т.к. там находятся основные файлы проекта.