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>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>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>Overall 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>Bitfield, String, and Constant Definitions</h2>

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

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

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

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

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

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