<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>
<title>.dex &mdash; Dalvik Executable Format</title>
<link rel=stylesheet href="dex-format.css">
</head>

<body>

<h1 class="title"><code>.dex</code> &mdash; Dalvik Executable Format</h1>
<p>Copyright &copy; 2007 The Android Open Source Project

<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>

<h1>Guide To Types</h1>

<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>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>

<h1>Overall File Layout</h1>

<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>

<h1>Bitfield, String, and Constant Definitions</h1>

<h2><code>DEX_FILE_MAGIC</code></h2>
<h4>embedded in <code>header_item</code></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><b>Note:</b> 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>

<h2><code>ENDIAN_CONSTANT</code> and <code>REVERSE_ENDIAN_CONSTANT</code></h2>
<h4>embedded in <code>header_item</code></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>

<h2><code>NO_INDEX</code></h2>
<h4>embedded in <code>class_def_item</code> and
<code>debug_info_item</code></h4>

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

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

<p><b>Also Note:</b> 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>

<h2><code>access_flags</code> Definitions</h2>
<h4>embedded in <code>class_def_item</code>,
<code>encoded_field</code>, <code>encoded_method</code>, and
<code>InnerClass</code></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. <b>Note:</b> This is only valid to set when
    <code>ACC_NATIVE</code> is also set.</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>. <b>Note:</b> This has no effect on
    execution (other than in reflection of this flag, per se).
  </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>

<h2>MUTF-8 (Modified UTF-8) Encoding</h2>

<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>

<h2><code>encoded_value</code> Encoding</h2>
<h4>embedded in <code>annotation_element</code> and
<code>encoded_array_item</code></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>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><code>encoded_array</code> 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><code>encoded_annotation</code> 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><code>annotation_element</code> 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>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><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><i>MemberName</i></h3>
<h4>used by <code>field_id_item</code> and <code>method_id_item</code></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><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><i>TypeDescriptor</i></h3>
<h4>used by <code>type_id_item</code></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><i>ShortyDescriptor</i></h3>
<h4>used by <code>proto_id_item</code></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>

<h2><i>TypeDescriptor</i> Semantics</h2>

<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>

<h1>Items and Related Structures</h1>

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

<h2><code>header_item</code></h2>
<h4>appears in the <code>header</code> 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>

<h2><code>map_list</code></h2>
<h4>appears in the <code>data</code> section</h4>
<h4>referenced from <code>header_item</code></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><code>map_item</code> 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>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>


<h2><code>string_id_item</code></h2>
<h4>appears in the <code>string_ids</code> 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>

<h2><code>string_data_item</code></h2>
<h4>appears in the <code>data</code> 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><b>Note:</b> 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>

<h2><code>type_id_item</code></h2>
<h4>appears in the <code>type_ids</code> 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>

<h2><code>proto_id_item</code></h2>
<h4>appears in the <code>proto_ids</code> 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>

<h2><code>field_id_item</code></h2>
<h4>appears in the <code>field_ids</code> 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>

<h2><code>method_id_item</code></h2>
<h4>appears in the <code>method_ids</code> 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>

<h2><code>class_def_item</code></h2>
<h4>appears in the <code>class_defs</code> 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>

<h2><code>class_data_item</code></h2>
<h4>referenced from <code>class_def_item</code></h4>
<h4>appears in the <code>data</code> 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><b>Note:</b> All elements' <code>field_id</code>s and
<code>method_id</code>s must refer to the same defining class.</p>

<h3><code>encoded_field</code> 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><code>encoded_method</code> 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>

<h2><code>type_list</code></h2>
<h4>referenced from <code>class_def_item</code> and
<code>proto_id_item</code></h4>
<h4>appears in the <code>data</code> 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><code>type_item</code> 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>

<h2><code>code_item</code></h2>
<h4>referenced from <code>encoded_method</code></h4>
<h4>appears in the <code>data</code> 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">"Bytecode for the Dalvik VM"</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><code>try_item</code> 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><code>encoded_catch_handler_list</code> 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><code>encoded_catch_handler</code> 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><code>encoded_type_addr_pair</code> 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>

<h2><code>debug_info_item</code></h2>
<h4>referenced from <code>code_item</code></h4>
<h4>appears in the <code>data</code> 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><b>Note:</b> 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>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>

<h2><code>annotations_directory_item</code></h2>
<h4>referenced from <code>class_def_item</code></h4>
<h4>appears in the <code>data</code> 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><b>Note:</b> All elements' <code>field_id</code>s and
<code>method_id</code>s must refer to the same defining class.</p>

<h3><code>field_annotation</code> 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><code>method_annotation</code> 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><code>parameter_annotation</code> Format</h2>

<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>

<h2><code>annotation_set_ref_list</code></h2>
<h4>referenced from <code>parameter_annotations_item</code></h4>
<h4>appears in the <code>data</code> 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><code>annotation_set_ref_item</code> 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>

<h2><code>annotation_set_item</code></h2>
<h4>referenced from <code>annotations_directory_item</code>,
<code>field_annotations_item</code>,
<code>method_annotations_item</code>, and
<code>annotation_set_ref_item</code></h4>
<h4>appears in the <code>data</code> 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><code>annotation_off_item</code> 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>


<h2><code>annotation_item</code></h2>
<h4>referenced from <code>annotation_set_item</code></h4>
<h4>appears in the <code>data</code> 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>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>

<h2><code>encoded_array_item</code></h2>
<h4>referenced from <code>class_def_item</code></h4>
<h4>appears in the <code>data</code> 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>

<h1>System Annotations</h1>

<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>.

<h2><code>dalvik.annotation.AnnotationDefault</code></h2>
<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>

<h2><code>dalvik.annotation.EnclosingClass</code></h2>
<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>

<h2><code>dalvik.annotation.EnclosingMethod</code></h2>
<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>

<h2><code>dalvik.annotation.InnerClass</code></h2>
<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>

<h2><code>dalvik.annotation.MemberClasses</code></h2>
<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>

<h2><code>dalvik.annotation.Signature</code></h2>
<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>

<h2><code>dalvik.annotation.Throws</code></h2>
<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>

</body>
</html>
