1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3 * Copyright (C) 2011 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16-->
17<xsd:schema
18    targetNamespace="http://schemas.android.com/sdk/android/repository/5"
19    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
20    xmlns:sdk="http://schemas.android.com/sdk/android/repository/5"
21    elementFormDefault="qualified"
22    attributeFormDefault="unqualified"
23    version="1">
24
25    <!-- The repository contains a collection of downloadable items known as
26         "packages". Each package has a type and various attributes and contains
27         a list of file "archives" that can be downloaded for specific OSes.
28
29         An Android SDK repository is a web site that contains a "repository.xml"
30         file that conforms to this XML Schema.
31
32         History:
33         - v1 is used by the SDK Updater in Tools r3 and r4.
34
35         - v2 is used by the SDK Updater in Tools r5:
36            - It introduces a new <sample> repository type. Previously samples
37              were included in the <platform> packages. Instead this package is used
38              and and the samples are installed in $SDK/samples.
39            - All repository types have a new <obsolete> node. It works as a marker
40              to indicate the package is obsolete and should not be selected by default.
41              The UI also hides these out by default.
42
43         - v3 is used by the SDK Updater in Tools r8:
44            - It introduces a new <platform-tool> repository type. Previously platform-specific
45              tools were included in the <platform> packages. Instead this package is used
46              and platform-specific tools are installed in $SDK/platform-tools
47            - There's a new element <min-platform-tools-rev> in <tool>. The tool package now
48              requires that at least some minimal version of <platform-tool> be installed.
49            - It removes the <addon> repository type, which is now in its own XML Schema.
50
51         - v4 is used by the SDK Updater in Tools r12:
52            - <extra> element now has a <project-files> element that contains 1 or
53              or more <path>, each indicating the relative path of a file that this package
54              can contribute to installed projects.
55            - <platform> element now has a mandatory <layoutlib> that indicates the API
56              and revision of that layout library for this particular platform.
57
58         - v5 is used by the SDK Updater in Tools R14:
59            - <extra> now has an <old-paths> element, a ;-separated list of old paths that
60              should be detected and migrated to the new <path> for that package.
61            - <platform> has a new optional <abi-included> that describes the ABI of the
62              system image included in the platform, if any.
63            - New <system-image> package type, to store system images outside of <platform>s.
64            - New <source> package type.
65    -->
66
67    <xsd:element name="sdk-repository" type="sdk:repositoryType" />
68
69    <xsd:complexType name="repositoryType">
70        <xsd:annotation>
71            <xsd:documentation>
72                The repository contains a collection of downloadable packages.
73            </xsd:documentation>
74        </xsd:annotation>
75        <xsd:choice minOccurs="0" maxOccurs="unbounded">
76            <xsd:element name="platform"        type="sdk:platformType"     />
77            <xsd:element name="system-image"    type="sdk:systemImageType"  />
78            <xsd:element name="source"          type="sdk:sourceType"       />
79            <xsd:element name="tool"            type="sdk:toolType"         />
80            <xsd:element name="platform-tool"   type="sdk:platformToolType" />
81            <xsd:element name="doc"             type="sdk:docType"          />
82            <xsd:element name="sample"          type="sdk:sampleType"       />
83            <xsd:element name="extra"           type="sdk:extraType"        />
84            <xsd:element name="license"         type="sdk:licenseType"      />
85        </xsd:choice>
86    </xsd:complexType>
87
88    <!-- The definition of an SDK platform package. -->
89
90    <xsd:complexType name="platformType">
91        <xsd:annotation>
92            <xsd:documentation>An SDK platform package.</xsd:documentation>
93        </xsd:annotation>
94        <xsd:all>
95            <!-- The Android platform version. It is string such as "1.0". -->
96            <xsd:element name="version"   type="xsd:normalizedString" />
97            <!-- The Android API Level for the platform. An int > 0. -->
98            <xsd:element name="api-level" type="xsd:positiveInteger"  />
99            <!-- The optional codename for this platform, if it's a preview. -->
100            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
101            <!-- The revision, an int > 0, incremented each time a new
102                 package is generated. -->
103            <xsd:element name="revision"  type="xsd:positiveInteger" />
104
105            <!-- Information on the layoutlib packaged in this platform. -->
106            <xsd:element name="layoutlib" type="sdk:layoutlibType" />
107
108            <!-- optional elements -->
109
110            <!-- The optional license of this package. If present, users will have
111                 to agree to it before downloading. -->
112            <xsd:element name="uses-license"  type="sdk:usesLicenseType" minOccurs="0" />
113            <!-- The optional description of this package. -->
114            <xsd:element name="description"   type="xsd:string"      minOccurs="0" />
115            <!-- The optional description URL of this package -->
116            <xsd:element name="desc-url"      type="xsd:token"       minOccurs="0" />
117            <!-- The optional release note for this package. -->
118            <xsd:element name="release-note"  type="xsd:string"      minOccurs="0" />
119            <!-- The optional release note URL of this package -->
120            <xsd:element name="release-url"   type="xsd:token"       minOccurs="0" />
121            <!-- A list of file archives for this package. -->
122            <xsd:element name="archives"      type="sdk:archivesType" />
123            <!-- The minimal revision of tools required by this package.
124                 Optional. If present, must be an int > 0. -->
125            <xsd:element name="min-tools-rev" type="xsd:positiveInteger" minOccurs="0" />
126
127            <!-- The ABI of the system image *included* in this platform, if any.
128                 When the field is present, it means the platform already embeds one
129                 system image. A platform can also have any number of external
130                 &lt;system-image&gt; associated with it.  -->
131            <xsd:element name="included-abi"  type="sdk:abiType" minOccurs="0" />
132
133            <!-- An optional element indicating the package is obsolete.
134                 The string content is however currently not defined and ignored. -->
135            <xsd:element name="obsolete"      type="xsd:string" minOccurs="0" />
136        </xsd:all>
137    </xsd:complexType>
138
139
140    <!-- The definition of a layout library used by a platform. -->
141
142    <xsd:complexType name="layoutlibType" >
143        <xsd:annotation>
144            <xsd:documentation>
145                Version information for a layoutlib included in a platform.
146            </xsd:documentation>
147        </xsd:annotation>
148        <xsd:all>
149            <!-- The layoutlib API level, an int > 0,
150                 incremented with each new incompatible lib. -->
151            <xsd:element name="api"          type="xsd:positiveInteger" />
152            <!-- The incremental minor revision for that API, e.g. in case of bug fixes.
153                 Optional. An int >= 0, assumed to be 0 if the element is missing. -->
154            <xsd:element name="revision"     type="xsd:nonNegativeInteger" minOccurs="0" />
155        </xsd:all>
156    </xsd:complexType>
157
158
159    <!-- The definition of a system image used by a platform. -->
160
161    <xsd:complexType name="systemImageType" >
162        <xsd:annotation>
163            <xsd:documentation>
164                System Image for a platform.
165            </xsd:documentation>
166        </xsd:annotation>
167        <xsd:all>
168            <!-- api-level + codename identifies the platform to which this system image belongs. -->
169
170            <!-- The Android API Level for the platform. An int > 0. -->
171            <xsd:element name="api-level" type="xsd:positiveInteger"  />
172            <!-- The optional codename for this platform, if it's a preview. -->
173            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
174
175            <!-- The revision, an int > 0, incremented each time a new
176                 package is generated. -->
177            <xsd:element name="revision"  type="xsd:positiveInteger" />
178
179            <!-- The ABI of the system emulated by this image. -->
180            <xsd:element name="abi"       type="sdk:abiType" />
181
182            <!-- The optional license of this package. If present, users will have
183                 to agree to it before downloading. -->
184            <xsd:element name="uses-license"  type="sdk:usesLicenseType" minOccurs="0" />
185            <!-- The optional description of this package. -->
186            <xsd:element name="description"   type="xsd:string"      minOccurs="0" />
187            <!-- The optional description URL of this package -->
188            <xsd:element name="desc-url"      type="xsd:token"       minOccurs="0" />
189            <!-- The optional release note for this package. -->
190            <xsd:element name="release-note"  type="xsd:string"      minOccurs="0" />
191            <!-- The optional release note URL of this package -->
192            <xsd:element name="release-url"   type="xsd:token"       minOccurs="0" />
193
194            <!-- A list of file archives for this package. -->
195            <xsd:element name="archives"  type="sdk:archivesType" />
196        </xsd:all>
197    </xsd:complexType>
198
199    <!-- The definition of the ABI supported by a platform's system image. -->
200
201    <xsd:simpleType name="abiType">
202        <xsd:annotation>
203            <xsd:documentation>The ABI of a platform's system image.</xsd:documentation>
204        </xsd:annotation>
205        <xsd:restriction base="xsd:token">
206            <xsd:enumeration value="armeabi"     />
207            <xsd:enumeration value="armeabi-v7a" />
208            <xsd:enumeration value="x86"         />
209        </xsd:restriction>
210    </xsd:simpleType>
211
212
213    <!-- The definition of a source package. -->
214
215    <xsd:complexType name="sourceType" >
216        <xsd:annotation>
217            <xsd:documentation>
218                Sources for a platform.
219            </xsd:documentation>
220        </xsd:annotation>
221        <xsd:all>
222            <!-- api-level + codename identifies the platform to which this source belongs. -->
223
224            <!-- The Android API Level for the platform. An int > 0. -->
225            <xsd:element name="api-level" type="xsd:positiveInteger"  />
226            <!-- The optional codename for this platform, if it's a preview. -->
227            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
228
229            <!-- The revision, an int > 0, incremented each time a new
230                 package is generated. -->
231            <xsd:element name="revision"  type="xsd:positiveInteger" />
232
233            <!-- The optional license of this package. If present, users will have
234                 to agree to it before downloading. -->
235            <xsd:element name="uses-license"  type="sdk:usesLicenseType" minOccurs="0" />
236            <!-- The optional description of this package. -->
237            <xsd:element name="description"   type="xsd:string"      minOccurs="0" />
238            <!-- The optional description URL of this package -->
239            <xsd:element name="desc-url"      type="xsd:token"       minOccurs="0" />
240            <!-- The optional release note for this package. -->
241            <xsd:element name="release-note"  type="xsd:string"      minOccurs="0" />
242            <!-- The optional release note URL of this package -->
243            <xsd:element name="release-url"   type="xsd:token"       minOccurs="0" />
244
245            <!-- A list of file archives for this package. -->
246            <xsd:element name="archives"  type="sdk:archivesType" />
247        </xsd:all>
248    </xsd:complexType>
249
250
251    <!-- The definition of an SDK tool package. -->
252
253    <xsd:complexType name="toolType" >
254        <xsd:annotation>
255            <xsd:documentation>An SDK tool package.</xsd:documentation>
256        </xsd:annotation>
257        <xsd:all>
258            <!-- The revision, an int > 0, incremented each time a new
259                 package is generated. -->
260            <xsd:element name="revision"     type="xsd:positiveInteger" />
261            <!-- The optional license of this package. If present, users will have
262                 to agree to it before downloading. -->
263            <xsd:element name="uses-license" type="sdk:usesLicenseType" minOccurs="0" />
264            <!-- The optional description of this package. -->
265            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
266            <!-- The optional description URL of this package -->
267            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
268            <!-- The optional release note for this package. -->
269            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
270            <!-- The optional release note URL of this package -->
271            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
272            <!-- A list of file archives for this package. -->
273            <xsd:element name="archives"     type="sdk:archivesType" />
274            <!-- An optional element indicating the package is obsolete.
275                 The string content is however currently not defined and ignored. -->
276            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
277
278            <!-- The minimal revision of platform-tools required by this package.
279                 Mandatory. Must be an int > 0. -->
280            <xsd:element name="min-platform-tools-rev" type="xsd:positiveInteger" />
281        </xsd:all>
282    </xsd:complexType>
283
284
285    <!-- The definition of an SDK platform-tool package. -->
286
287    <xsd:complexType name="platformToolType" >
288        <xsd:annotation>
289            <xsd:documentation>An SDK platform-tool package.</xsd:documentation>
290        </xsd:annotation>
291        <xsd:all>
292            <!-- The revision, an int > 0, incremented each time a new
293                 package is generated. -->
294            <xsd:element name="revision"     type="xsd:positiveInteger" />
295            <!-- The optional license of this package. If present, users will have
296                 to agree to it before downloading. -->
297            <xsd:element name="uses-license" type="sdk:usesLicenseType" minOccurs="0" />
298            <!-- The optional description of this package. -->
299            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
300            <!-- The optional description URL of this package -->
301            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
302            <!-- The optional release note for this package. -->
303            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
304            <!-- The optional release note URL of this package -->
305            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
306            <!-- A list of file archives for this package. -->
307            <xsd:element name="archives"     type="sdk:archivesType" />
308
309            <!-- An optional element indicating the package is obsolete.
310                 The string content is however currently not defined and ignored. -->
311            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
312        </xsd:all>
313    </xsd:complexType>
314
315
316    <!-- The definition of an SDK doc package. -->
317
318    <xsd:complexType name="docType" >
319        <xsd:annotation>
320            <xsd:documentation>An SDK doc package.</xsd:documentation>
321        </xsd:annotation>
322        <xsd:all>
323            <!-- The Android API Level for the documentation. An int > 0. -->
324            <xsd:element name="api-level" type="xsd:positiveInteger"  />
325            <!-- The optional codename for this doc, if it's a preview. -->
326            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
327
328            <!-- The revision, an int > 0, incremented each time a new
329                 package is generated. -->
330            <xsd:element name="revision"     type="xsd:positiveInteger" />
331            <!-- The optional license of this package. If present, users will have
332                 to agree to it before downloading. -->
333            <xsd:element name="uses-license" type="sdk:usesLicenseType" minOccurs="0" />
334            <!-- The optional description of this package. -->
335            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
336            <!-- The optional description URL of this package -->
337            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
338            <!-- The optional release note for this package. -->
339            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
340            <!-- The optional release note URL of this package -->
341            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
342            <!-- A list of file archives for this package. -->
343            <xsd:element name="archives"     type="sdk:archivesType" />
344
345            <!-- An optional element indicating the package is obsolete.
346                 The string content is however currently not defined and ignored. -->
347            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
348        </xsd:all>
349    </xsd:complexType>
350
351
352    <!-- The definition of an SDK sample package. -->
353
354    <xsd:complexType name="sampleType" >
355        <xsd:annotation>
356            <xsd:documentation>An SDK sample package.</xsd:documentation>
357        </xsd:annotation>
358        <xsd:all>
359            <!-- The Android API Level for the documentation. An int > 0. -->
360            <xsd:element name="api-level" type="xsd:positiveInteger"  />
361            <!-- The optional codename for this doc, if it's a preview. -->
362            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
363
364            <!-- The revision, an int > 0, incremented each time a new
365                 package is generated. -->
366            <xsd:element name="revision"     type="xsd:positiveInteger" />
367            <!-- The optional license of this package. If present, users will have
368                 to agree to it before downloading. -->
369            <xsd:element name="uses-license" type="sdk:usesLicenseType" minOccurs="0" />
370            <!-- The optional description of this package. -->
371            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
372            <!-- The optional description URL of this package -->
373            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
374            <!-- The optional release note for this package. -->
375            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
376            <!-- The optional release note URL of this package -->
377            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
378            <!-- A list of file archives for this package. -->
379            <xsd:element name="archives"     type="sdk:archivesType" />
380            <!-- The minimal revision of tools required by this package.
381                 Optional. If present, must be an int > 0. -->
382            <xsd:element name="min-tools-rev" type="xsd:positiveInteger" minOccurs="0" />
383
384            <!-- An optional element indicating the package is obsolete.
385                 The string content is however currently not defined and ignored. -->
386            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
387        </xsd:all>
388    </xsd:complexType>
389
390
391    <!-- The definition of an SDK extra package. This kind of package is for
392         "free" content. Such packages are installed in SDK/vendor/path.
393
394         Important implementation detail: this element is duplicated in the
395         sdk-addon-N.xsd schema and must be kept in sync there. This is
396         simpler than trying to use some kind of of include or to request
397         that clients use a third XML schema for common parts.
398    -->
399
400    <xsd:complexType name="extraType" >
401        <xsd:annotation>
402            <xsd:documentation>
403                An SDK extra package. This kind of package is for "free" content.
404                Such packages are installed in SDK/vendor/path.
405            </xsd:documentation>
406        </xsd:annotation>
407        <xsd:all>
408
409            <!-- The install path top folder name.
410                 The segments "add-ons", "docs", "platforms", "platform-tools", "temp"
411                 and "tools" are reserved and cannot be used.
412            -->
413            <xsd:element name="vendor" type="sdk:segmentType" />
414
415            <!-- The install path sub-folder name. -->
416            <xsd:element name="path" type="sdk:segmentType" />
417
418            <!-- A semi-colon separated list of "obsolete" path names which are equivalent
419                 to the current 'path' name. When a package is seen using an old-paths' name,
420                 the package manager will try to upgrade it to the new path. -->
421            <xsd:element name="old-paths" type="sdk:segmentListType"  minOccurs="0" />
422
423            <!-- The revision, an int > 0, incremented each time a new
424                 package is generated. -->
425            <xsd:element name="revision"     type="xsd:positiveInteger" />
426
427            <!-- A list of file archives for this package. -->
428            <xsd:element name="archives"     type="sdk:archivesType" />
429
430            <!--  optional elements -->
431
432            <!-- The optional license of this package. If present, users will have
433                 to agree to it before downloading. -->
434            <xsd:element name="uses-license" type="sdk:usesLicenseType"  minOccurs="0" />
435            <!-- The optional description of this package. -->
436            <xsd:element name="description"  type="xsd:string"           minOccurs="0" />
437            <!-- The optional description URL of this package -->
438            <xsd:element name="desc-url"     type="xsd:token"            minOccurs="0" />
439            <!-- The optional release note for this package. -->
440            <xsd:element name="release-note" type="xsd:string"           minOccurs="0" />
441            <!-- The optional release note URL of this package -->
442            <xsd:element name="release-url"  type="xsd:token"            minOccurs="0" />
443            <!-- The minimal revision of tools required by this package.
444                 Optional. If present, must be an int > 0. -->
445            <xsd:element name="min-tools-rev" type="xsd:positiveInteger" minOccurs="0" />
446            <!-- The minimal API level required by this package.
447                 Optional. If present, must be an int > 0. -->
448            <xsd:element name="min-api-level" type="xsd:positiveInteger" minOccurs="0" />
449            <!-- An optional element indicating the package is obsolete.
450                 The string content is however currently not defined and ignored. -->
451            <xsd:element name="obsolete"      type="xsd:string"          minOccurs="0" />
452
453            <!-- A list of project files contributed by this package. Optional. -->
454            <xsd:element name="project-files" type="sdk:projectFilesType" minOccurs="0" />
455        </xsd:all>
456    </xsd:complexType>
457
458
459    <!-- The definition of a path segment used by the extra element. -->
460
461    <xsd:simpleType name="segmentType">
462        <xsd:annotation>
463            <xsd:documentation>
464                One path segment for the install path of an extra element.
465                It must be a single-segment path.
466            </xsd:documentation>
467        </xsd:annotation>
468        <xsd:restriction base="xsd:token">
469            <xsd:pattern value="[a-zA-Z0-9_]+"/>
470        </xsd:restriction>
471    </xsd:simpleType>
472
473    <xsd:simpleType name="segmentListType">
474        <xsd:annotation>
475            <xsd:documentation>
476                A semi-colon separated list of a segmentTypes.
477            </xsd:documentation>
478        </xsd:annotation>
479        <xsd:restriction base="xsd:token">
480            <xsd:pattern value="[a-zA-Z0-9_;]+"/>
481        </xsd:restriction>
482    </xsd:simpleType>
483
484
485    <!-- The definition of a license to be referenced by the uses-license element. -->
486
487    <xsd:complexType name="licenseType">
488        <xsd:annotation>
489            <xsd:documentation>
490                A license definition. Such a license must be used later as a reference
491                using a uses-license element in one of the package elements.
492            </xsd:documentation>
493        </xsd:annotation>
494        <xsd:simpleContent>
495            <xsd:extension base="xsd:string">
496                <xsd:attribute name="id"   type="xsd:ID" />
497                <xsd:attribute name="type" type="xsd:token" fixed="text" />
498            </xsd:extension>
499        </xsd:simpleContent>
500    </xsd:complexType>
501
502
503    <!-- Type describing the license used by a package.
504         The license MUST be defined using a license node and referenced
505         using the ref attribute of the license element inside a package.
506     -->
507
508    <xsd:complexType name="usesLicenseType">
509        <xsd:annotation>
510            <xsd:documentation>
511                Describes the license used by a package. The license MUST be defined
512                using a license node and referenced using the ref attribute of the
513                license element inside a package.
514            </xsd:documentation>
515        </xsd:annotation>
516        <xsd:attribute name="ref" type="xsd:IDREF" />
517    </xsd:complexType>
518
519
520    <!-- A collection of files that can be downloaded for a given architecture.
521         The <archives> node is mandatory in the repository elements and the
522         collection must have at least one <archive> declared.
523         Each archive is a zip file that will be unzipped in a location that depends
524         on its package type.
525     -->
526
527    <xsd:complexType name="archivesType">
528        <xsd:annotation>
529            <xsd:documentation>
530                A collection of files that can be downloaded for a given architecture.
531                The &lt;archives&gt; node is mandatory in the repository packages and the
532                collection must have at least one &lt;archive&gt; declared.
533                Each archive is a zip file that will be unzipped in a location that depends
534                on its package type.
535            </xsd:documentation>
536        </xsd:annotation>
537        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
538            <!-- One archive file -->
539            <xsd:element name="archive">
540                <xsd:complexType>
541                    <!-- Properties of the archive file -->
542                    <xsd:all>
543                        <!-- The size in bytes of the archive to download. -->
544                        <xsd:element name="size"     type="xsd:positiveInteger" />
545                        <!-- The checksum of the archive file. -->
546                        <xsd:element name="checksum" type="sdk:checksumType" />
547                        <!-- The URL is an absolute URL if it starts with http://, https://
548                             or ftp://. Otherwise it is relative to the parent directory that
549                             contains this repository.xml -->
550                        <xsd:element name="url"      type="xsd:token" />
551                    </xsd:all>
552
553                    <!-- Attributes that identify the OS and architecture -->
554                    <xsd:attribute name="os" use="required">
555                        <xsd:simpleType>
556                            <xsd:restriction base="xsd:token">
557                                <xsd:enumeration value="any" />
558                                <xsd:enumeration value="linux" />
559                                <xsd:enumeration value="macosx" />
560                                <xsd:enumeration value="windows" />
561                            </xsd:restriction>
562                        </xsd:simpleType>
563                    </xsd:attribute>
564                    <xsd:attribute name="arch" use="optional">
565                        <xsd:simpleType>
566                            <xsd:restriction base="xsd:token">
567                                <xsd:enumeration value="any" />
568                                <xsd:enumeration value="ppc" />
569                                <xsd:enumeration value="x86" />
570                                <xsd:enumeration value="x86_64" />
571                            </xsd:restriction>
572                        </xsd:simpleType>
573                    </xsd:attribute>
574                </xsd:complexType>
575            </xsd:element>
576        </xsd:sequence>
577    </xsd:complexType>
578
579
580    <!-- A collection of file paths available in an &lt;extra&gt; package
581         that can be installed in an Android project.
582         If present, the &lt;project-files&gt; collection must contain at least one path.
583         Each path is relative to the root directory of the package.
584     -->
585
586    <xsd:complexType name="projectFilesType">
587        <xsd:annotation>
588            <xsd:documentation>
589                A collection of file paths available in an &lt;extra&gt; package
590                that can be installed in an Android project.
591                If present, the &lt;project-files&gt; collection must contain at least one path.
592                Each path is relative to the root directory of the package.
593            </xsd:documentation>
594        </xsd:annotation>
595        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
596            <!-- One JAR Path, relative to the root folder of the package. -->
597            <xsd:element name="path" type="xsd:string" />
598        </xsd:sequence>
599    </xsd:complexType>
600
601
602    <!-- The definition of a file checksum -->
603
604    <xsd:simpleType name="sha1Number">
605        <xsd:annotation>
606            <xsd:documentation>A SHA1 checksum.</xsd:documentation>
607        </xsd:annotation>
608        <xsd:restriction base="xsd:string">
609            <xsd:pattern value="([0-9a-fA-F]){40}"/>
610        </xsd:restriction>
611    </xsd:simpleType>
612
613    <xsd:complexType name="checksumType">
614        <xsd:annotation>
615            <xsd:documentation>A file checksum, currently only SHA1.</xsd:documentation>
616        </xsd:annotation>
617        <xsd:simpleContent>
618            <xsd:extension base="sdk:sha1Number">
619                <xsd:attribute name="type" type="xsd:token" fixed="sha1" />
620            </xsd:extension>
621        </xsd:simpleContent>
622    </xsd:complexType>
623
624</xsd:schema>
625