page.title=Preparing for Release
@jd:body

<div id="qv-wrapper">
  <div id="qv">
    <h2>Quickview</h2>
    <ul>
      <li>Learn which resources you'll need to release your app.</li>
      <li>Find out how to configure and build your app for release.</li>
      <li>Learn best practices for releasing your app.</li>
    </ul>
    <h2>In this document</h2>
    <ol>
      <li><a href="#publishing-intro">Introduction</a></li>
      <li><a href="#publishing-gather">Gathering Materials and Resources</a></li>
      <li><a href="#publishing-configure">Configuring Your Application</a></li>
      <li><a href="#publishing-build">Building Your Application</a></li>
      <li><a href="#publishing-resources">Preparing External Servers and Resources</a></li>
      <li><a href="#publishing-test">Testing Your Application for Release</a></li>
    </ol>
    <h2>See also</h2>
    <ol>
      <li><a href="{@docRoot}guide/publishing/publishing_overview.html">Publishing Overview</a></li>
      <li><a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a></li>
      <li><a href="{@docRoot}guide/publishing/publishing.html">Publishing on Android Market</a></li>
    </ol>
  </div>
</div>

<p>Before you distribute your Android application to users you need to prepare it for release. The
preparation process is a required <a href="{@docRoot}guide/developing/index.html">development
task</a> for all Android applications and is the first step in the publishing process (see figure
1).</p>

<p>When you prepare your application for release, you configure, build, and test a release
version of your application. The configuration tasks are straightforward, involving basic code
cleanup and code modification tasks that help optimize your application. The build process is
similar to the debug build process and can be done using JDK and Android SDK tools. The testing
tasks serve as a final check, ensuring that your application performs as expected under real-world
conditions. When you are finished preparing your application for release you have a signed
<code>.apk</code> file, which you can distribute directly to users or distribute through an
application marketplace such as Android Market.</p>

<p>This document summarizes the main tasks you need to perform to prepare your application for
release. The tasks that are described in this document apply to all Android applications regardless
how they are released or distributed to users. If you are releasing your application through Android
Market, you should also read <a href="{@docRoot}guide/publishing/publishing.html">Publishing on
Android Market</a> to be sure your release-ready application satisfies all Android Market
requirements.</p>

<p class="note"><strong>Note:</strong> As a best practice, your application should meet all of your
release criteria for functionality, performance, and stability before you perform the tasks outlined
in this document.</p>

<img src="{@docRoot}images/publishing/publishing_overview_prep.png"
     alt="Shows how the preparation process fits into the development process"
     height="190"
     id="figure1" />
<p class="img-caption">
  <strong>Figure 1.</strong> Preparing for release is a required <a
href="{@docRoot}guide/developing/index.html">development
task</a> and is the first step in the publishing process.
</p>

<h2 id="publishing-intro">Introduction</h2>

<p>To release your application to users you need to create a release-ready package that users can
install and run on their Android-powered devices. The release-ready package contains the same
components as the debug <code>.apk</code> file &mdash; compiled source code, resources, manifest
file, and so on &mdash; and it is built using the same build tools. However, unlike the debug
<code>.apk</code> file, the release-ready <code>.apk</code> file is signed with your own certificate
and it is optimized with the zipalign tool.</p>

<div class="figure" style="width:331px">
  <img src="{@docRoot}images/publishing/publishing_preparing.png"
       alt="Shows the five tasks you perform to prepare your app for release"
       height="450" />
  <p class="img-caption">
    <strong>Figure 2.</strong> You perform five main tasks to prepare your application for
    release.
  </p>
</div>

<p>The signing and optimization tasks are usually seamless if you are building your application with
Eclipse and the ADT plugin or with the Ant build script (included with the Android SDK). For
example, you can use the Eclipse Export Wizard to compile, sign, and optimize your application all
at once. You can also configure the Ant build script to do the same when you build from the command
line.</p>

<p>To prepare your application for release you typically perform five main tasks (see figure 2).
Each main task may include one or more smaller tasks depending on how you are releasing your
application. For example, if you are releasing your application through Android Market you may want
to add special filtering rules to your manifest while you are configuring your application for
release. Similarly, to meet Android Market publishing guidelines you may have to prepare screenshots
and create promotional text while you are gathering materials for release.</p>

<p>You usually perform the tasks listed in figure 2 after you have throroughly debugged and tested
your application. The Android SDK contains several tools to help you test and debug your Android
applications. For more information, see the <a
href="{@docRoot}guide/developing/debugging/index.html">Debugging</a> and <a
href="{@docRoot}guide/developing/testing/index.html">Testing</a> sections in the Dev Guide.</p>

<h2 id="publishing-gather">Gathering Materials and Resources</h2>

<p>To begin preparing your application for release you need to gather several supporting items. At a
minimum this includes cryptographic keys for signing your application and an application icon. You
might also want to include an end-user license agreement.</p>

<h4 id="publishing-keys">Cryptographic keys</h4>

<p>The Android system requires that each installed application be digitally signed with a
certificate that is owned by the application's developer (that is, a certificate for which the
developer holds the private key). The Android system uses the certificate as a means of identifying
the author of an application and establishing trust relationships between applications. The
certificate that you use for signing does not need to be signed by a certificate authority; the
Android system allows you to sign your applications with a self-signed certificate. To learn about
certificate requirements, see <a href="{@docRoot}guide/publishing/app-signing.html#cert">Obtain a
suitable private key</a>.</p>

<p>You may also have to obtain other release keys if your application accesses a service or uses a
third-party library that requires you to use a key that is based on your private key. For example,
if your application uses the <a
href="http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html">MapView</a>
class, which is part of the <a
href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
library</a>, you will need to register your application with the Google Maps service and obtain
a Maps API key. For information about getting a Maps API key, see <a
href="http://code.google.com/android/add-ons/google-apis/mapkey.html"> Obtaining a Maps API
key</a>.</p>

<h4>Application Icon</h4>

<p>Be sure you have an application icon and that it meets the recommended <a
href="{@docRoot}guide/practices/ui_guidelines/icon_design_launcher.html">icon guidelines</a>. Your
application's icon helps users identify your application on a device's Home
screen and in the Launcher window. It also appears in Manage Applications, My Downloads, and
elsewhere. In addition, publishing services such as Android Market display your icon to users.</p>

<p class="note"><strong>Note:</strong> If you are releasing your application on Android Market, you
need to create a high resolution
  version of your icon. See <a
href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">Graphic
Assets for your Application</a> for more information.</p>

<h4>End-user License Agreement</h4>

<p>Consider preparing an End User License Agreement (EULA) for your application. A EULA can help
protect your person, organization, and intellectual property, and we recommend that you provide one
with your application.</p>

<h4>Miscellaneous Materials</h4>

<p>You might also have to prepare promotional and marketing materials to publicize your application.
For example, if you are releasing your application on Android Market you will need to prepare some
promotional text and you will need to create screenshots of your application. For more
information, see
<a href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">
Graphic Assets for your Application</a></p>

<h2 id="publishing-configure">Configuring Your Application for Release</h2>

<p>After you gather all of your supporting materials you can start configuring your application
for release. This section provides a summary of the configuration changes we recommend that you make
to your source code, resource files, and application manifest prior to releasing your application.
Although most of the configuration changes listed in this section are optional, they are
considered good coding practices and we encourage you to implement them. In some cases,
you may have already made these configuration changes as part of your development process.</p>

<h4>Choose a good package name</h4>

<p>Make sure you choose a package name that is suitable over the life of your application. You
cannot change the package name after you distribute your application to users. You can set the
package name in application's manifest file. For more information, see the <a
href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a> attribute
documentation.</p>

<h4>Turn off logging and debugging</h4>

<p>Make sure you deactivate logging and disable the debugging option before you build your
application for release. You can deactivate logging by removing calls to
{@link android.util.Log} methods in your source files. You can disable debugging by removing the
<code>android:debuggable</code> attribute from the <code>&lt;application&gt;</code> tag in your
manifest file, or by setting the <code>android:debuggable</code> attribute to
<code>false</code> in your manifest file. Also, remove any log files or static test files that
were created in your project.</p>

<p>Also, you should remove all {@link android.os.Debug} tracing calls that you
added to your code, such as {@link android.os.Debug#startMethodTracing()} and
{@link android.os.Debug#stopMethodTracing()} method calls.</p>

<h4>Clean up your project directories</h4>

<p>Clean up your project and make sure it conforms to the directory structure described in <a
href="{@docRoot}guide/developing/projects/index.html#ApplicationProjects">Android Projects</a>.
Leaving stray or orphaned files in your project can prevent your application from compiling and
cause your application to behave unpredictably. At a minimum you should do the following cleanup
tasks:</p>

<ul>
  <li>Review the contents of your <code>jni/</code>, <code>lib/</code>, and <code>src/</code>
  directories.  The <code>jni/</code> directory should contain only source files associated with the
  <a href="{@docRoot}sdk/ndk/index.html">Android NDK</a>, such as
  <code>.c</code>, <code>.cpp</code>, <code>.h</code>, and <code>.mk</code> files. The
  <code>lib/</code> directory should contain only third-party library files or private library
  files, including prebuilt shared and static libraries (for example, <code>.so</code> files). The
  <code>src/</code> directory should contain only the source files for your application
  (<code>.java</code> and <code>.aidl</code> files). The <code>src/</code> directory should not
  contain any <code>.jar</code> files.</li>
  <li>Check your project for private or proprietary data files that your application does not use
  and remove them. For example, look in your project's <code>res/</code> directory for old
  drawable files, layout files, and values files that you are no longer using and delete them.</li>
  <li>Check your <code>lib/</code> directory for test libraries and remove them if they are no
  longer being used by your application.</li>
  <li>Review the contents of your <code>assets/</code> directory and your <code>res/raw/</code>
    directory for raw asset files and static files that you need to update or remove prior to
    release.</li>
</ul>

<h4>Review and update your manifest settings</h4>

<p>Verify that the following manifest items are set correctly:</p>

<ul>
  <li><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
  &lt;uses-permission&gt;</a> element
    <p>You should specify only those permissions that are relevant and required for your application.</p>
  </li>
  <li><code>android:icon</code> and <code>android:label</code> attributes
    <p>You must specify values for these attributes, which are located in the
    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
    element.</p>
  </li>
  <li><code>android:versionCode</code> and <code>android:versionName</code> attributes.
    <p>We recommend that you specify values for these attributes, which are located in the
      <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
      element. For more information see
      <a href="{@docRoot}guide/publishing/versioning.html">Versioning your Application</a>.</p>
  </li>
</ul>

<p>There are several additional manifest elements that you can set if you are releasing your
application on Android Market. For example, the <code>android:minSdkVersion</code> and
<code>android:targetSdkVersion</code> attributes, which are located in the <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"> &lt;uses-sdk&gt;</a> element. For more
information about these and other Android Market settings, see <a
href="{@docRoot}/guide//appendix/market-filters.html">Market Filters</a>.</p>

<h4>Address compatibility issues</h4>

<p>Android provides several tools and techniques to make your application compatible with a wide
range of devices. To make your application available to the largest number of users, consider
doing the following:</p>

<ul>
  <li><strong>Add support for multiple screen configurations</strong>
    <p>Make sure you meet the
    <a href="{@docRoot}guide/practices/screens_support.html#screen-independence">
    best practices for supporting multiple screens</a>. By supporting multiple screen configurations
    you can create an application that functions properly and looks good on any of the screen sizes
    supported by Android.</p>
  </li>
  <li><strong>Optimize your application for Android 3.0 devices.</strong>
    <p>If your application is designed for devices older than Android 3.0, make it compatible
    with Android 3.0 devices by following the guidelines and best practices described in
    <a href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for Android 3.0
    </a>.</p>
  </li>
  <li><strong>Consider using the Support Library</strong>
    <p>If your application is designed for devices running Android 3.x, make your application
    compatible with older versions of Android by adding the
    <a href="{@docRoot}sdk/compatibility-library.html">Support Library</a> to your
    application project. The Support Library provides static support libraries that you can add to
    your Android application, which enables you to use APIs that are either not available on
    older platform versions or use utility APIs that are not part of the framework APIs.</p>
  </li>
</ul>

<h4>Update URLs for servers and services</h4>

<p>If your application accesses remote servers or services, make sure you are using the production
URL or path for the server or service and not a test URL or path.</p>

<h4>Implement Licensing (if you are releasing on Android Market)</h4>

<p>If you are releasing a paid application through Android Market, consider adding support for
Android Market Licensing. Licensing lets you control access to your application based on whether the
current user has purchased it. Using Android Market Licensing is optional even if you are
releasing your app through Android Market.</p>

<p>For more information about Android Market Licensing Service and how to use it in your
application, see <a href="{@docRoot}guide/publishing/licensing.html">Application Licensing</a>.</p>

<h2 id="publishing-build">Building Your Application for Release</h2>

<p>After you finish configuring your application you can build it into a release-ready
<code>.apk</code> fle that is signed and optimized. The JDK includes the tools for signing the
<code>.apk</code> file (Keytool and Jarsigner); the Android SDK includes the tools for compiling and
optimizing the <code>.apk</code> file. If you are using Eclipse with the ADT plugin or you are using
the Ant build script from the command line, you can automate the entire build process.</p>

<h3>Building with Eclipse</h3>

<p>You can use the Eclipse Export Wizard to build a release-ready <code>.apk</code> file that is
signed with your private key and optimized. To learn how to run the Export Wizard, see
<a href="{@docRoot}guide/publishing/app-signing.html#ExportWizard">Compile and sign with Eclipse
ADT</a>. The Export Wizard compiles your application for release, signs your application with your
private key, and optimizes your application with the zipalign tool. The Export Wizard should run
successfully if you have run or debugged your application from Eclipse and you have no errors in
your application (see <a href="{@docRoot}guide/developing/building/building-eclipse.html">Building
and Running from Eclipse with ADT</a> for more information.</p>

<p>The Export Wizard assumes that you have a <a href="#billing-keys">certificate and private key</a>
suitable for signing your application. If you do not have a suitable certificate and private key,
the Export Wizard will help you generate one (see
<a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a> for more
information about the signing process and signing guidelines.</p>

<h3>Building with Ant</h3>

<p>You can use the Ant build script (included in the Android SDK) to build a release-ready
<code>.apk</code> file that is signed with your private key and optimized. To learn how to do this,
see <a href="{@docRoot}guide/developing/building/building-cmdline.html#ReleaseMode">Building in
Release Mode</a>. This build method assumes you have a <a href="#billing-keys">certificate and
private key</a> suitable for signing your application. If you do not have a suitable certificate and
private key, the Export Wizard will help you generate one (see
<a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a> for more
information about the signing process and signing guidelines.</p>

<h2 id="publishing-resources">Preparing External Servers and Resources</h2>

<p>If your application relies on a remote server, make sure the server is secure and that it is
configured for production use. This is particularly important if you are implementing <a
href="{@docRoot}guide/market/billing/index.html">in-app billing</a> in your application and you are
performing the signature verification step on a remote server.</p>

<p>Also, if your application fetches content from a remote server or a real-time service (such as a
content feed), be sure the content you are providing is up to date and production-ready.</p>

<h2 id="publishing-test">Testing Your Application for Release</h2>

<p>Testing the release version of your application helps ensure that your application runs properly
under realistic device and network conditions. Ideally, you should test your application on at least
one handset-sized device and one tablet-sized device to verify that your user interface elements are
sized correctly and that your application's performance and battery efficiency are acceptable.</p>

<p>As a starting point for testing, see
<a href="{@docRoot}guide/topics/testing/what_to_test.html">What to Test</a>. This article provides
a summary of common Android situations that you should consider when you are testing. When you are
done testing and you are satisfied that the release version of your application
behaves correctly, you can release your application to users. For more information, see
<a href="{@docRoot}guide/publishing/publishing_overview.html#publishing-release">Releasing Your
Application to Users</a>. If you are publishing your application on Android Market, see
<a href="{@docRoot}guide/publishing/publishing.html">Publishing on Android Market</a>.</p>


