page.title=Alternative Distribution Options
page.metaDescription=With Android you can distribute apps to users in any way you want, using any store or distribution approach.
page.image=/distribute/images/alt-distribution.jpg

@jd:body

<p>
  As an open platform, Android offers choice. You can distribute your Android
  apps to users in any way you want, using any distribution approach or
  combination of approaches that meets your needs. From publishing in an app
  marketplace to serving your apps from a web site or emailing them directly
  users, you’re never locked into any particular distribution platform.
</p>

<p>
  The process for building and packaging your apps for distribution is the
  same, regardless of how you distribute them. This saves you time and lets you
  automate parts of the process as needed. You can read <a href=
  "{@docRoot}tools/publishing/preparing.html">Preparing for Release</a> for
  more information.
</p>

<p>
  The sections below highlight some of the alternatives for distributing your
  apps.
</p>

<div class="headerLine">
  <h2>
  Distributing Through an App Marketplace
  </h2>


</div>

<p>
  Usually, to reach the broadest possible audience, you’d distribute your apps
  through a marketplace, such as Google Play.
</p>

<p>
  Google Play is the premier marketplace for Android apps and is particularly
  useful if you want to distribute your apps to a large global audience.
  However, you can distribute your apps through any app marketplace you want or
  use multiple marketplaces.
</p>

<p>
  Unlike other forms of distribution, Google Play allows you to use the In-app
  Billing service and Licensing service. The <a href=
  "{@docRoot}google/play/billing/index.html">In-app Billing service</a> makes
  it easy to sell in-app products like game jewels or app feature upgrades. The
  <a href="{@docRoot}google/play/licensing/index.html">Licensing service</a>
  helps prevent unauthorized installation and use of your apps.
</p>

<div class="headerLine">
  <h2>
  Distributing Your Apps by Email
  </h2>


</div>

<div class="figure" style="width:300px;">
  <img src="{@docRoot}images/publishing/publishing_via_email.png">
  <p class="img-caption">
  <b>Figure 1.</b> Users can simply click <b>Install</b> when you send them
  an application via email.
  </p>
</div>

<p>
  An easy and quick way to release your apps is to send them to users by email.
  To do this, you prepare the app for release, attach it to an email, and send
  it to a user. When the user open your email on their Android-powered device,
  the Android system recognizes the APK and displays an <strong>Install
  Now</strong> button in the email message (see Figure 1). Users can install
  your app by touching the button.
</p>

<p>
  <strong>Note:</strong> The <strong>Install Now</strong> button, shown in
  Figure 1, appears only if the user has configured their device to allow
  installation from <a href=
  "{@docRoot}distribute/open.html#unknown-sources">unknown sources</a> and
  opened your email in the native Gmail app.
</p>

<p>
  Distributing apps through email is convenient if you’re sending them to a few
  trusted users, as it provides few protections from piracy and unauthorized
  distribution; that is, anyone you send your apps to can simply forward them
  to others.
</p>

<div class="headerLine">
  <h2>
  Distributing Through a Website
  </h2>


</div>

<p>
  If you don’t want to release your apps on a marketplace such as Google Play,
  you can make them available for download on your own website or server,
  including on a private or enterprise server. To do this, you first prepare
  your apps for release in the normal way. Then all you need to do is host the
  release-ready APK file on your website and provide a download link to users.
</p>

<p>
  When users browse to the download link from their Android-powered devices,
  the file is downloaded and Android system automatically starts installing it
  on the device. However, the installation process will start automatically
  only if users have configured their Settings to allow the installation of
  apps from <a href="{@docRoot}distribute/open.html#unknown-sources">unknown
  sources</a>.
</p>

<div class="headerLine">
  <h2>
  User Opt-In for Apps from Unknown Sources
  </h2>


</div>

<div class="figure" style="width:325px;">
  <img src="{@docRoot}images/publishing/publishing_unknown_sources_sm.png">
  <p class="img-caption">
  <b>Figure 2.</b> Users must enable the <b>Unknown sources</b> setting
  before they can install apps not downloaded from Google Play.
  </p>
</div>

<p>
  Android protects users from inadvertent download and install of apps from
  locations other than Google Play (which is trusted). It blocks such installs
  until the user opts-in <strong>Unknown sources</strong> in Settings
  <strong>&gt;</strong> Security, shown in Figure 2. Users need to make this
  configuration change <em>before</em> they download your apps to their
  devices.
</p>

<p>
  Note that some network providers don’t allow users to install applications
  from unknown sources.
</p>
