• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Манифест приложения
2@jd:body
3
4<div id="qv-wrapper">
5<div id="qv">
6
7<h2>Содержание документа</h2>
8<ol>
9<li><a href="#filestruct">Структура файла манифеста</a></li>
10<li><a href="#filec">Соглашения о компонентах файла</a>
11<li><a href="#filef">Отображение функций в файле</a>
12	<ol>
13	<li><a href="#ifs">Фильтры объектов Intent</a></li>
14	<li><a href="#iconlabel">Значки и метки</a></li>
15	<li><a href="#perms">Разрешения</a></li>
16	<li><a href="#libs">Библиотеки</a></li>
17	</ol></li>
18</ol>
19</div>
20</div>
21
22<p>
23  В корневой папке каждого приложения должен находиться файл AndroidManifest.xml (который именно так и называется
24). <span itemprop="description">Файл манифеста
25 содержит важную информацию о приложении, которая требуется системе Android.
26 Только получив эту информацию, система может выполнить какой-либо код
27 приложения.</span> Среди прочего файл манифеста выполняет следующие действия:
28</p>
29
30<ul>
31<li>Он задает имя пакета Java для приложения.
32Это имя пакета служит уникальным идентификатором приложения.</li>
33
34<li>Он описывает компоненты приложения &mdash; операции,
35службы, приемники широковещательных сообщений и поставщиков контента, из которых состоит
36приложение.  Он содержит имена классов, которые реализуют каждый компонент, и
37публикует их возможности (указывает, например, какие сообщения {@link android.content.Intent
38Intent} они могут принимать).  На основании этих деклараций система Android
39может определить, из каких компонентов состоит приложение и при каких условиях их можно запускать.</li>
40
41<li>Он определяет, в каких процессах будут размещаться компоненты приложения.</li>
42
43<li>Он объявляет, какие разрешения должны быть выданы приложению, чтобы оно могло получить
44доступ к защищенным частям API-интерфейса и взаимодействовать с другими приложениями.</li>
45
46<li>Он также объявляет разрешения, требуемые для
47взаимодействия с компонентами данного приложения.</li>
48
49<li>Он содержит список классов {@link android.app.Instrumentation}, которые при выполнении приложения предоставляют
50сведения о профиле и прочую информацию.  Эти объявления
51присутствуют в файле манифеста только во время разработки и отладки
52приложения и удаляются перед его публикацией.</li>
53
54<li>Он объявляет минимальный уровень API-интерфейса Android, который требуется
55приложению.</li>
56
57<li>Он содержит список библиотек, с которыми должно быть связано приложение.</li>
58</ul>
59
60
61<h2 id="filestruct">Структура файла манифеста</h2>
62
63<p>
64Приведенная далее схема позволяет ознакомиться с общей структурой файла манифеста и
65всеми элементами, которые могут в нем содержаться.  Каждый элемент вместе со всеми своими
66атрибутами, полностью описывается в отдельном файле.  Для просмотра подробных
67сведений о любом элементе, щелкните имя элемента на схеме,
68в алфавитном списке элементов, приведенном после схемы, или
69в любом другом месте, где этот элемент упоминается.
70</p>
71
72<pre>
73&lt;?xml version="1.0" encoding="utf-8"?&gt;
74
75<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
76
77    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
78    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
79    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
80    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
81    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
82    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
83    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
84    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
85    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
86    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
87    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
88
89    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
90
91        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
92            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
93                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
94                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
95                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
96            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
97            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
98        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
99
100        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
101            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
102            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
103        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
104
105        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
106            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
107            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
108        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
109
110        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
111            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
112            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
113        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
114
115        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
116            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
117            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
118            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
119        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
120
121        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
122
123    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
124
125<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
126</pre>
127
128<p>
129Далее приведен список всех элементов, расположенных в алфавитном порядке, которые могут
130присутствовать в файле манифеста.  Там могут находиться только эти элементы, а никакие другие
131элементы или атрибуты добавлять нельзя.
132</p>
133
134<p style="margin-left: 2em">
135<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
136<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
137<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
138<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
139<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
140<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
141<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
142<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
143<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
144<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
145<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
146<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
147<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
148<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
149<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
150<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
151<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
152<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
153<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
154<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
155<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
156<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
157<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
158</p>
159
160
161
162
163<h2 id="filec">Соглашения о компонентах файла</h2>
164
165<p>
166Ко всем элементам и атрибутам
167из файла манифеста применяется рад соглашений и правил:
168</p>
169
170<dl>
171<dt><b>Элементы</b></dt>
172<dd>Обязательными
173являются только элементы<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> и
174<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
175. Оба они должны присутствовать в файле манифеста, при этом указать их можно только один раз.
176Большинство других элементов можно указывать по нескольку раз или не указывать вовсе &mdash; хотя по
177крайней мере некоторые из них нужны, чтобы файл манифеста был сколько-нибудь
178информативным.
179
180<p>
181Если в элементе и есть какое-то содержимое, то это другие элементы.
182Все значения задаются с помощью атрибутов, а не как символьные данные в элементе.
183</p>
184
185<p>
186Элементы, находящиеся на одном уровне, обычно не упорядочиваются.  Например,
187 элементы <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
188<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> и
189<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
190можно указать в любой последовательности.  (Элемент
191<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
192является исключением из этого правила.  Он должен следовать за элементом
193<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
194псевдонимом которого он является.)
195</p></dd>
196
197<dt><b>Атрибуты</b></dt>
198<dd>Формально все атрибуты являются необязательными.  Однако некоторые их них
199указывать необходимо, чтобы файл мог выполнять свое предназначение.  В качестве руководства используйте эту
200документацию.  В отношении атрибутов, которые являются и вправду необязательными, в ней указывается значение,
201используемое по умолчанию, или говорится, что произойдет, если такой атрибут не будет указан.
202
203<p>За исключением некоторых атрибутов корневого элемента
204<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
205, имена всех атрибутов должны начинаться с префикса {@code android:} &mdash;
206например, {@code android:alwaysRetainTaskState}.  Поскольку этот префикс является
207универсальным, в документации при указании атрибутов по имени
208он обычно опускается.</p></dd>
209
210<dt><b>Объявление имен классов</b></dt>
211<dd>Многие элементы соответствуют объектам Java, в том числе элементы для самого
212приложения (элемент
213<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
214) и основных его компонентов &mdash; операций
215(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
216служб
217(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
218приемников широковещательных сообщений
219(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>)
220и поставщиков контента
221(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
222
223<p>
224Если вы определяете подкласс, а это практически всегда делается для классов компонентов
225({@link android.app.Activity}, {@link android.app.Service},
226{@link android.content.BroadcastReceiver} и {@link android.content.ContentProvider}),
227выполняется это с помощью атрибута {@code name}.  В состав имени должно входить
228полное обозначение пакета.
229Например, подкласс {@link android.app.Service} можно объявить следующим образом:
230</p>
231
232<pre>&lt;manifest . . . &gt;
233    &lt;application . . . &gt;
234        &lt;service android:name="com.example.project.SecretService" . . . &gt;
235            . . .
236        &lt;/service&gt;
237        . . .
238    &lt;/application&gt;
239&lt;/manifest&gt;</pre>
240
241<p>
242Однако его можно укоротить. Если первым символом в строке указать точку, эта
243строка будет добавляться к имени пакета приложения (указанного атрибутом
244<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
245элемента
246<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
247).  Следующее назначение является таким же, как приведенное выше:
248</p>
249
250<pre>&lt;manifest package="com.example.project" . . . &gt;
251    &lt;application . . . &gt;
252        &lt;service android:name=".SecretService" . . . &gt;
253            . . .
254        &lt;/service&gt;
255        . . .
256    &lt;/application&gt;
257&lt;/manifest&gt;</pre>
258
259<p>
260При запуске компонента Android создает экземпляр подкласса, указанного по имени.
261Если подкласс не указан, система создает экземпляр базового класса.
262</p></dd>
263
264<dt><b>Несколько значений</b></dt>
265<dd>Если можно указать несколько значений, элемент почти всегда
266приводится повторно. Делается это вместо перечисления нескольких значений в одном элементе.
267Например, в фильтре Intent может быть перечислено несколько действий:
268
269<pre>&lt;intent-filter . . . &gt;
270    &lt;action android:name="android.intent.action.EDIT" /&gt;
271    &lt;action android:name="android.intent.action.INSERT" /&gt;
272    &lt;action android:name="android.intent.action.DELETE" /&gt;
273    . . .
274&lt;/intent-filter&gt;</pre></dd>
275
276<dt><b>Значения ресурсов</b></dt>
277<dd>Значения некоторых атрибутов могут отображаться на экране &mdash; например,
278метка и значок операции.  Значения этих атрибутов
279следует локализовать, поэтому они должны задаваться в ресурсе или теме.  Значения
280ресурсов выражаются в следующем формате:</p>
281
282<p style="margin-left: 2em">{@code @[<i>пакет</i>:]<i>тип</i>:<i>имя</i>}</p>
283
284<p>
285где <i>имя пакета</i> можно опустить, если ресурс находится в одном пакете
286с приложением, <i>тип —</i> это тип ресурса, &mdash; например "string" или
287"drawable", &mdash; а <i>имя —</i> это имя, определяющее ресурс.
288Например:
289</p>
290
291<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
292
293<p>
294Значения из темы выражаются схожим образом, только в начале у них идет "{@code ?}",
295а не "{@code @}":
296</p>
297
298<p style="margin-left: 2em">{@code ?[<i>пакет</i>:]<i>тип</i>:<i>имя</i>}
299</p></dd>
300
301<dt><b>Строковые значения</b></dt>
302<dd>Когда значением атрибута является строка, следует использовать двойную обратную косую черту ("{@code \\}")
303для выделения управляющей последовательности символов, &mdash; например "{@code \\n}" для
304новой строки или "{@code \\uxxxx}" для символа Юникода.</dd>
305</dl>
306
307
308<h2 id="filef">Отображение функций в файле</h2>
309
310<p>
311В следующих разделах описано, как некоторые функции Android отображаются
312в файле манифеста.
313</p>
314
315
316<h3 id="ifs">Фильтры объектов Intent</h3>
317
318<p>
319Базовые компоненты приложения (его операции, службы и
320приемники широковещательных сообщений) активируются <i>объектами Intent</i>.  Intent —
321это совокупность информации (объект {@link android.content.Intent}), описывающей
322требуемое действие, &mdash; в том числе в ней указаны данные, с которыми следует выполнить это действие, категория
323компонентов, которые должны выполнять это действие, и другие уместные инструкции.
324Система Android находит компонент, который отреагирует на объект Intent, запускает
325новый экземпляр компонента, если он требуется, и передает ему
326объект Intent.
327</p>
328
329<p>
330Компоненты объявляют свои возможности &mdash; виды объектов Intent, на которые они могут
331реагировать, &mdash; с помощью <i>фильтров Intent</i>.  Поскольку система Android
332должна узнать, какие объекты Intent может обрабатывать тот или иной компонент, до того как она его запустит,
333фильтры Intent указываются в файле манифеста как
334элементы <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
335.  Компонент может иметь любое количество фильтров, каждый из которых описывает
336отдельную возможность компонента.
337</p>
338
339<p>
340Объект Intent, в котором целевой компонент явно указан по имени, активирует этот компонент,
341и фильтр при этом не учитывается.  Но объект Intent, в котором имя целевого
342компонента не указано, может активировать компонент, только если он может пройти через один из фильтров
343компонента.
344</p>
345
346<p>
347Сведения о том, каким образом объекты Intent проверяются по фильтрам Intent,
348см. в отдельном документе
349<a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent
350и фильтры объектов Intent</a>.
351</p>
352
353
354<h3 id="iconlabel">Значки и метки</h3>
355
356<p>
357У ряда элементов есть атрибуты {@code icon} и {@code label} для
358небольшого значка и текстовой метки, которые могут отображаться на экране.  У некоторых из них также есть атрибут
359{@code description} для более длинного описательного текста, который также может
360отображаться на экране.  Например, элемент
361<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
362имеет все три таких атрибута, поэтому, когда пользователю задается вопрос, предоставить ли
363разрешение запросившему его приложению, на экране может отображаться значок,
364представляющий разрешение, имя разрешения и описание того, что оно
365за собой влечет.
366</p>
367
368<p>
369В любом случае значок и метка, заданные в элементе-контейнере, становятся параметрами
370{@code icon} и {@code label}, используемыми по умолчанию для всех вложенных в этот контейнер дочерних элементов.
371Так, значок и метка, заданные в элементе
372<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>,
373являются значком и меткой, используемыми по умолчанию для каждого компонента приложения.
374Точно так же, значок и метка, заданные для компонента, &mdash; например элемента
375<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, &mdash;
376являются параметрами, используемыми по умолчанию для каждого элемента
377<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
378 компонента.  Если в элементе
379<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
380задана метка, а в операции и ее фильтре Intent — нет,
381метка приложения будет считаться меткой и для операции, и для
382фильтра Intent.
383</p>
384
385<p>
386Значок и метка, заданные для фильтра Intent, используются для обозначения компонента,
387когда он представляется пользователю, для указания функции,
388которую анонсирует фильтр.  Например, фильтр с параметрами
389"{@code android.intent.action.MAIN}" и
390"{@code android.intent.category.LAUNCHER}" сообщает, что эта операция
391инициирует приложение, &mdash; то есть он обозначает ее как
392 операцию, которая должна быть отображена в средстве запуска приложений.  Отсюда следует, что значок и метка,
393заданные в фильтре, отображаются в средстве запуска.
394</p>
395
396
397<h3 id="perms">Разрешения</h3>
398
399<p>
400Разрешение <i>представляет</i> собой ограничение на доступ к части кода
401или к данным, имеющимся на устройстве.   Это ограничение накладывается для защиты важных
402данных и кода, ненадлежащее использование которых может пагубно сказаться на работе приложения.
403</p>
404
405<p>
406Каждое разрешение обозначается уникальной меткой.  Зачастую метка обозначает
407действие, выполнение которого ограничивается.  Например, вот некоторые разрешения, определенные
408системой Android:
409</p>
410
411<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
412<br/>{@code android.permission.READ_OWNER_DATA}
413<br/>{@code android.permission.SET_WALLPAPER}
414<br/>{@code android.permission.DEVICE_POWER}</p>
415
416<p>
417Функцию можно защитить не более чем одним разрешением.
418</p>
419
420<p>
421Если приложению требуется доступ к функции, защищенной разрешением,
422оно должно объявить, что ему необходимо это разрешение, с помощью элемента
423<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
424в файле манифеста.  Затем, когда приложение устанавливается на
425устройство, установщик определяет, выдать ли запрошенное
426разрешение, проверяя полномочия органов, подписавших сертификаты
427приложения, а также, в некоторых случаях, спрашивая об этом пользователя.
428Если разрешение предоставляется, приложение сможет использовать защищенные
429функции.  В противном случае его попытки доступа к этим функциям будут безуспешными,
430причем пользователь не получит никакого уведомления об этом.
431</p>
432
433<p>
434Приложение также может защищать с помощью разрешений собственные компоненты (операции, службы,
435приемники широковещательных сообщений и поставщиков контента).  Оно может использовать
436любые разрешения, определенные системой Android (они приведены в объекте
437{@link android.Manifest.permission android.Manifest.permission}) или объявленные
438другими приложениями.  Либо оно может определить разрешения самостоятельно.  Новое разрешение объявляется
439с помощью элемента
440<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
441.  Например, операцию можно защитить следующим образом:
442</p>
443
444<pre>
445&lt;manifest . . . &gt;
446    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
447    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
448    . . .
449    &lt;application . . .&gt;
450        &lt;activity android:name="com.example.project.FreneticActivity"
451                  android:permission="com.example.project.DEBIT_ACCT"
452                  . . . &gt;
453            . . .
454        &lt;/activity&gt;
455    &lt;/application&gt;
456&lt;/manifest&gt;
457</pre>
458
459<p>
460Обратите внимание, что в этом примере разрешение {@code DEBIT_ACCT} не только
461объявляется с помощью элемента
462<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
463, его использование также запрашивается с помощью элемента
464<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
465.  Чтобы другие компоненты приложения запускали защищенную
466операцию, ее использование должно быть запрошено, даже несмотря на то, что защита
467наложена самим приложением.
468</p>
469
470<p>
471В этом же примере: если атрибут {@code permission} был бы задан как
472разрешение, объявленное где-то еще
473(например, {@code android.permission.CALL_EMERGENCY_NUMBERS}), его бы не
474нужно было объявлять еще раз с помощью элемента
475<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
476.  Однако все равно нужно было бы запрашивать его использование с помощью
477<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
478</p>
479
480<p>
481Элемент
482<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
483объявляет пространство имен для группы разрешений, которые будут определены в
484коде.  А элемент
485<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
486определяет метку для набора разрешений (как для разрешений, объявленных в файле манифеста с помощью элементов
487<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
488, так и для объявленных где-то еще).  Это влияет только на то, каким образом разрешения
489группируются, когда отображаются пользователю.  Элемент
490<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
491не указывает, какие разрешения относятся к группе.
492Он просто дает группе имя.  Чтобы включить разрешение в группу,
493атрибуту
494<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
495 его элемента
496<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
497необходимо присвоить имя группы.
498</p>
499
500
501<h3 id="libs">Библиотеки</h3>
502
503<p>
504Каждое приложение связывается с используемой по умолчанию библиотекой Android, в которой
505имеются базовые пакеты для построения приложений (со стандартными классами,
506например Activity, Service, Intent, View, Button, Application, ContentProvider
507и так далее).
508</p>
509
510<p>
511Однако некоторые пакеты находятся в собственных библиотеках.  Если ваше приложение
512использует код из одного из таких пакетов, оно должно в явном виде потребовать, чтобы его связали
513с этим пакетом.  Файл манифеста должен содержать отдельный элемент
514<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
515для указания имени каждой библиотеки.  (Имя библиотеки можно найти в
516документации по пакету.)
517</p>
518