page.title=Dalvik Executable format
@jd:body

<!--
    Copyright 2013 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<p>This document describes the layout and contents of <code>.dex</code>
files, which are used to hold a set of class definitions and their associated
adjunct data.</p>

<h2 id="types">Guide to types</h2>

<table class="guide">
<thead>
<tr>
  <th>Name</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>byte</td>
  <td>8-bit signed int</td>
</tr>
<tr>
  <td>ubyte</td>
  <td>8-bit unsigned int</td>
</tr>
<tr>
  <td>short</td>
  <td>16-bit signed int, little-endian</td>
</tr>
<tr>
  <td>ushort</td>
  <td>16-bit unsigned int, little-endian</td>
</tr>
<tr>
  <td>int</td>
  <td>32-bit signed int, little-endian</td>
</tr>
<tr>
  <td>uint</td>
  <td>32-bit unsigned int, little-endian</td>
</tr>
<tr>
  <td>long</td>
  <td>64-bit signed int, little-endian</td>
</tr>
<tr>
  <td>ulong</td>
  <td>64-bit unsigned int, little-endian</td>
</tr>
<tr>
  <td>sleb128</td>
  <td>signed LEB128, variable-length (see below)</td>
</tr>
<tr>
  <td>uleb128</td>
  <td>unsigned LEB128, variable-length (see below)</td>
</tr>
<tr>
  <td>uleb128p1</td>
  <td>unsigned LEB128 plus <code>1</code>, variable-length (see below)</td>
</tr>
</tbody>
</table>

<h3 id="leb128">LEB128</h3>

<p>LEB128 ("<b>L</b>ittle-<b>E</b>ndian <b>B</b>ase <b>128</b>") is a
variable-length encoding for
arbitrary signed or unsigned integer quantities. The format was
borrowed from the <a href="http://dwarfstd.org/Dwarf3Std.php">DWARF3</a>
specification. In a <code>.dex</code> file, LEB128 is only ever used to
encode 32-bit quantities.</p>

<p>Each LEB128 encoded value consists of one to five
bytes, which together represent a single 32-bit value. Each
byte has its most significant bit set except for the final byte in the
sequence, which has its most significant bit clear. The remaining
seven bits of each byte are payload, with the least significant seven
bits of the quantity in the first byte, the next seven in the second
byte and so on. In the case of a signed LEB128 (<code>sleb128</code>),
the most significant payload bit of the final byte in the sequence is
sign-extended to produce the final value. In the unsigned case
(<code>uleb128</code>), any bits not explicitly represented are
interpreted as <code>0</code>.

<table class="leb128Bits">
<thead>
<tr><th colspan="16">Bitwise diagram of a two-byte LEB128 value</th></tr>
<tr>
  <th colspan="8">First byte</td>
  <th colspan="8">Second byte</td>
</tr>
</thead>
<tbody>
<tr>
  <td class="start1"><code>1</code></td>
  <td>bit<sub>6</sub></td>
  <td>bit<sub>5</sub></td>
  <td>bit<sub>4</sub></td>
  <td>bit<sub>3</sub></td>
  <td>bit<sub>2</sub></td>
  <td>bit<sub>1</sub></td>
  <td>bit<sub>0</sub></td>
  <td class="start2"><code>0</code></td>
  <td>bit<sub>13</sub></td>
  <td>bit<sub>12</sub></td>
  <td>bit<sub>11</sub></td>
  <td>bit<sub>10</sub></td>
  <td>bit<sub>9</sub></td>
  <td>bit<sub>8</sub></td>
  <td class="end2">bit<sub>7</sub></td>
</tr>
</tbody>
</table>

<p>The variant <code>uleb128p1</code> is used to represent a signed
value, where the representation is of the value <i>plus one</i> encoded
as a <code>uleb128</code>. This makes the encoding of <code>-1</code>
(alternatively thought of as the unsigned value <code>0xffffffff</code>)
&mdash; but no other negative number &mdash; a single byte, and is
useful in exactly those cases where the represented number must either
be non-negative or <code>-1</code> (or <code>0xffffffff</code>),
and where no other negative values are allowed (or where large unsigned
values are unlikely to be needed).</p>

<p>Here are some examples of the formats:</p>

<table class="leb128">
<thead>
<tr>
  <th>Encoded Sequence</th>
  <th>As <code>sleb128</code></th>
  <th>As <code>uleb128</code></th>
  <th>As <code>uleb128p1</code></th>
</tr>
</thead>
<tbody>
  <tr><td>00</td><td>0</td><td>0</td><td>-1</td></tr>
  <tr><td>01</td><td>1</td><td>1</td><td>0</td></tr>
  <tr><td>7f</td><td>-1</td><td>127</td><td>126</td></tr>
  <tr><td>80 7f</td><td>-128</td><td>16256</td><td>16255</td></tr>
</tbody>
</table>

<h2 id="file-layout">File layout</h2>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>header</td>
  <td>header_item</td>
  <td>the header</td>
</tr>
<tr>
  <td>string_ids</td>
  <td>string_id_item[]</td>
  <td>string identifiers list. These are identifiers for all the strings
    used by this file, either for internal naming (e.g., type descriptors)
    or as constant objects referred to by code. This list must be sorted
    by string contents, using UTF-16 code point values (not in a
    locale-sensitive manner), and it must not contain any duplicate entries.
  </td>
</tr>
<tr>
  <td>type_ids</td>
  <td>type_id_item[]</td>
  <td>type identifiers list. These are identifiers for all types (classes,
    arrays, or primitive types) referred to by this file, whether defined
    in the file or not. This list must be sorted by <code>string_id</code>
    index, and it must not contain any duplicate entries.
  </td>
</tr>
<tr>
  <td>proto_ids</td>
  <td>proto_id_item[]</td>
  <td>method prototype identifiers list. These are identifiers for all
    prototypes referred to by this file. This list must be sorted in
    return-type (by <code>type_id</code> index) major order, and then
    by arguments (also by <code>type_id</code> index). The list must not
    contain any duplicate entries.
  </td>
</tr>
<tr>
  <td>field_ids</td>
  <td>field_id_item[]</td>
  <td>field identifiers list. These are identifiers for all fields
    referred to by this file, whether defined in the file or not. This
    list must be sorted, where the defining type (by <code>type_id</code>
    index) is the major order, field name (by <code>string_id</code> index)
    is the intermediate order, and type (by <code>type_id</code> index)
    is the minor order. The list must not contain any duplicate entries.
  </td>
</tr>
<tr>
  <td>method_ids</td>
  <td>method_id_item[]</td>
  <td>method identifiers list. These are identifiers for all methods
    referred to by this file, whether defined in the file or not. This
    list must be sorted, where the defining type (by <code>type_id</code>
    index) is the major order, method name (by <code>string_id</code>
    index) is the intermediate order, and method prototype (by
    <code>proto_id</code> index) is the minor order.  The list must not
    contain any duplicate entries.
  </td>
</tr>
<tr>
  <td>class_defs</td>
  <td>class_def_item[]</td>
  <td>class definitions list. The classes must be ordered such that a given
    class's superclass and implemented interfaces appear in the
    list earlier than the referring class. Furthermore, it is invalid for
    a definition for the same-named class to appear more than once in
    the list.
  </td>
</tr>
<tr>
  <td>data</td>
  <td>ubyte[]</td>
  <td>data area, containing all the support data for the tables listed above.
    Different items have different alignment requirements, and
    padding bytes are inserted before each item if necessary to achieve
    proper alignment.
  </td>
</tr>
<tr>
  <td>link_data</td>
  <td>ubyte[]</td>
  <td>data used in statically linked files. The format of the data in
    this section is left unspecified by this document.
    This section is empty in unlinked files, and runtime implementations
    may use it as they see fit.
  </td>
</tr>
</tbody>
</table>

<h2 id="definitions">Bitfield, string and constant definitions</h2>

<h3 id="dex-file-magic">DEX_FILE_MAGIC</h3>
<h4>embedded in header_item</h4>

<p>The constant array/string <code>DEX_FILE_MAGIC</code> is the list of
bytes that must appear at the beginning of a <code>.dex</code> file
in order for it to be recognized as such. The value intentionally
contains a newline (<code>"\n"</code> or <code>0x0a</code>) and a
null byte (<code>"\0"</code> or <code>0x00</code>) in order to help
in the detection of certain forms of corruption. The value also
encodes a format version number as three decimal digits, which is
expected to increase monotonically over time as the format evolves.</p>

<pre>
ubyte[8] DEX_FILE_MAGIC = { 0x64 0x65 0x78 0x0a 0x30 0x33 0x35 0x00 }
                        = "dex\n035\0"
</pre>

<p class="note"><strong>Note:</strong> At least a couple earlier versions of the format have
been used in widely-available public software releases. For example,
version <code>009</code> was used for the M3 releases of the
Android platform (November&ndash;December 2007),
and version <code>013</code> was used for the M5 releases of the Android
platform (February&ndash;March 2008). In several respects, these earlier
versions of the format differ significantly from the version described in this
document.</p>

<h3 id="endian-constant">ENDIAN_CONSTANT and REVERSE_ENDIAN_CONSTANT</h3>
<h4>embedded in header_item</h4>

<p>The constant <code>ENDIAN_CONSTANT</code> is used to indicate the
endianness of the file in which it is found. Although the standard
<code>.dex</code> format is little-endian, implementations may choose
to perform byte-swapping. Should an implementation come across a
header whose <code>endian_tag</code> is <code>REVERSE_ENDIAN_CONSTANT</code>
instead of <code>ENDIAN_CONSTANT</code>, it would know that the file
has been byte-swapped from the expected form.</p>

<pre>
uint ENDIAN_CONSTANT = 0x12345678;
uint REVERSE_ENDIAN_CONSTANT = 0x78563412;
</pre>

<h3 id="no-index">NO_INDEX</h3>
<h4>embedded in class_def_item and debug_info_item</h4>

<p>The constant <code>NO_INDEX</code> is used to indicate that
an index value is absent.</p>

<p class="note"><strong>Note:</strong> This value isn't defined to be
<code>0</code>, because that is in fact typically a valid index.</p>

<p>The chosen value for <code>NO_INDEX</code> is
representable as a single byte in the <code>uleb128p1</code> encoding.</p>

<pre>
uint NO_INDEX = 0xffffffff;    // == -1 if treated as a signed int
</pre>

<h3 id="access-flags">access_flags definitions</h3>
<h4>embedded in class_def_item, encoded_field, encoded_method, and 
InnerClass</h4>

<p>Bitfields of these flags are used to indicate the accessibility and
overall properties of classes and class members.</p>

<table class="accessFlags">
<thead>
<tr>
  <th>Name</th>
  <th>Value</th>
  <th>For Classes (and <code>InnerClass</code> annotations)</th>
  <th>For Fields</th>
  <th>For Methods</th>
</tr>
</thead>
<tbody>
<tr>
  <td>ACC_PUBLIC</td>
  <td>0x1</td>
  <td><code>public</code>: visible everywhere</td>
  <td><code>public</code>: visible everywhere</td>
  <td><code>public</code>: visible everywhere</td>
</tr>
<tr>
  <td>ACC_PRIVATE</td>
  <td>0x2</td>
  <td><super>*</super>
    <code>private</code>: only visible to defining class
  </td>
  <td><code>private</code>: only visible to defining class</td>
  <td><code>private</code>: only visible to defining class</td>
</tr>
<tr>
  <td>ACC_PROTECTED</td>
  <td>0x4</td>
  <td><super>*</super>
    <code>protected</code>: visible to package and subclasses
  </td>
  <td><code>protected</code>: visible to package and subclasses</td>
  <td><code>protected</code>: visible to package and subclasses</td>
</tr>
<tr>
  <td>ACC_STATIC</td>
  <td>0x8</td>
  <td><super>*</super>
    <code>static</code>: is not constructed with an outer
    <code>this</code> reference</td>
  <td><code>static</code>: global to defining class</td>
  <td><code>static</code>: does not take a <code>this</code> argument</td>
</tr>
<tr>
  <td>ACC_FINAL</td>
  <td>0x10</td>
  <td><code>final</code>: not subclassable</td>
  <td><code>final</code>: immutable after construction</td>
  <td><code>final</code>: not overridable</td>
</tr>
<tr>
  <td>ACC_SYNCHRONIZED</td>
  <td>0x20</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td><code>synchronized</code>: associated lock automatically acquired
    around call to this method. <p class="note"><strong>Note:</strong> This is only valid to set when
    <code>ACC_NATIVE</code> is also set. </p></td>
</tr>
<tr>
  <td>ACC_VOLATILE</td>
  <td>0x40</td>
  <td>&nbsp;</td>
  <td><code>volatile</code>: special access rules to help with thread
    safety</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td>ACC_BRIDGE</td>
  <td>0x40</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>bridge method, added automatically by compiler as a type-safe
    bridge</td>
</tr>
<tr>
  <td>ACC_TRANSIENT</td>
  <td>0x80</td>
  <td>&nbsp;</td>
  <td><code>transient</code>: not to be saved by default serialization</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td>ACC_VARARGS</td>
  <td>0x80</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>last argument should be treated as a "rest" argument by compiler</td>
</tr>
<tr>
  <td>ACC_NATIVE</td>
  <td>0x100</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td><code>native</code>: implemented in native code</td>
</tr>
<tr>
  <td>ACC_INTERFACE</td>
  <td>0x200</td>
  <td><code>interface</code>: multiply-implementable abstract class</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td>ACC_ABSTRACT</td>
  <td>0x400</td>
  <td><code>abstract</code>: not directly instantiable</td>
  <td>&nbsp;</td>
  <td><code>abstract</code>: unimplemented by this class</td>
</tr>
<tr>
  <td>ACC_STRICT</td>
  <td>0x800</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td><code>strictfp</code>: strict rules for floating-point arithmetic</td>
</tr>
<tr>
  <td>ACC_SYNTHETIC</td>
  <td>0x1000</td>
  <td>not directly defined in source code</td>
  <td>not directly defined in source code</td>
  <td>not directly defined in source code</td>
</tr>
<tr>
  <td>ACC_ANNOTATION</td>
  <td>0x2000</td>
  <td>declared as an annotation class</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td>ACC_ENUM</td>
  <td>0x4000</td>
  <td>declared as an enumerated type</td>
  <td>declared as an enumerated value</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td><i>(unused)</i></td>
  <td>0x8000</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td>ACC_CONSTRUCTOR</td>
  <td>0x10000</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>constructor method (class or instance initializer)</td>
</tr>
<tr>
  <td>ACC_DECLARED_<br/>SYNCHRONIZED</td>
  <td>0x20000</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>declared <code>synchronized</code>. <p class="note"><strong>Note:</strong> This has no effect on
    execution (other than in reflection of this flag, per se).</p>
  </td>
</tr>
</tbody>
</table>

<p><super>*</super> Only allowed on for <code>InnerClass</code> annotations,
and must not ever be on in a <code>class_def_item</code>.</p>

<h3 id="mutf-8">MUTF-8 (Modified UTF-8) Encoding</h3>

<p>As a concession to easier legacy support, the <code>.dex</code> format
encodes its string data in a de facto standard modified UTF-8 form, hereafter
referred to as MUTF-8. This form is identical to standard UTF-8, except:</p>

<ul>
  <li>Only the one-, two-, and three-byte encodings are used.</li>
  <li>Code points in the range <code>U+10000</code> &hellip;
    <code>U+10ffff</code> are encoded as a surrogate pair, each of
    which is represented as a three-byte encoded value.</li>
  <li>The code point <code>U+0000</code> is encoded in two-byte form.</li>
  <li>A plain null byte (value <code>0</code>) indicates the end of
    a string, as is the standard C language interpretation.</li>
</ul>

<p>The first two items above can be summarized as: MUTF-8
is an encoding format for UTF-16, instead of being a more direct
encoding format for Unicode characters.</p>

<p>The final two items above make it simultaneously possible to include
the code point <code>U+0000</code> in a string <i>and</i> still manipulate
it as a C-style null-terminated string.</p>

<p>However, the special encoding of <code>U+0000</code> means that, unlike
normal UTF-8, the result of calling the standard C function
<code>strcmp()</code> on a pair of MUTF-8 strings does not always
indicate the properly signed result of comparison of <i>unequal</i> strings.
When ordering (not just equality) is a concern, the most straightforward
way to compare MUTF-8 strings is to decode them character by character,
and compare the decoded values. (However, more clever implementations are
also possible.)</p>

<p>Please refer to <a href="http://unicode.org">The Unicode
Standard</a> for further information about character encoding.
MUTF-8 is actually closer to the (relatively less well-known) encoding
<a href="http://www.unicode.org/reports/tr26/">CESU-8</a> than to UTF-8
per se.</p>

<h3 id="encoding">encoded_value encoding</h3>
<h4>embedded in annotation_element and encoded_array_item </h4>

<p>An <code>encoded_value</code> is an encoded piece of (nearly)
arbitrary hierarchically structured data. The encoding is meant to
be both compact and straightforward to parse.</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>(value_arg &lt;&lt; 5) | value_type</td>
  <td>ubyte</td>
  <td>byte indicating the type of the immediately subsequent
    <code>value</code> along
    with an optional clarifying argument in the high-order three bits.
    See below for the various <code>value</code> definitions.
    In most cases, <code>value_arg</code> encodes the length of
    the immediately-subsequent <code>value</code> in bytes, as
    <code>(size - 1)</code>, e.g., <code>0</code> means that
    the value requires one byte, and <code>7</code> means it requires
    eight bytes; however, there are exceptions as noted below.
  </td>
</tr>
<tr>
  <td>value</td>
  <td>ubyte[]</td>
  <td>bytes representing the value, variable in length and interpreted
    differently for different <code>value_type</code> bytes, though
    always little-endian. See the various value definitions below for
    details.
  </td>
</tr>
</tbody>
</table>

<h3 id="value-formats">Value formats</h3>

<table class="encodedValue">
<thead>
<tr>
  <th>Type Name</th>
  <th><code>value_type</code></th>
  <th><code>value_arg</code> Format</th>
  <th><code>value</code> Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>VALUE_BYTE</td>
  <td>0x00</td>
  <td><i>(none; must be <code>0</code>)</i></td>
  <td>ubyte[1]</td>
  <td>signed one-byte integer value</td>
</tr>
<tr>
  <td>VALUE_SHORT</td>
  <td>0x02</td>
  <td>size - 1 (0&hellip;1)</td>
  <td>ubyte[size]</td>
  <td>signed two-byte integer value, sign-extended</td>
</tr>
<tr>
  <td>VALUE_CHAR</td>
  <td>0x03</td>
  <td>size - 1 (0&hellip;1)</td>
  <td>ubyte[size]</td>
  <td>unsigned two-byte integer value, zero-extended</td>
</tr>
<tr>
  <td>VALUE_INT</td>
  <td>0x04</td>
  <td>size - 1 (0&hellip;3)</td>
  <td>ubyte[size]</td>
  <td>signed four-byte integer value, sign-extended</td>
</tr>
<tr>
  <td>VALUE_LONG</td>
  <td>0x06</td>
  <td>size - 1 (0&hellip;7)</td>
  <td>ubyte[size]</td>
  <td>signed eight-byte integer value, sign-extended</td>
</tr>
<tr>
  <td>VALUE_FLOAT</td>
  <td>0x10</td>
  <td>size - 1 (0&hellip;3)</td>
  <td>ubyte[size]</td>
  <td>four-byte bit pattern, zero-extended <i>to the right</i>, and
    interpreted as an IEEE754 32-bit floating point value
  </td>
</tr>
<tr>
  <td>VALUE_DOUBLE</td>
  <td>0x11</td>
  <td>size - 1 (0&hellip;7)</td>
  <td>ubyte[size]</td>
  <td>eight-byte bit pattern, zero-extended <i>to the right</i>, and
    interpreted as an IEEE754 64-bit floating point value
  </td>
</tr>
<tr>
  <td>VALUE_STRING</td>
  <td>0x17</td>
  <td>size - 1 (0&hellip;3)</td>
  <td>ubyte[size]</td>
  <td>unsigned (zero-extended) four-byte integer value,
    interpreted as an index into
    the <code>string_ids</code> section and representing a string value
  </td>
</tr>
<tr>
  <td>VALUE_TYPE</td>
  <td>0x18</td>
  <td>size - 1 (0&hellip;3)</td>
  <td>ubyte[size]</td>
  <td>unsigned (zero-extended) four-byte integer value,
    interpreted as an index into
    the <code>type_ids</code> section and representing a reflective
    type/class value
  </td>
</tr>
<tr>
  <td>VALUE_FIELD</td>
  <td>0x19</td>
  <td>size - 1 (0&hellip;3)</td>
  <td>ubyte[size]</td>
  <td>unsigned (zero-extended) four-byte integer value,
    interpreted as an index into
    the <code>field_ids</code> section and representing a reflective
    field value
  </td>
</tr>
<tr>
  <td>VALUE_METHOD</td>
  <td>0x1a</td>
  <td>size - 1 (0&hellip;3)</td>
  <td>ubyte[size]</td>
  <td>unsigned (zero-extended) four-byte integer value,
    interpreted as an index into
    the <code>method_ids</code> section and representing a reflective
    method value
  </td>
</tr>
<tr>
  <td>VALUE_ENUM</td>
  <td>0x1b</td>
  <td>size - 1 (0&hellip;3)</td>
  <td>ubyte[size]</td>
  <td>unsigned (zero-extended) four-byte integer value,
    interpreted as an index into
    the <code>field_ids</code> section and representing the value of
    an enumerated type constant
  </td>
</tr>
<tr>
  <td>VALUE_ARRAY</td>
  <td>0x1c</td>
  <td><i>(none; must be <code>0</code>)</i></td>
  <td>encoded_array</td>
  <td>an array of values, in the format specified by
    "<code>encoded_array</code> format" below. The size
    of the <code>value</code> is implicit in the encoding.
  </td>
</tr>
<tr>
  <td>VALUE_ANNOTATION</td>
  <td>0x1d</td>
  <td><i>(none; must be <code>0</code>)</i></td>
  <td>encoded_annotation</td>
  <td>a sub-annotation, in the format specified by
    "<code>encoded_annotation</code> format" below. The size
    of the <code>value</code> is implicit in the encoding.
  </td>
</tr>
<tr>
  <td>VALUE_NULL</td>
  <td>0x1e</td>
  <td><i>(none; must be <code>0</code>)</i></td>
  <td><i>(none)</i></td>
  <td><code>null</code> reference value</td>
</tr>
<tr>
  <td>VALUE_BOOLEAN</td>
  <td>0x1f</td>
  <td>boolean (0&hellip;1)</td>
  <td><i>(none)</i></td>
  <td>one-bit value; <code>0</code> for <code>false</code> and
    <code>1</code> for <code>true</code>. The bit is represented in the
    <code>value_arg</code>.
  </td>
</tr>
</tbody>
</table>

<h3 id="encoded-array">encoded_array format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>size</td>
  <td>uleb128</td>
  <td>number of elements in the array</td>
</tr>
<tr>
  <td>values</td>
  <td>encoded_value[size]</td>
  <td>a series of <code>size</code> <code>encoded_value</code> byte
    sequences in the format specified by this section, concatenated
    sequentially.
  </td>
</tr>
</tbody>
</table>

<h3 id="encoded-annotation">encoded_annotation format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>type_idx</td>
  <td>uleb128</td>
  <td>type of the annotation. This must be a class (not array or primitive)
    type.
  </td>
</tr>
<tr>
  <td>size</td>
  <td>uleb128</td>
  <td>number of name-value mappings in this annotation</td>
</tr>
<tr>
  <td>elements</td>
  <td>annotation_element[size]</td>
  <td>elements of the annotataion, represented directly in-line (not as
    offsets). Elements must be sorted in increasing order by
    <code>string_id</code> index.
  </td>
</tr>
</tbody>
</table>

<h3 id="annotation-element">annotation_element format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>name_idx</td>
  <td>uleb128</td>
  <td>element name, represented as an index into the
    <code>string_ids</code> section. The string must conform to the
    syntax for <i>MemberName</i>, defined above.
  </td>
</tr>
<tr>
  <td>value</td>
  <td>encoded_value</td>
  <td>element value</td>
</tr>
</tbody>
</table>

<h2 id="string-syntax">String syntax</h2>

<p>There are several kinds of item in a <code>.dex</code> file which
ultimately refer to a string. The following BNF-style definitions
indicate the acceptable syntax for these strings.</p>

<h3 id="simplename"><i>SimpleName</i></h3>

<p>A <i>SimpleName</i> is the basis for the syntax of the names of other
things. The <code>.dex</code> format allows a fair amount of latitude
here (much more than most common source languages). In brief, a simple
name consists of any low-ASCII alphabetic character or digit, a few
specific low-ASCII symbols, and most non-ASCII code points that are not
control, space, or special characters. Note that surrogate code points
(in the range <code>U+d800</code> &hellip; <code>U+dfff</code>) are not
considered valid name characters, per se, but Unicode supplemental
characters <i>are</i> valid (which are represented by the final
alternative of the rule for <i>SimpleNameChar</i>), and they should be
represented in a file as pairs of surrogate code points in the MUTF-8
encoding.</p>

<table class="bnf">
  <tr><td colspan="2" class="def"><i>SimpleName</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><i>SimpleNameChar</i> (<i>SimpleNameChar</i>)*</td>
  </tr>

  <tr><td colspan="2" class="def"><i>SimpleNameChar</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><code>'A'</code> &hellip; <code>'Z'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'a'</code> &hellip; <code>'z'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'0'</code> &hellip; <code>'9'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'$'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'-'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'_'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>U+00a1</code> &hellip; <code>U+1fff</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>U+2010</code> &hellip; <code>U+2027</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>U+2030</code> &hellip; <code>U+d7ff</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>U+e000</code> &hellip; <code>U+ffef</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>U+10000</code> &hellip; <code>U+10ffff</code></td>
  </tr>
</table>

<h3 id="membername"><i>MemberName</i></h3>
<h4>used by field_id_item and method_id_item</h4>

<p>A <i>MemberName</i> is the name of a member of a class, members being
fields, methods, and inner classes.</p>

<table class="bnf">
  <tr><td colspan="2" class="def"><i>MemberName</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><i>SimpleName</i></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'&lt;'</code> <i>SimpleName</i> <code>'&gt;'</code></td>
  </tr>
</table>

<h3 id="fullclassname"><i>FullClassName</i></h3>

<p>A <i>FullClassName</i> is a fully-qualified class name, including an
optional package specifier followed by a required name.</p>

<table class="bnf">
  <tr><td colspan="2" class="def"><i>FullClassName</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><i>OptionalPackagePrefix</i> <i>SimpleName</i></td>
  </tr>

  <tr><td colspan="2" class="def"><i>OptionalPackagePrefix</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td>(<i>SimpleName</i> <code>'/'</code>)*</td>
  </tr>
</table>

<h3 id="typedescriptor"><i>TypeDescriptor</i></h3>
<h4>used by type_id_item</h4>

<p>A <i>TypeDescriptor</i> is the representation of any type, including
primitives, classes, arrays, and <code>void</code>. See below for
the meaning of the various versions.</p>

<table class="bnf">
  <tr><td colspan="2" class="def"><i>TypeDescriptor</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><code>'V'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><i>FieldTypeDescriptor</i></td>
  </tr>

  <tr><td colspan="2" class="def"><i>FieldTypeDescriptor</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><i>NonArrayFieldTypeDescriptor</i></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td>(<code>'['</code> * 1&hellip;255)
      <i>NonArrayFieldTypeDescriptor</i></td>
  </tr>

  <tr>
    <td colspan="2" class="def"><i>NonArrayFieldTypeDescriptor</i>&rarr;</td>
  </tr>
  <tr>
    <td/>
    <td><code>'Z'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'B'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'S'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'C'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'I'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'J'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'F'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'D'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'L'</code> <i>FullClassName</i> <code>';'</code></td>
  </tr>
</table>

<h3 id="shortydescriptor"><i>ShortyDescriptor</i></h3>
<h4>used by proto_id_item</h4>

<p>A <i>ShortyDescriptor</i> is the short form representation of a method
prototype, including return and parameter types, except that there is
no distinction between various reference (class or array) types. Instead,
all reference types are represented by a single <code>'L'</code> character.</p>

<table class="bnf">
  <tr><td colspan="2" class="def"><i>ShortyDescriptor</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><i>ShortyReturnType</i> (<i>ShortyFieldType</i>)*</td>
  </tr>

  <tr><td colspan="2" class="def"><i>ShortyReturnType</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><code>'V'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><i>ShortyFieldType</i></td>
  </tr>

  <tr><td colspan="2" class="def"><i>ShortyFieldType</i> &rarr;</td></tr>
  <tr>
    <td/>
    <td><code>'Z'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'B'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'S'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'C'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'I'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'J'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'F'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'D'</code></td>
  </tr>
  <tr>
    <td class="bar">|</td>
    <td><code>'L'</code></td>
  </tr>
</table>

<h3 id="typedescriptor"><i>TypeDescriptor</i> Semantics</h3>

<p>This is the meaning of each of the variants of <i>TypeDescriptor</i>.</p>

<table class="descriptor">
<thead>
<tr>
  <th>Syntax</th>
  <th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
  <td>V</td>
  <td><code>void</code>; only valid for return types</td>
</tr>
<tr>
  <td>Z</td>
  <td><code>boolean</code></td>
</tr>
<tr>
  <td>B</td>
  <td><code>byte</code></td>
</tr>
<tr>
  <td>S</td>
  <td><code>short</code></td>
</tr>
<tr>
  <td>C</td>
  <td><code>char</code></td>
</tr>
<tr>
  <td>I</td>
  <td><code>int</code></td>
</tr>
<tr>
  <td>J</td>
  <td><code>long</code></td>
</tr>
<tr>
  <td>F</td>
  <td><code>float</code></td>
</tr>
<tr>
  <td>D</td>
  <td><code>double</code></td>
</tr>
<tr>
  <td>L<i>fully/qualified/Name</i>;</td>
  <td>the class <code><i>fully.qualified.Name</i></code></td>
</tr>
<tr>
  <td>[<i>descriptor</i></td>
  <td>array of <code><i>descriptor</i></code>, usable recursively for
    arrays-of-arrays, though it is invalid to have more than 255
    dimensions.
  </td>
</tr>
</tbody>
</table>

<h2 id="items">Items and related structures</h2>

<p>This section includes definitions for each of the top-level items that
may appear in a <code>.dex</code> file.

<h3 id="header-item">header_item</h3>
<h4>appears in the header section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>magic</td>
  <td>ubyte[8] = DEX_FILE_MAGIC</td>
  <td>magic value. See discussion above under "<code>DEX_FILE_MAGIC</code>"
    for more details.
  </td>
</tr>
<tr>
  <td>checksum</td>
  <td>uint</td>
  <td>adler32 checksum of the rest of the file (everything but
    <code>magic</code> and this field); used to detect file corruption
  </td>
</tr>
<tr>
  <td>signature</td>
  <td>ubyte[20]</td>
  <td>SHA-1 signature (hash) of the rest of the file (everything but
    <code>magic</code>, <code>checksum</code>, and this field); used
    to uniquely identify files
  </td>
</tr>
<tr>
  <td>file_size</td>
  <td>uint</td>
  <td>size of the entire file (including the header), in bytes
</tr>
<tr>
  <td>header_size</td>
  <td>uint = 0x70</td>
  <td>size of the header (this entire section), in bytes. This allows for at
    least a limited amount of backwards/forwards compatibility without
    invalidating the format.
  </td>
</tr>
<tr>
  <td>endian_tag</td>
  <td>uint = ENDIAN_CONSTANT</td>
  <td>endianness tag. See discussion above under "<code>ENDIAN_CONSTANT</code>
    and <code>REVERSE_ENDIAN_CONSTANT</code>" for more details.
  </td>
</tr>
<tr>
  <td>link_size</td>
  <td>uint</td>
  <td>size of the link section, or <code>0</code> if this file isn't
    statically linked</td>
</tr>
<tr>
  <td>link_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the link section, or
    <code>0</code> if <code>link_size == 0</code>. The offset, if non-zero,
    should be to an offset into the <code>link_data</code> section. The
    format of the data pointed at is left unspecified by this document;
    this header field (and the previous) are left as hooks for use by
    runtime implementations.
  </td>
</tr>
<tr>
  <td>map_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the map item, or
    <code>0</code> if this file has no map. The offset, if non-zero,
    should be to an offset into the <code>data</code> section,
    and the data should be in the format specified by "<code>map_list</code>"
    below.
  </td>
</tr>
<tr>
  <td>string_ids_size</td>
  <td>uint</td>
  <td>count of strings in the string identifiers list</td>
</tr>
<tr>
  <td>string_ids_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the string identifiers list, or
    <code>0</code> if <code>string_ids_size == 0</code> (admittedly a
    strange edge case). The offset, if non-zero,
    should be to the start of the <code>string_ids</code> section.
  </td>
</tr>
<tr>
  <td>type_ids_size</td>
  <td>uint</td>
  <td>count of elements in the type identifiers list</td>
</tr>
<tr>
  <td>type_ids_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the type identifiers list, or
    <code>0</code> if <code>type_ids_size == 0</code> (admittedly a
    strange edge case). The offset, if non-zero,
    should be to the start of the <code>type_ids</code>
    section.
  </td>
</tr>
<tr>
  <td>proto_ids_size</td>
  <td>uint</td>
  <td>count of elements in the prototype identifiers list</td>
</tr>
<tr>
  <td>proto_ids_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the prototype identifiers list, or
    <code>0</code> if <code>proto_ids_size == 0</code> (admittedly a
    strange edge case). The offset, if non-zero,
    should be to the start of the <code>proto_ids</code>
    section.
  </td>
</tr>
<tr>
  <td>field_ids_size</td>
  <td>uint</td>
  <td>count of elements in the field identifiers list</td>
</tr>
<tr>
  <td>field_ids_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the field identifiers list, or
    <code>0</code> if <code>field_ids_size == 0</code>. The offset, if
    non-zero, should be to the start of the <code>field_ids</code>
    section.</td>
</td>
</tr>
<tr>
  <td>method_ids_size</td>
  <td>uint</td>
  <td>count of elements in the method identifiers list</td>
</tr>
<tr>
  <td>method_ids_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the method identifiers list, or
    <code>0</code> if <code>method_ids_size == 0</code>. The offset, if
    non-zero, should be to the start of the <code>method_ids</code>
    section.</td>
</tr>
<tr>
  <td>class_defs_size</td>
  <td>uint</td>
  <td>count of elements in the class definitions list</td>
</tr>
<tr>
  <td>class_defs_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the class definitions list, or
    <code>0</code> if <code>class_defs_size == 0</code> (admittedly a
    strange edge case). The offset, if non-zero,
    should be to the start of the <code>class_defs</code> section.
  </td>
</tr>
<tr>
  <td>data_size</td>
  <td>uint</td>
  <td>Size of <code>data</code> section in bytes. Must be an even
    multiple of sizeof(uint).</td>
</tr>
<tr>
  <td>data_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the start of the
   <code>data</code> section.
  </td>
</tr>
</tbody>
</table>

<h3 id="map-list">map_list</h3>
<h4>appears in the data section</h4>
<h4>referenced from header_item</h4>
<h4>alignment: 4 bytes</h4>

<p>This is a list of the entire contents of a file, in order. It
contains some redundancy with respect to the <code>header_item</code>
but is intended to be an easy form to use to iterate over an entire
file. A given type must appear at most once in a map, but there is no
restriction on what order types may appear in, other than the
restrictions implied by the rest of the format (e.g., a
<code>header</code> section must appear first, followed by a
<code>string_ids</code> section, etc.). Additionally, the map entries must
be ordered by initial offset and must not overlap.</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>size</td>
  <td>uint</td>
  <td>size of the list, in entries</td>
</tr>
<tr>
  <td>list</td>
  <td>map_item[size]</td>
  <td>elements of the list</td>
</tr>
</tbody>
</table>

<h3 id="map-item">map_item format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>type</td>
  <td>ushort</td>
  <td>type of the items; see table below</td>
</tr>
<tr>
  <td>unused</td>
  <td>ushort</td>
  <td><i>(unused)</i></td>
</tr>
<tr>
  <td>size</td>
  <td>uint</td>
  <td>count of the number of items to be found at the indicated offset</td>
</tr>
<tr>
  <td>offset</td>
  <td>uint</td>
  <td>offset from the start of the file to the items in question</td>
</tr>
</tbody>
</table>


<h3 id="type-codes">Type Codes</h3>

<table class="typeCodes">
<thead>
<tr>
  <th>Item Type</th>
  <th>Constant</th>
  <th>Value</th>
  <th>Item Size In Bytes</th>
</tr>
</thead>
<tbody>
<tr>
  <td>header_item</td>
  <td>TYPE_HEADER_ITEM</td>
  <td>0x0000</td>
  <td>0x70</td>
</tr>
<tr>
  <td>string_id_item</td>
  <td>TYPE_STRING_ID_ITEM</td>
  <td>0x0001</td>
  <td>0x04</td>
</tr>
<tr>
  <td>type_id_item</td>
  <td>TYPE_TYPE_ID_ITEM</td>
  <td>0x0002</td>
  <td>0x04</td>
</tr>
<tr>
  <td>proto_id_item</td>
  <td>TYPE_PROTO_ID_ITEM</td>
  <td>0x0003</td>
  <td>0x0c</td>
</tr>
<tr>
  <td>field_id_item</td>
  <td>TYPE_FIELD_ID_ITEM</td>
  <td>0x0004</td>
  <td>0x08</td>
</tr>
<tr>
  <td>method_id_item</td>
  <td>TYPE_METHOD_ID_ITEM</td>
  <td>0x0005</td>
  <td>0x08</td>
</tr>
<tr>
  <td>class_def_item</td>
  <td>TYPE_CLASS_DEF_ITEM</td>
  <td>0x0006</td>
  <td>0x20</td>
</tr>
<tr>
  <td>map_list</td>
  <td>TYPE_MAP_LIST</td>
  <td>0x1000</td>
  <td>4 + (item.size * 12)</td>
</tr>
<tr>
  <td>type_list</td>
  <td>TYPE_TYPE_LIST</td>
  <td>0x1001</td>
  <td>4 + (item.size * 2)</td>
</tr>
<tr>
  <td>annotation_set_ref_list</td>
  <td>TYPE_ANNOTATION_SET_REF_LIST</td>
  <td>0x1002</td>
  <td>4 + (item.size * 4)</td>
</tr>
<tr>
  <td>annotation_set_item</td>
  <td>TYPE_ANNOTATION_SET_ITEM</td>
  <td>0x1003</td>
  <td>4 + (item.size * 4)</td>
</tr>
<tr>
  <td>class_data_item</td>
  <td>TYPE_CLASS_DATA_ITEM</td>
  <td>0x2000</td>
  <td><i>implicit; must parse</i></td>
</tr>
<tr>
  <td>code_item</td>
  <td>TYPE_CODE_ITEM</td>
  <td>0x2001</td>
  <td><i>implicit; must parse</i></td>
</tr>
<tr>
  <td>string_data_item</td>
  <td>TYPE_STRING_DATA_ITEM</td>
  <td>0x2002</td>
  <td><i>implicit; must parse</i></td>
</tr>
<tr>
  <td>debug_info_item</td>
  <td>TYPE_DEBUG_INFO_ITEM</td>
  <td>0x2003</td>
  <td><i>implicit; must parse</i></td>
</tr>
<tr>
  <td>annotation_item</td>
  <td>TYPE_ANNOTATION_ITEM</td>
  <td>0x2004</td>
  <td><i>implicit; must parse</i></td>
</tr>
<tr>
  <td>encoded_array_item</td>
  <td>TYPE_ENCODED_ARRAY_ITEM</td>
  <td>0x2005</td>
  <td><i>implicit; must parse</i></td>
</tr>
<tr>
  <td>annotations_directory_item</td>
  <td>TYPE_ANNOTATIONS_DIRECTORY_ITEM</td>
  <td>0x2006</td>
  <td><i>implicit; must parse</i></td>
</tr>
</tbody>
</table>


<h3 id="string-item">string_id_item</h3>
<h4>appears in the string_ids section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>string_data_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the string data for this
    item. The offset should be to a location
    in the <code>data</code> section, and the data should be in the
    format specified by "<code>string_data_item</code>" below.
    There is no alignment requirement for the offset.
  </td>
</tr>
</tbody>
</table>

<h3 id="string-data-item">string_data_item</h3>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>utf16_size</td>
  <td>uleb128</td>
  <td>size of this string, in UTF-16 code units (which is the "string
    length" in many systems). That is, this is the decoded length of
    the string. (The encoded length is implied by the position of
    the <code>0</code> byte.)</td>
</tr>
<tr>
  <td>data</td>
  <td>ubyte[]</td>
  <td>a series of MUTF-8 code units (a.k.a. octets, a.k.a. bytes)
    followed by a byte of value <code>0</code>. See
    "MUTF-8 (Modified UTF-8) Encoding" above for details and
    discussion about the data format.
    <p class="note"><strong>Note:</strong> It is acceptable to have a string which includes
    (the encoded form of) UTF-16 surrogate code units (that is,
    <code>U+d800</code> &hellip; <code>U+dfff</code>)
    either in isolation or out-of-order with respect to the usual
    encoding of Unicode into UTF-16. It is up to higher-level uses of
    strings to reject such invalid encodings, if appropriate.</p>
  </td>
</tr>
</tbody>
</table>

<h3 id="type-id-item">type_id_item</h3>
<h4>appears in the type_ids section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>descriptor_idx</td>
  <td>uint</td>
  <td>index into the <code>string_ids</code> list for the descriptor
    string of this type. The string must conform to the syntax for
    <i>TypeDescriptor</i>, defined above.
  </td>
</tr>
</tbody>
</table>

<h3 id="proto-id-item">proto_id_item</h3>
<h4>appears in the proto_ids section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>shorty_idx</td>
  <td>uint</td>
  <td>index into the <code>string_ids</code> list for the short-form
    descriptor string of this prototype. The string must conform to the
    syntax for <i>ShortyDescriptor</i>, defined above, and must correspond
    to the return type and parameters of this item.
  </td>
</tr>
<tr>
  <td>return_type_idx</td>
  <td>uint</td>
  <td>index into the <code>type_ids</code> list for the return type
    of this prototype
  </td>
</tr>
<tr>
  <td>parameters_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the list of parameter types
    for this prototype, or <code>0</code> if this prototype has no
    parameters. This offset, if non-zero, should be in the
    <code>data</code> section, and the data there should be in the
    format specified by <code>"type_list"</code> below. Additionally, there
    should be no reference to the type <code>void</code> in the list.
  </td>
</tr>
</tbody>
</table>

<h3 id="field-id-item">field_id_item</h3>
<h4>appears in the field_ids section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>class_idx</td>
  <td>ushort</td>
  <td>index into the <code>type_ids</code> list for the definer of this
    field. This must be a class type, and not an array or primitive type.
  </td>
</tr>
<tr>
  <td>type_idx</td>
  <td>ushort</td>
  <td>index into the <code>type_ids</code> list for the type of
    this field
  </td>
</tr>
<tr>
  <td>name_idx</td>
  <td>uint</td>
  <td>index into the <code>string_ids</code> list for the name of this
    field. The string must conform to the syntax for <i>MemberName</i>,
    defined above.
  </td>
</tr>
</tbody>
</table>

<h3 id="method-id-item">method_id_item</h3>
<h4>appears in the method_ids section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>class_idx</td>
  <td>ushort</td>
  <td>index into the <code>type_ids</code> list for the definer of this
    method. This must be a class or array type, and not a primitive type.
  </td>
</tr>
<tr>
  <td>proto_idx</td>
  <td>ushort</td>
  <td>index into the <code>proto_ids</code> list for the prototype of
    this method
  </td>
</tr>
<tr>
  <td>name_idx</td>
  <td>uint</td>
  <td>index into the <code>string_ids</code> list for the name of this
    method. The string must conform to the syntax for <i>MemberName</i>,
    defined above.
  </td>
</tr>
</tbody>
</table>

<h3 id="class-def-item">class_def_item</h3>
<h4>appears in the class_defs section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>class_idx</td>
  <td>uint</td>
  <td>index into the <code>type_ids</code> list for this class.
    This must be a class type, and not an array or primitive type.
  </td>
</tr>
<tr>
  <td>access_flags</td>
  <td>uint</td>
  <td>access flags for the class (<code>public</code>, <code>final</code>,
    etc.). See "<code>access_flags</code> Definitions" for details.
  </td>
</tr>
<tr>
  <td>superclass_idx</td>
  <td>uint</td>
  <td>index into the <code>type_ids</code> list for the superclass, or
    the constant value <code>NO_INDEX</code> if this class has no
    superclass (i.e., it is a root class such as <code>Object</code>).
    If present, this must be a class type, and not an array or primitive type.
  </td>
</tr>
<tr>
  <td>interfaces_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the list of interfaces, or
    <code>0</code> if there are none. This offset
    should be in the <code>data</code> section, and the data
    there should be in the format specified by
    "<code>type_list</code>" below. Each of the elements of the list
    must be a class type (not an array or primitive type), and there
    must not be any duplicates.
  </td>
</tr>
<tr>
  <td>source_file_idx</td>
  <td>uint</td>
  <td>index into the <code>string_ids</code> list for the name of the
    file containing the original source for (at least most of) this class,
    or the special value <code>NO_INDEX</code> to represent a lack of
    this information. The <code>debug_info_item</code> of any given method
    may override this source file, but the expectation is that most classes
    will only come from one source file.
  </td>
</tr>
<tr>
  <td>annotations_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the annotations structure
    for this class, or <code>0</code> if there are no annotations on
    this class. This offset, if non-zero, should be in the
    <code>data</code> section, and the data there should be in
    the format specified by "<code>annotations_directory_item</code>" below,
    with all items referring to this class as the definer.
  </td>
</tr>
<tr>
  <td>class_data_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the associated
    class data for this item, or <code>0</code> if there is no class
    data for this class. (This may be the case, for example, if this class
    is a marker interface.) The offset, if non-zero, should be in the
    <code>data</code> section, and the data there should be in the
    format specified by "<code>class_data_item</code>" below, with all
    items referring to this class as the definer.
  </td>
</tr>
<tr>
  <td>static_values_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the list of initial
    values for <code>static</code> fields, or <code>0</code> if there
    are none (and all <code>static</code> fields are to be initialized with
    <code>0</code> or <code>null</code>). This offset should be in the
    <code>data</code> section, and the data there should be in the
    format specified by "<code>encoded_array_item</code>" below. The size
    of the array must be no larger than the number of <code>static</code>
    fields declared by this class, and the elements correspond to the
    <code>static</code> fields in the same order as declared in the
    corresponding <code>field_list</code>. The type of each array
    element must match the declared type of its corresponding field.
    If there are fewer elements in the array than there are
    <code>static</code> fields, then the leftover fields are initialized
    with a type-appropriate <code>0</code> or <code>null</code>.
  </td>
</tr>
</tbody>
</table>

<h3 id="class-data-item">class_data_item</h3>
<h4>referenced from class_def_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>static_fields_size</td>
  <td>uleb128</td>
  <td>the number of static fields defined in this item</td>
</tr>
<tr>
  <td>instance_fields_size</td>
  <td>uleb128</td>
  <td>the number of instance fields defined in this item</td>
</tr>
<tr>
  <td>direct_methods_size</td>
  <td>uleb128</td>
  <td>the number of direct methods defined in this item</td>
</tr>
<tr>
  <td>virtual_methods_size</td>
  <td>uleb128</td>
  <td>the number of virtual methods defined in this item</td>
</tr>
<tr>
  <td>static_fields</td>
  <td>encoded_field[static_fields_size]</td>
  <td>the defined static fields, represented as a sequence of
    encoded elements. The fields must be sorted by
    <code>field_idx</code> in increasing order.
  </td>
</tr>
<tr>
  <td>instance_fields</td>
  <td>encoded_field[instance_fields_size]</td>
  <td>the defined instance fields, represented as a sequence of
    encoded elements. The fields must be sorted by
    <code>field_idx</code> in increasing order.
  </td>
</tr>
<tr>
  <td>direct_methods</td>
  <td>encoded_method[direct_methods_size]</td>
  <td>the defined direct (any of <code>static</code>, <code>private</code>,
    or constructor) methods, represented as a sequence of
    encoded elements. The methods must be sorted by
    <code>method_idx</code> in increasing order.
  </td>
</tr>
<tr>
  <td>virtual_methods</td>
  <td>encoded_method[virtual_methods_size]</td>
  <td>the defined virtual (none of <code>static</code>, <code>private</code>,
    or constructor) methods, represented as a sequence of
    encoded elements. This list should <i>not</i> include inherited
    methods unless overridden by the class that this item represents. The
    methods must be sorted by <code>method_idx</code> in increasing order.
  </td>
</tr>
</tbody>
</table>

<p class="note"><strong>Note:</strong> All elements' <code>field_id</code>s and
<code>method_id</code>s must refer to the same defining class.</p>

<h3 id="encoded-field-format">encoded_field format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>field_idx_diff</td>
  <td>uleb128</td>
  <td>index into the <code>field_ids</code> list for the identity of this
    field (includes the name and descriptor), represented as a difference
    from the index of previous element in the list. The index of the
    first element in a list is represented directly.
  </td>
</tr>
<tr>
  <td>access_flags</td>
  <td>uleb128</td>
  <td>access flags for the field (<code>public</code>, <code>final</code>,
    etc.). See "<code>access_flags</code> Definitions" for details.
  </td>
</tr>
</tbody>
</table>

<h3 id="encoded-method">encoded_method format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>method_idx_diff</td>
  <td>uleb128</td>
  <td>index into the <code>method_ids</code> list for the identity of this
    method (includes the name and descriptor), represented as a difference
    from the index of previous element in the list. The index of the
    first element in a list is represented directly.
  </td>
</tr>
<tr>
  <td>access_flags</td>
  <td>uleb128</td>
  <td>access flags for the method (<code>public</code>, <code>final</code>,
    etc.). See "<code>access_flags</code> Definitions" for details.
  </td>
</tr>
<tr>
  <td>code_off</td>
  <td>uleb128</td>
  <td>offset from the start of the file to the code structure for this
    method, or <code>0</code> if this method is either <code>abstract</code>
    or <code>native</code>. The offset should be to a location in the
    <code>data</code> section. The format of the data is specified by
    "<code>code_item</code>" below.
  </td>
</tr>
</tbody>
</table>

<h3 id="type-list">type_list</h3>
<h4>referenced from class_def_item and proto_id_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>size</td>
  <td>uint</td>
  <td>size of the list, in entries</td>
</tr>
<tr>
  <td>list</td>
  <td>type_item[size]</td>
  <td>elements of the list</td>
</tr>
</tbody>
</table>

<h3 id="type-item-format">type_item format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>type_idx</td>
  <td>ushort</td>
  <td>index into the <code>type_ids</code> list</td>
</tr>
</tbody>
</table>

<h3 id="code-item">code_item</h3>
<h4>referenced from encoded_method</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>registers_size</td>
  <td>ushort</td>
  <td>the number of registers used by this code</td>
</tr>
<tr>
  <td>ins_size</td>
  <td>ushort</td>
  <td>the number of words of incoming arguments to the method that this
    code is for</td>
</tr>
<tr>
  <td>outs_size</td>
  <td>ushort</td>
  <td>the number of words of outgoing argument space required by this
    code for method invocation
  </td>
</tr>
<tr>
  <td>tries_size</td>
  <td>ushort</td>
  <td>the number of <code>try_item</code>s for this instance. If non-zero,
    then these appear as the <code>tries</code> array just after the
    <code>insns</code> in this instance.
  </td>
</tr>
<tr>
  <td>debug_info_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the debug info (line numbers +
    local variable info) sequence for this code, or <code>0</code> if
    there simply is no information. The offset, if non-zero, should be
    to a location in the <code>data</code> section. The format of
    the data is specified by "<code>debug_info_item</code>" below.
  </td>
</tr>
<tr>
  <td>insns_size</td>
  <td>uint</td>
  <td>size of the instructions list, in 16-bit code units</td>
</tr>
<tr>
  <td>insns</td>
  <td>ushort[insns_size]</td>
  <td>actual array of bytecode. The format of code in an <code>insns</code>
    array is specified by the companion document
    <a href="dalvik-bytecode.html">Dalvik bytecode</a>. Note
    that though this is defined as an array of <code>ushort</code>, there
    are some internal structures that prefer four-byte alignment. Also,
    if this happens to be in an endian-swapped file, then the swapping is
    <i>only</i> done on individual <code>ushort</code>s and not on the
    larger internal structures.
  </td>
</tr>
<tr>
  <td>padding</td>
  <td>ushort <i>(optional)</i> = 0</td>
  <td>two bytes of padding to make <code>tries</code> four-byte aligned.
    This element is only present if <code>tries_size</code> is non-zero
    and <code>insns_size</code> is odd.
  </td>
</tr>
<tr>
  <td>tries</td>
  <td>try_item[tries_size] <i>(optional)</i></td>
  <td>array indicating where in the code exceptions are caught and
    how to handle them. Elements of the array must be non-overlapping in
    range and in order from low to high address. This element is only
    present if <code>tries_size</code> is non-zero.
  </td>
</tr>
<tr>
  <td>handlers</td>
  <td>encoded_catch_handler_list <i>(optional)</i></td>
  <td>bytes representing a list of lists of catch types and associated
    handler addresses. Each <code>try_item</code> has a byte-wise offset
    into this structure. This element is only present if
    <code>tries_size</code> is non-zero.
  </td>
</tr>
</tbody>
</table>

<h3 id="type-item">try_item format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>start_addr</td>
  <td>uint</td>
  <td>start address of the block of code covered by this entry. The address
    is a count of 16-bit code units to the start of the first covered
    instruction.
  </td>
</tr>
<tr>
  <td>insn_count</td>
  <td>ushort</td>
  <td>number of 16-bit code units covered by this entry. The last code
    unit covered (inclusive) is <code>start_addr + insn_count - 1</code>.
  </td>
</tr>
<tr>
  <td>handler_off</td>
  <td>ushort</td>
  <td>offset in bytes from the start of the associated
    <code>encoded_catch_hander_list</code> to the
    <code>encoded_catch_handler</code> for this entry. This must be an
    offset to the start of an <code>encoded_catch_handler</code>.
  </td>
</tr>
</tbody>
</table>

<h3 id="encoded-catch-handlerlist">encoded_catch_handler_list format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>size</td>
  <td>uleb128</td>
  <td>size of this list, in entries</td>
</tr>
<tr>
  <td>list</td>
  <td>encoded_catch_handler[handlers_size]</td>
  <td>actual list of handler lists, represented directly (not as offsets),
    and concatenated sequentially</td>
</tr>
</tbody>
</table>

<h3 id="encoded-catch-handler">encoded_catch_handler format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>size</td>
  <td>sleb128</td>
  <td>number of catch types in this list. If non-positive, then this is
    the negative of the number of catch types, and the catches are followed
    by a catch-all handler. For example: A <code>size</code> of <code>0</code>
    means that there is a catch-all but no explicitly typed catches.
    A <code>size</code> of <code>2</code> means that there are two explicitly
    typed catches and no catch-all. And a <code>size</code> of <code>-1</code>
    means that there is one typed catch along with a catch-all.
  </td>
</tr>
<tr>
  <td>handlers</td>
  <td>encoded_type_addr_pair[abs(size)]</td>
  <td>stream of <code>abs(size)</code> encoded items, one for each caught
    type, in the order that the types should be tested.
  </td>
</tr>
<tr>
  <td>catch_all_addr</td>
  <td>uleb128 <i>(optional)</i></td>
  <td>bytecode address of the catch-all handler. This element is only
    present if <code>size</code> is non-positive.
  </td>
</tr>
</tbody>
</table>

<h3 id="encoded-type-addr-pair">encoded_type_addr_pair format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>type_idx</td>
  <td>uleb128</td>
  <td>index into the <code>type_ids</code> list for the type of the
    exception to catch
  </td>
</tr>
<tr>
  <td>addr</td>
  <td>uleb128</td>
  <td>bytecode address of the associated exception handler</td>
</tr>
</tbody>
</table>

<h3 id="debug-info-item">debug_info_item</h3>
<h4>referenced from code_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>

<p>Each <code>debug_info_item</code> defines a DWARF3-inspired byte-coded
state machine that, when interpreted, emits the positions
table and (potentially) the local variable information for a
<code>code_item</code>. The sequence begins with a variable-length
header (the length of which depends on the number of method
parameters), is followed by the state machine bytecodes, and ends
with an <code>DBG_END_SEQUENCE</code> byte.</p>

<p>The state machine consists of five registers. The
<code>address</code> register represents the instruction offset in the
associated <code>insns_item</code> in 16-bit code units. The
<code>address</code> register starts at <code>0</code> at the beginning of each
<code>debug_info</code> sequence and must only monotonically increase.
The <code>line</code> register represents what source line number
should be associated with the next positions table entry emitted by
the state machine. It is initialized in the sequence header, and may
change in positive or negative directions but must never be less than
<code>1</code>. The <code>source_file</code> register represents the
source file that the line number entries refer to. It is initialized to
the value of <code>source_file_idx</code> in <code>class_def_item</code>.
The other two variables, <code>prologue_end</code> and
<code>epilogue_begin</code>, are boolean flags (initialized to
<code>false</code>) that indicate whether the next position emitted
should be considered a method prologue or epilogue. The state machine
must also track the name and type of the last local variable live in
each register for the <code>DBG_RESTART_LOCAL</code> code.</p>

<p>The header is as follows:</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
 <td>line_start</td>
 <td>uleb128</td>
 <td>the initial value for the state machine's <code>line</code> register.
    Does not represent an actual positions entry.
 </td>
</tr>
<tr>
 <td>parameters_size</td>
 <td>uleb128</td>
 <td>the number of parameter names that are encoded. There should be
   one per method parameter, excluding an instance method's <code>this</code>,
   if any.
 </td>
</tr>
<tr>
 <td>parameter_names</td>
 <td>uleb128p1[parameters_size]</td>
 <td>string index of the method parameter name. An encoded value of
   <code>NO_INDEX</code> indicates that no name
   is available for the associated parameter. The type descriptor
   and signature are implied from the method descriptor and signature.
 </td>
</tr>
</tbody>
</table>

<p>The byte code values are as follows:</p>

<table class="debugByteCode">
<thead>
<tr>
  <th>Name</th>
  <th>Value</th>
  <th>Format</th>
  <th>Arguments</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>DBG_END_SEQUENCE</td>
  <td>0x00</td>
  <td></td>
  <td><i>(none)</i></td>
  <td>terminates a debug info sequence for a <code>code_item</code></td>
</tr>
<tr>
  <td>DBG_ADVANCE_PC</td>
  <td>0x01</td>
  <td>uleb128&nbsp;addr_diff</td>
  <td><code>addr_diff</code>: amount to add to address register</td>
  <td>advances the address register without emitting a positions entry</td>
</tr>
<tr>
  <td>DBG_ADVANCE_LINE</td>
  <td>0x02</td>
  <td>sleb128&nbsp;line_diff</td>
  <td><code>line_diff</code>: amount to change line register by</td>
  <td>advances the line register without emitting a positions entry</td>
</tr>
<tr>
  <td>DBG_START_LOCAL</td>
  <td>0x03</td>
  <td>uleb128&nbsp;register_num<br/>
    uleb128p1&nbsp;name_idx<br/>
    uleb128p1&nbsp;type_idx
  </td>
  <td><code>register_num</code>: register that will contain local<br/>
    <code>name_idx</code>: string index of the name<br/>
    <code>type_idx</code>: type index of the type
  </td>
  <td>introduces a local variable at the current address. Either
    <code>name_idx</code> or <code>type_idx</code> may be
    <code>NO_INDEX</code> to indicate that that value is unknown.
  </td>
</tr>
<tr>
  <td>DBG_START_LOCAL_EXTENDED</td>
  <td>0x04</td>
  <td>uleb128&nbsp;register_num<br/>
    uleb128p1&nbsp;name_idx<br/>
    uleb128p1&nbsp;type_idx<br/>
    uleb128p1&nbsp;sig_idx
  </td>
  <td><code>register_num</code>: register that will contain local<br/>
    <code>name_idx</code>: string index of the name<br/>
    <code>type_idx</code>: type index of the type<br/>
    <code>sig_idx</code>: string index of the type signature
  </td>
  <td>introduces a local with a type signature at the current address.
    Any of <code>name_idx</code>, <code>type_idx</code>, or
    <code>sig_idx</code> may be <code>NO_INDEX</code>
    to indicate that that value is unknown. (If <code>sig_idx</code> is
    <code>-1</code>, though, the same data could be represented more
    efficiently using the opcode <code>DBG_START_LOCAL</code>.)
    <p class="note"><strong>Note:</strong> See the discussion under
    "<code>dalvik.annotation.Signature</code>" below for caveats about
    handling signatures.</p>
  </td>
</tr>
<tr>
  <td>DBG_END_LOCAL</td>
  <td>0x05</td>
  <td>uleb128&nbsp;register_num</td>
  <td><code>register_num</code>: register that contained local</td>
  <td>marks a currently-live local variable as out of scope at the current
    address
  </td>
</tr>
<tr>
  <td>DBG_RESTART_LOCAL</td>
  <td>0x06</td>
  <td>uleb128&nbsp;register_num</td>
  <td><code>register_num</code>: register to restart</td>
  <td>re-introduces a local variable at the current address. The name
    and type are the same as the last local that was live in the specified
    register.
  </td>
</tr>
<tr>
  <td>DBG_SET_PROLOGUE_END</td>
  <td>0x07</td>
  <td></td>
  <td><i>(none)</i></td>
  <td>sets the <code>prologue_end</code> state machine register,
    indicating that the next position entry that is added should be
    considered the end of a method prologue (an appropriate place for
    a method breakpoint). The <code>prologue_end</code> register is
    cleared by any special (<code>&gt;= 0x0a</code>) opcode.
  </td>
</tr>
<tr>
  <td>DBG_SET_EPILOGUE_BEGIN</td>
  <td>0x08</td>
  <td></td>
  <td><i>(none)</i></td>
  <td>sets the <code>epilogue_begin</code> state machine register,
    indicating that the next position entry that is added should be
    considered the beginning of a method epilogue (an appropriate place
    to suspend execution before method exit).
    The <code>epilogue_begin</code> register is cleared by any special
    (<code>&gt;= 0x0a</code>) opcode.
  </td>
</tr>
<tr>
  <td>DBG_SET_FILE</td>
  <td>0x09</td>
  <td>uleb128p1&nbsp;name_idx</td>
  <td><code>name_idx</code>: string index of source file name;
    <code>NO_INDEX</code> if unknown
  </td>
  <td>indicates that all subsequent line number entries make reference to this
    source file name, instead of the default name specified in
    <code>code_item</code>
  </td>
</tr>
<tr>
  <td><i>Special Opcodes</i></td>
  <!-- When updating the range below, make sure to search for other
  instances of 0x0a in this section. -->
  <td>0x0a&hellip;0xff</td>
  <td></td>
  <td><i>(none)</i></td>
  <td>advances the <code>line</code> and <code>address</code> registers,
    emits a position entry, and clears <code>prologue_end</code> and
    <code>epilogue_begin</code>. See below for description.
  </td>
</tr>
</tbody>
</table>

<h3 id="opcodes">Special opcodes</h3>

<p>Opcodes with values between <code>0x0a</code> and <code>0xff</code>
(inclusive) move both the <code>line</code> and <code>address</code>
registers by a small amount and then emit a new position table entry.
The formula for the increments are as follows:</p>

<pre>
DBG_FIRST_SPECIAL = 0x0a  // the smallest special opcode
DBG_LINE_BASE   = -4      // the smallest line number increment
DBG_LINE_RANGE  = 15      // the number of line increments represented

adjusted_opcode = opcode - DBG_FIRST_SPECIAL

line += DBG_LINE_BASE + (adjusted_opcode % DBG_LINE_RANGE)
address += (adjusted_opcode / DBG_LINE_RANGE)
</pre>

<h3 id="annotations-directory">annotations_directory_item</h3>
<h4>referenced from class_def_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>class_annotations_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the annotations made directly
    on the class, or <code>0</code> if the class has no direct annotations.
    The offset, if non-zero, should be to a location in the
    <code>data</code> section. The format of the data is specified
    by "<code>annotation_set_item</code>" below.
  </td>
</tr>
<tr>
  <td>fields_size</td>
  <td>uint</td>
  <td>count of fields annotated by this item</td>
</tr>
<tr>
  <td>annotated_methods_size</td>
  <td>uint</td>
  <td>count of methods annotated by this item</td>
</tr>
<tr>
  <td>annotated_parameters_size</td>
  <td>uint</td>
  <td>count of method parameter lists annotated by this item</td>
</tr>
<tr>
  <td>field_annotations</td>
  <td>field_annotation[fields_size] <i>(optional)</i></td>
  <td>list of associated field annotations. The elements of the list must
    be sorted in increasing order, by <code>field_idx</code>.
  </td>
</tr>
<tr>
  <td>method_annotations</td>
  <td>method_annotation[methods_size] <i>(optional)</i></td>
  <td>list of associated method annotations. The elements of the list must
    be sorted in increasing order, by <code>method_idx</code>.
  </td>
</tr>
<tr>
  <td>parameter_annotations</td>
  <td>parameter_annotation[parameters_size] <i>(optional)</i></td>
  <td>list of associated method parameter annotations. The elements of the
    list must be sorted in increasing order, by <code>method_idx</code>.
  </td>
</tr>
</tbody>
</table>

<p class="note"><strong>Note:</strong> All elements' <code>field_id</code>s and
<code>method_id</code>s must refer to the same defining class.</p>

<h3 id="field-annotation">field_annotation format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>field_idx</td>
  <td>uint</td>
  <td>index into the <code>field_ids</code> list for the identity of the
    field being annotated
  </td>
</tr>
<tr>
  <td>annotations_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the list of annotations for
    the field. The offset should be to a location in the <code>data</code>
    section. The format of the data is specified by
    "<code>annotation_set_item</code>" below.
  </td>
</tr>
</tbody>
</table>

<h3 id="method-annotation">method_annotation format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>method_idx</td>
  <td>uint</td>
  <td>index into the <code>method_ids</code> list for the identity of the
    method being annotated
  </td>
</tr>
<tr>
  <td>annotations_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the list of annotations for
    the method. The offset should be to a location in the
    <code>data</code> section. The format of the data is specified by
    "<code>annotation_set_item</code>" below.
  </td>
</tr>
</tbody>
</table>

<h3 id="parameter-annotation">parameter_annotation format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>method_idx</td>
  <td>uint</td>
  <td>index into the <code>method_ids</code> list for the identity of the
    method whose parameters are being annotated
  </td>
</tr>
<tr>
  <td>annotations_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the list of annotations for
    the method parameters. The offset should be to a location in the
    <code>data</code> section. The format of the data is specified by
    "<code>annotation_set_ref_list</code>" below.
  </td>
</tr>
</tbody>
</table>

<h3 id="set-ref-list">annotation_set_ref_list</h3>
<h4>referenced from parameter_annotations_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>size</td>
  <td>uint</td>
  <td>size of the list, in entries</td>
</tr>
<tr>
  <td>list</td>
  <td>annotation_set_ref_item[size]</td>
  <td>elements of the list</td>
</tr>
</tbody>
</table>

<h3 id="set-ref-item">annotation_set_ref_item format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>annotations_off</td>
  <td>uint</td>
  <td>offset from the start of the file to the referenced annotation set
    or <code>0</code> if there are no annotations for this element.
    The offset, if non-zero, should be to a location in the <code>data</code>
    section. The format of the data is specified by
    "<code>annotation_set_item</code>" below.
  </td>
</tr>
</tbody>
</table>

<h3 id="annotation-set-item">annotation_set_item</h3>
<h4>referenced from annotations_directory_item, field_annotations_item, 
method_annotations_item, and annotation_set_ref_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>size</td>
  <td>uint</td>
  <td>size of the set, in entries</td>
</tr>
<tr>
  <td>entries</td>
  <td>annotation_off_item[size]</td>
  <td>elements of the set. The elements must be sorted in increasing order,
    by <code>type_idx</code>.
  </td>
</tr>
</tbody>
</table>

<h3 id="off-item">annotation_off_item format</h3>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>annotation_off</td>
  <td>uint</td>
  <td>offset from the start of the file to an annotation.
    The offset should be to a location in the <code>data</code> section,
    and the format of the data at that location is specified by
    "<code>annotation_item</code>" below.
  </td>
</tr>
</tbody>
</table>


<h3 id="annotation-item">annotation_item</h3>
<h4>referenced from annotation_set_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>visibility</td>
  <td>ubyte</td>
  <td>intended visibility of this annotation (see below)</td>
</tr>
<tr>
  <td>annotation</td>
  <td>encoded_annotation</td>
  <td>encoded annotation contents, in the format described by
    "<code>encoded_annotation</code> format" under
    "<code>encoded_value</code> encoding" above.
  </td>
</tr>
</tbody>
</table>

<h3 id="visibility">Visibility values</h3>

<p>These are the options for the <code>visibility</code> field in an
<code>annotation_item</code>:</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Value</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>VISIBILITY_BUILD</td>
  <td>0x00</td>
  <td>intended only to be visible at build time (e.g., during compilation
    of other code)
  </td>
</tr>
<tr>
  <td>VISIBILITY_RUNTIME</td>
  <td>0x01</td>
  <td>intended to visible at runtime</td>
</tr>
<tr>
  <td>VISIBILITY_SYSTEM</td>
  <td>0x02</td>
  <td>intended to visible at runtime, but only to the underlying system
    (and not to regular user code)
  </td>
</tr>
</tbody>
</table>

<h3 id="encoded-array-item">encoded_array_item</h3>
<h4>referenced from class_def_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>value</td>
  <td>encoded_array</td>
  <td>bytes representing the encoded array value, in the format specified
    by "<code>encoded_array</code> Format" under "<code>encoded_value</code>
    Encoding" above.
  </td>
</tr>
</tbody>
</table>

<h2 id="system-annotation">System annotations</h2>

<p>System annotations are used to represent various pieces of reflective
information about classes (and methods and fields). This information is
generally only accessed indirectly by client (non-system) code.</p>

<p>System annotations are represented in <code>.dex</code> files as
annotations with visibility set to <code>VISIBILITY_SYSTEM</code>.

<h3 id="dalvik-annotation-default">dalvik.annotation.AnnotationDefault</h3>
<h4>appears on methods in annotation interfaces</h4>

<p>An <code>AnnotationDefault</code> annotation is attached to each
annotation interface which wishes to indicate default bindings.</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>value</td>
  <td>Annotation</td>
  <td>the default bindings for this annotation, represented as an annotation
    of this type. The annotation need not include all names defined by the
    annotation; missing names simply do not have defaults.
  </td>
</tr>
</tbody>
</table>

<h3 id="dalvik-enclosingclass">dalvik.annotation.EnclosingClass</h3>
<h4>appears on classes</h4>

<p>An <code>EnclosingClass</code> annotation is attached to each class
which is either defined as a member of another class, per se, or is
anonymous but not defined within a method body (e.g., a synthetic
inner class). Every class that has this annotation must also have an
<code>InnerClass</code> annotation. Additionally, a class must not have
both an <code>EnclosingClass</code> and an
<code>EnclosingMethod</code> annotation.</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>value</td>
  <td>Class</td>
  <td>the class which most closely lexically scopes this class</td>
</tr>
</tbody>
</table>

<h3 id="dalvik-enclosingmethod">dalvik.annotation.EnclosingMethod</h3>
<h4>appears on classes</h4>

<p>An <code>EnclosingMethod</code> annotation is attached to each class
which is defined inside a method body. Every class that has this
annotation must also have an <code>InnerClass</code> annotation.
Additionally, a class must not have both an <code>EnclosingClass</code>
and an <code>EnclosingMethod</code> annotation.</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>value</td>
  <td>Method</td>
  <td>the method which most closely lexically scopes this class</td>
</tr>
</tbody>
</table>

<h3 id="dalvik-innerclass">dalvik.annotation.InnerClass</h3>
<h4>appears on classes</h4>

<p>An <code>InnerClass</code> annotation is attached to each class
which is defined in the lexical scope of another class's definition.
Any class which has this annotation must also have <i>either</i> an
<code>EnclosingClass</code> annotation <i>or</i> an
<code>EnclosingMethod</code> annotation.</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>name</td>
  <td>String</td>
  <td>the originally declared simple name of this class (not including any
    package prefix). If this class is anonymous, then the name is
    <code>null</code>.
  </td>
</tr>
<tr>
  <td>accessFlags</td>
  <td>int</td>
  <td>the originally declared access flags of the class (which may differ
    from the effective flags because of a mismatch between the execution
    models of the source language and target virtual machine)
  </td>
</tr>
</tbody>
</table>

<h3 id="dalvik-memberclasses">dalvik.annotation.MemberClasses</h3>
<h4>appears on classes</h4>

<p>A <code>MemberClasses</code> annotation is attached to each class
which declares member classes. (A member class is a direct inner class
that has a name.)</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>value</td>
  <td>Class[]</td>
  <td>array of the member classes</td>
</tr>
</tbody>
</table>

<h3 id="dalvik-signature">dalvik.annotation.Signature</h3>
<h4>appears on classes, fields, and methods</h4>

<p>A <code>Signature</code> annotation is attached to each class,
field, or method which is defined in terms of a more complicated type
than is representable by a <code>type_id_item</code>. The
<code>.dex</code> format does not define the format for signatures; it
is merely meant to be able to represent whatever signatures a source
language requires for successful implementation of that language's
semantics. As such, signatures are not generally parsed (or verified)
by virtual machine implementations. The signatures simply get handed
off to higher-level APIs and tools (such as debuggers). Any use of a
signature, therefore, should be written so as not to make any
assumptions about only receiving valid signatures, explicitly guarding
itself against the possibility of coming across a syntactically
invalid signature.</p>

<p>Because signature strings tend to have a lot of duplicated content,
a <code>Signature</code> annotation is defined as an <i>array</i> of
strings, where duplicated elements naturally refer to the same
underlying data, and the signature is taken to be the concatenation of
all the strings in the array. There are no rules about how to pull
apart a signature into separate strings; that is entirely up to the
tools that generate <code>.dex</code> files.</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>value</td>
  <td>String[]</td>
  <td>the signature of this class or member, as an array of strings that
    is to be concatenated together</td>
</tr>
</tbody>
</table>

<h3 id="dalvik-throws">dalvik.annotation.Throws</h3>
<h4>appears on methods</h4>

<p>A <code>Throws</code> annotation is attached to each method which is
declared to throw one or more exception types.</p>

<table class="format">
<thead>
<tr>
  <th>Name</th>
  <th>Format</th>
  <th>Description</th>
</tr>
</thead>
<tbody>
<tr>
  <td>value</td>
  <td>Class[]</td>
  <td>the array of exception types thrown</td>
</tr>
</tbody>
</table>
