page.title=Publishing Overview
@jd:body

<div id="qv-wrapper">
<div id="qv">
  <h2>Quickview</h2>
  <ul>
    <li>Learn how to publish Android apps.</li>
    <li>Find out how to prepare apps for release.</li>
    <li>Learn how to release apps to users.</li>
  </ul>
  <h2>In this document</h2>
  <ol>
    <li><a href="#publishing-prepare">Preparing Your Application for Release</a></li>
    <li><a href="#publishing-release">Releasing Your Application to Users</a>
    <ol>
      <li><a href="#publishing-market">Releasing on Android Market</a></li>
      <li><a href="#publishing-website">Releasing on your own website</a></li>
      <li><a href="#publishing-email">Releasing through email</a></li>
    </ol>
  </ol>
  <h2>See also</h2>
  <ol>
    <li><a href="{@docRoot}guide/publishing/publishing_preparing.html">Preparing for
    Release</a></li>
    <li><a href="{@docRoot}guide/publishing/publishing.html">Publishing on Android Market</a></li>
  </ol>
</div>
</div>

<p>Publishing is the process that makes your Android applications available to users. When you
publish an Android application you perform two main tasks:</p>

<ul>
  <li>You prepare the application for release.
    <p>During the preparation step you build a release version of your application, which users can
      download and install on their Android-powered devices.</p>
  </li>
  <li>You release the application to users.
    <p>During the release step you publicize, sell, and distribute the release version of your
      application to users.</p>
  </li>
</ul>

<p>Usually, you release your application through an application marketplace, such as Android Market.
However, you can also release applications by sending them directly to users or by letting users
download them from your own website.</p>

<p>Figure 1 shows how the publishing process fits into the overall Android <a
href="{@docRoot}guide/developing/index.html">application development process</a>.
The publishing process is typically performed after you finish testing your application in a debug
environment. Also, as a best practice, your application should meet all of your release criteria for
functionality, performance, and stability before you begin the publishing process.</p>

<img src="{@docRoot}images/publishing/publishing_overview.png" alt="Shows where the publishing
       process fits into the overall development process" height="86" id="figure1" />
<p class="img-caption">
  <strong>Figure 1.</strong> Publishing is the last phase of the Android <a
href="{@docRoot}guide/developing/index.html">application development process</a>.
</p>

<h2 id="publishing-prepare">Preparing Your Application for Release</h2>

<p>Preparing your application for release is a multi-step process that involves the following
tasks:</p>

<ul>

  <li>Configuring your application for release.
    <p>At a minimum you need to remove {@link android.util.Log} calls and remove the
    <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
    attribute from your manifest file. You should also provide values for the
    <code>android:versionCode</code> and <code>android:versionName</code> attributes, which are
    located in the
    <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
    element. You may also have to configure several other settings to meet Android Market
    requirements or accomodate whatever method you're using to release your application.</p>
  </li>
  <li>Building and signing a release version of your application.
    <p>The Android Development Tools (ADT) plugin and the Ant build script that are provided
    with the Android SDK tools provide everything you need to build and sign a release version of
    your application.</p>
  </li>
  <li>Testing the release version of your application.
    <p>Before you distribute your application, you should thoroughly test the release version on at
    least one target handset device and one target tablet device.</p>
  </li>
  <li>Updating application resources for release.
    <p>You need to be sure that all application resources such as multimedia files and graphics
    are updated and included with your application or staged on the proper production servers.</p>
  </li>
  <li>Preparing remote servers and services that your application depends on.
    <p>If your application depends on external servers or services, you need to be sure they
    are secure and production ready.</p>
  </li>
</ul>

<p>You may have to perform several other tasks as part of the preparation process. For example, you
will need to get a private key for signing your application, and you may need to get a Maps API
release key if you are using the <a
href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
library</a>. You will also need to create an icon for your application, and you may want to prepare
an End User License Agreement (EULA) to protect your person, organization, and intellectual
property.</p>

<p>When you are finished preparing your application for release you will have a signed
<code>.apk</code> file that you can distribute to users.</p>

<p>To learn how to prepare your application for release, see <a
href="{@docRoot}guide/publishing/preparing.html">Preparing for Release</a> in the Dev Guide. This
topic provides step-by-step instructions for configuring and building a release version of your
application.</p>

<h2 id="publishing-release">Releasing Your Application to Users</h2>

<p>You can release your Android applications several ways. Usually, you release applications
through an application marketplace, such as Android Market, but you can also release applications
on your own website or by sending an application directly to a user. Android Market is the
recommended marketplace for Android applications and is particularly useful if you want to
distribute your applications to a large global audience. The other two release methods&mdash;server
distribution and email distribution&mdash;are useful if you are releasing an application to a small
group of users (for example, a work group in an enterprise environment), or if you do not want to
make your application available to the general public.</p>

<h3 id="publishing-market">Releasing Your Applications on Android Market</h3>

<p>Android Market is a robust publishing platform that helps you publicize, sell, and distribute
your Android applications to users around the world. When you release your applications through
Android Market you have access to a suite of developer tools that let you analyze your sales,
identify market trends, and control who your applications are being distributed to. You also have
access to several revenue-enhancing features that are not available anywhere else, such as <a
href="{@docRoot}guide/market/billing/index.html">in-app billing</a> and <a
href="{@docRoot}guide/publishing/licensing.html">application licensing</a>. This rich array of tools
and features, coupled with numerous end-user community features, makes Android Market the premier
marketplace for selling and buying Android applications.</p>

<p>Releasing your application on Android Market is a simple process that involves four basic
  steps:</p>

<div class="figure" style="width:275px">
  <img src="{@docRoot}images/publishing/publishing_unknown_sources.png"
       alt="Screenshot showing the graphical user interface element that allows unknown sources
       to be installed" />
  <p class="img-caption">
    <strong>Figure 2.</strong> The <strong>Unknown sources</strong> setting lets you install
    applications that are not published on Android Market .
  </p>
</div>

<ul>
  <li>Preparing promotional materials.
    <p>To fully leverage the marketing and publicity capabilities of Android Market, you need to
    create promotional materials for your application, such as screenshots, videos, graphics, and
    promotional text.</p>
  </li>
  <li>Planning publishing options.
    <p>Android Market lets you target your application to a worldwide pool of users and devices.
    Using various Android Market tools, you can choose the countries you want to reach, the
    price you want to charge in each country, and the devices you want to target. You can also
    use Android Market's filtering settings to target specific device features and capabilities.</p>
  </li>
  <li>Configuring publishing options and uploading assets.
    <p>After you create your promotional materials and determine which publishing options are
    suitable for your application, you can use the Android Market developer console to configure
    those options and upload the promotional materials. You can also use the developer console to
    upload your application as a draft (unpublished) application, which lets you do final
    testing before you publish it for final release.</p>
  </li>
  <li>Publishing the release version of your application.
    <p>When you are satisfied that your publishing settings are correctly configured and your
    uploaded application is ready to be released to the public, you can simply click
    <strong>Publish</strong > in the developer console and within minutes your application will be
    live and available for download around the world.</p>
  </li>
</ul>

<p>For information about Android Market, see <a
href="{@docRoot}guide/publishing/publishing.html#market">Publishing on Android Market</a>. This
topic provides an introduction to Android Market features and provides a step-by-step guide for
distributing your applications on Android Market.</p>

<h3 id="publishing-website">Releasing your application on your own website</h3>

<p>If you do not want to release your application on an application marketplace like Android Market,
you can release your application by making it available for download on your own website or server.
To do this, you must first prepare your application for release (that is, you must build it for
release and sign it). Then all you need to do is host the release-ready application on your website
and provide a download link for the application. When users browse to your website with their
Android-powered devices and download your application, the Android system will automatically start
installing the application on the device. However, the installation process will start automatically
only if the user has configured their device to allow the installation of non-Android Market
applications.</p>

<div class="figure" style="width:275px">
  <img src="{@docRoot}images/publishing/publishing_via_email.png"
       alt="Screenshot showing the graphical user interface users see when you send them an app"
       height="453" />
  <p class="img-caption">
    <strong>Figure 3.</strong> Users can simply click <strong>Install</strong> when you send them
    an application via email.
  </p>
</div>

<p>By default, Android-powered devices allow users to install applications only if the applications
have been downloaded from Android Market. To allow the installation of applications from other
sources, users need to enable the <strong>Unknown sources</strong> setting on their devices, and
they need to make this configuration change before they download your application to their
device (see figure 2).</p>

<p class="note"><strong>Note:</strong> Some network providers do not allow users to install
applications from unknown sources.</p>

<p>Although it is relatively easy to release your application on your own website, it can be
inefficient and cumbersome. For example, if you want to monetize your application you will
have to process and track all financial transactions yourself and you will not be able to use
Android Market's in-app billing feature to sell in-app products. In addition, you will not be
able to use the licensing feature to help prevent unauthorized installation and use of your
application.</p>

<h3 id="publishing-email">Releasing your application through email</h3>

<p>The easiest and quickest way to release your application is to send it to a user through
email. To do this, you prepare your application for release and then attach it to an email
and send it to a user. When the user opens your email message on their Android-powered device
the Android system will recognize the <code>.apk</code> and display an <strong>Install Now</strong>
button in the email message (see figure 3). Users can install your application by touching the
button.</p>

<p class="note"><strong>Note:</strong> The <strong>Install Now</strong> button appears only if a
user has configured their device to allow the installation of non-Android Market applications and
they open your email with the native Gmail application.</p>

<p>Releasing applications through email is convenient if you are sending your application to
only a few trusted users, but it provides few protections from piracy and unauthorized
distribution; that is, anyone you send your application to can simply forward it to someone else.
else.