• 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">인텐트 필터</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">매니페스트 파일은
25Android 시스템에 대한 여러분의 앱 관련 필수 정보를 나타냅니다.
26즉 앱의 코드를 실행하기 전에 시스템이 반드시 필요로 하는 정보를
27말합니다.</span> 매니페스트가 하는 일에는 여러 가지가 있지만, 그 중에서 몇 가지만 소개하면 다음과 같습니다.
28</p>
29
30<ul>
31<li>애플리케이션에 대한 Java 패키지의 이름을 나타냅니다.
32패키지 이름이 애플리케이션에 대한 고유한 식별자 역할을 합니다.</li>
33
34<li>애플리케이션의 구성 요소를 설명합니다. 액티비티,
35서비스, 브로드캐스트 수신기 및 콘텐츠 제공자 등 애플리케이션을 이루는 여러 항목을
36말합니다.  이것은 각 구성 요소를 구현하는 클래스의 이름을 나타내고
37각각의 기능을 게시합니다(예를 들어 처리할 수 있는 {@link android.content.Intent
38Intent} 메시지 종류 등).  이러한 선언을 통해 Android 시스템이 여러 구성 요소가
39각각 무엇인지 알게 되고, 어떤 조건에서 시작해야 하는지 알 수 있습니다.</li>
40
41<li>어느 프로세스가 애플리케이션 구성 요소를 호스팅할 것인지 결정합니다.</li>
42
43<li>API의 보호된 부분에 액세스하여 다른 애플리케이션과 상호 작용하려면
44애플리케이션에 어느 권한이 꼭 필요한지 선언합니다.</li>
45
46<li>또한, 이 애플리케이션의 구성 요소와 상호 작용하려면 다른 애플리케이션이
47반드시 가지고 있어야 하는 권한도 선언합니다.</li>
48
49<li>이는 애플리케이션이 실행 중일 때 프로파일링과 기타 정보를 제공하는
50{@link android.app.Instrumentation} 클래스를 목록으로 표시합니다.  이러한 선언이 매니페스트에 나타나는 것은
51애플리케이션이 개발 중이고 테스트되는 단계에만 국한됩니다.
52이들은 애플리케이션이 게시되기 전에 제거됩니다.</li>
53
54<li>이는 애플리케이션이 필요로 하는 Android API의 최소 레벨을
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나머지는 대부분 여러 번 발생할 수 있거나 전혀 발생하지 않기도 합니다. 다만,
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:alwaysRetainTaskState} 접두사로 시작합니다.
206예를 들어, {@code android:}와 같습니다.  이 접두사는 범용이기 때문에
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요소), 그것의 주 구성 요소도 포함됩니다. 즉, 액티비티
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">&lt;manifest&gt;</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>
260Android는 구성 요소를 시작할 때 이름이 명명된 하위 클래스의 인스턴스를 생성합니다.
261하위 클래스가 지정되지 않은 경우, 기본 클래스의 인스턴스를 생성합니다.
262</p></dd>
263
264<dt><b>여러 개의 값</b></dt>
265<dd>하나 이상의 값을 지정할 수 있는 경우, 해당 요소는
266한 요소 안에 여러 개의 값을 목록으로 표시하기보다 거의 항상 반복됩니다.
267예를 들어 한 인텐트 필터가 여러 개의 작업을 목록으로 표시할 수 있습니다.
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>몇몇 속성에는 사용자에게 표시될 수 있는 값이 있습니다. 예를 들어
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> 은 "문자열" 또는 "그릴 수 있음" 같은 리소스 유형입니다. 그리고
287 <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문자 이스케이프를 수행해야 합니다. 예를 들어 줄바꿈에는 {@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">인텐트 필터</h3>
317
318<p>
319애플리케이션의 핵심 구성 요소(액티비티, 서비스 및 브로드캐스트
320수신기)를 활성화하는 것은 <i>인텐트</i>입니다.  인텐트는
321원하는 작업을 설명하는 정보 묶음입니다({@link android.content.Intent} 객체).
322여기에는 작업을 수행할 데이터, 작업을 수행할 구성 요소의 카테고리와
323기타 관련 지침 등이 포함됩니다.
324Android는 인텐트에 응답할 적절한 구성 요소를 찾아 필요한 경우 구성 요소의
325새 인스턴스를 시작하고, 이것을 인텐트 객체에
326전달합니다.
327</p>
328
329<p>
330구성 요소는 자신의 능력을 알립니다. 즉, 자신이 응답할 수 있는
331인텐트 종류를 밝힙니다. 이때 사용하는 것이 <i>인텐트 필터</i>입니다.  Android 시스템은
332구성 요소를 시작하기 전에 해당 구성 요소가 처리할 수 있는 인텐트에 대해 학습해야 하기 때문에,
333인텐트 필터는 매니페스트 파일에
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대상 구성 요소를 명시적으로 지명하는 인텐트가 해당 구성 요소를 활성화합니다.
341필터는 아무런 역할을 하지 않습니다.  하지만 대상을 이름으로 지정하지 않는 인텐트의 경우에는
342자신이 구성 요소의 필터 중 하나를 통과할 수 있을 때에만 해당 구성 요소를 활성화할 수
343있습니다.
344</p>
345
346<p>
347인텐트 객체를 인텐트 필터에 대해 테스트하는 방법에 대한 자세한 방법은
348별도의 문서인
349<a href="{@docRoot}guide/components/intents-filters.html">인텐트
350및 인텐트 필터</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>
376요소 &mdash; 각 구성 요소의
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요소가 레이블을 설정하지만 액티비티와 그 인텐트 필터는 이를 설정하지 않는 경우,
381애플리케이션 레이블을 액티비티와 인텐트 필터 양쪽 모두의 레이블인 것으로
382취급합니다.
383</p>
384
385<p>
386인텐트 필터에 대해 설정된 아이콘과 레이블은 구성 요소가 사용자에게
387표시될 때마다 구성 요소를 나타내는 데 사용되며, 이는 필터가 알린 기능을
388충족하는 것입니다.  예를 들어
389"{@code android.intent.action.MAIN}" 및
390"{@code android.intent.category.LAUNCHER}"가 설정된 필터는
391액티비티를 애플리케이션을 초기화하는 주역으로 알립니다. 다시 말해,
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나타내는 경우가 잦습니다.  예를 들어 다음은 Android가 정의하는 몇 가지 권한을 나타낸
408것입니다.
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브로드캐스트 수신기 및 콘텐츠 제공자) 보호할 수도 있습니다.  Android가 정의한
436권한이라면 어떤 것이든 사용할 수 있고(
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">&lt;permission&gt;</a></code>
495요소의
496<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
497속성에 할당하면 됩니다.
498</p>
499
500
501<h3 id="libs">라이브러리</h3>
502
503<p>
504모든 애플리케이션은 기본 Android 라이브러리에 연결되어 있습니다. 여기에는
505애플리케이션 구축을 위한 기본적인 패키지(액티비티, 서비스,
506인텐트, 보기, 버튼, 애플리케이션, 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