250 lines
11 KiB
Plaintext
250 lines
11 KiB
Plaintext
page.title=Publishing Your Applications
|
|
@jd:body
|
|
|
|
<div id="qv-wrapper">
|
|
<div id="qv">
|
|
|
|
<h2>Publishing quickview</h2>
|
|
|
|
<ul>
|
|
<li>You can publish your application using a hosted service such as Android Market or through a web server.</li>
|
|
<li>Before you publish, make sure you have prepared your application properly.</li>
|
|
<li>Android Market makes it easy for users of Android-powered devices to see and download your application.</li>
|
|
</ul>
|
|
|
|
|
|
<h2>In this document</h2>
|
|
|
|
<ol>
|
|
<li><a href="#overview">Publishing on Android Market</a>
|
|
<ol>
|
|
<li><a href="#marketupgrade">Publishing Upgrades on Android Market</a>
|
|
<li><a href="#marketintent">Using Intents to Launch the Market Application</a></li>
|
|
</ol></li>
|
|
|
|
<li><span style="color:ccc">Publishing on Other Hosted Services</a></li>
|
|
<li><span style="color:ccc">Publishing through a Web Server</a></li>
|
|
|
|
</ol>
|
|
|
|
<h2>See also</h2>
|
|
|
|
<ol>
|
|
<li><a href="{@docRoot}guide/publishing/preparing.html">Preparing to Publish</a></li>
|
|
</ol>
|
|
|
|
<div id="qv-extra">
|
|
<img id="rule" src="{@docRoot}assets/images/grad-rule-qv.png">
|
|
<div id="qv-sub-rule">
|
|
<img src="{@docRoot}assets/images/icon_market.jpg" style="float:left;margin:0;padding:0;">
|
|
<p style="color:#669999;">Interested in publishing your app on Android Market?</p>
|
|
<a id="publish-link" href="http://market.android.com/publish">Go to Android Market »</a>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<p>Publishing an application means testing it, packaging it appropriately, and making
|
|
it available to users of Android-powered mobile devices for download or sideload.</p>
|
|
|
|
<p>If you've followed the steps outlined in
|
|
<a href="{@docRoot}guide/publishing/preparing.html">Preparing to
|
|
Publish Your Applications</a>, the result of the process is a compiled .apk that
|
|
is signed with your release private key. Inside the .apk, the application is
|
|
properly versioned and any MapView elements reference a Maps API Key that you
|
|
obtained by registering the MD5 fingerprint of the same certificate used to sign
|
|
the .apk. Your application is now ready for publishing. </p>
|
|
|
|
<p>The sections below provide information about publishing your Android
|
|
application to mobile device users.</p>
|
|
|
|
<h2 id="market">Publishing on Android Market</h2>
|
|
|
|
<p>Android Market is a hosted service that makes it easy for users to find and
|
|
download Android applications to their Android-powered devices, and makes it
|
|
easy for developers to publish their applications to Android users.</p>
|
|
|
|
<p>To publish your application on Android Market, you first need to register
|
|
with the service using your Google account and agree to the terms of service.
|
|
Once you are registered, you can upload your application to the service whenever
|
|
you want, as many times as you want, and then publish it when you are ready.
|
|
Once published, users can see your application, download it, and rate it using
|
|
the Market application installed on their Android-powered devices. </p>
|
|
|
|
<p>To register as an Android Market developer and get started with publishing,
|
|
visit the Android Market: </p>
|
|
|
|
<p style="margin-left:3em;"><a
|
|
href="http://market.android.com/publish">http://market.android.com/publish</a>
|
|
</p>
|
|
|
|
<p>If you plan to publish your application on Android Market, you must make sure
|
|
that it meets the requirements listed below, which are enforced by the Market
|
|
server when you upload the application.</p>
|
|
|
|
<div class="special">
|
|
<p>Requirements enforced by the Android Market server</p>
|
|
<ol>
|
|
<li>Your application must be signed with a cryptographic private key whose
|
|
validity period ends after <span style="color:red">22 October 2033</span>. </li>
|
|
<li>Your application must define both an <code>android:versionCode</code> and an
|
|
<code>android:versionName</code> attribute in the <code><manifest></code>
|
|
element of its manifest. The server uses the <code>android:versionCode</code> as
|
|
the basis for identifying the application internally and handling upgrades, and
|
|
it displays the <code>android:versionName</code> to users as the application's
|
|
version.</li>
|
|
<li>Your application must define both an <code>android:icon</code> and an
|
|
<code>android:label</code> attribute in the <code><application></code>
|
|
element of its manifest.</li>
|
|
</ol>
|
|
</div>
|
|
|
|
<h3 id="marketupgrade">Publishing Upgrades on Android Market</h3>
|
|
|
|
<p>The beta version of Android Market does not support notifying your users when
|
|
you publish a new version of your application. This capability will be
|
|
added soon, but currently the user must independently initiate download of an
|
|
upgraded application. When you publish an upgrade, you can assist users by
|
|
notifying them that the upgrade is available and giving them a way to download
|
|
the upgraded application from Android Market.</p>
|
|
|
|
<p>Here is a suggested way of tracking installed application versions and
|
|
notifying users that an upgrade is available:</p>
|
|
|
|
<ol>
|
|
<li>Have your app occasionally check in with a web-service that you're
|
|
running. This web service should return two values: the latest available
|
|
version number for the application (corresponding to
|
|
<code>android:versionCode</code>) and a URI string that your application
|
|
can later send in an Intent, to launch Market and search for the
|
|
upgraded application for the user.
|
|
|
|
<p>The URI that your web service returns should be properly formatted to
|
|
search Android Market for your upgraded application. See
|
|
<a href="#marketintent">Using Intents to Launch the Market Application</a>
|
|
for more information. The URI should specify the upgraded
|
|
application's package name as the query parameter, since the package name
|
|
is guaranteed to be unique on Android Market. The URI format for the
|
|
package name search is: </p>
|
|
|
|
<p><code>http://market.android.com/search?q=pname:<package></code> or
|
|
<br><code>market://search?q=pname:<package></code></p>
|
|
|
|
</li>
|
|
<li>Your application can then compare its own version number against
|
|
that retrieved. If the retrieved value is greater, your application can
|
|
show a dialog informing the user that a new version is available. The
|
|
dialog can offer buttons to begin the download or cancel. </li> <li>If
|
|
the user clicks the button to begin the download, your application can
|
|
call startActivity() using the ACTION_VIEW Intent, passing the URI
|
|
received from your web service. The Intent launches the Market
|
|
application on the device and initiates an immediate search on the
|
|
Android Market site, based on the query parameters in the URI. When the
|
|
result is displayed, the user can view the details of the upgraded
|
|
application and begin the download.
|
|
|
|
<p>Note that, because the URI string is received from your web
|
|
service and not hard-coded into your application, you can easily change
|
|
the Market launch behaviors whenever needed, without
|
|
having to change your application. </p></li></ol>
|
|
|
|
<p>For more information about URIs you can pass to the Market application at
|
|
launch, see <a href="#marketintent">Using Intents to Launch the Market
|
|
Application</a>, below.</p>
|
|
|
|
<h3 id="marketintent">Using Intents to Launch the Market Application on
|
|
a Device</h3>
|
|
|
|
<p>Android-powered devices include a preinstalled Market application that gives
|
|
users access to the Android Market site. From Market, users can
|
|
browse or search available applications, read ratings and reviews, and
|
|
download/install applications.</p>
|
|
|
|
<p>You can launch the Market application from another Android
|
|
application by sending an Intent to the system. You might want to do
|
|
this, for example, to help the user locate and download an upgrade to an
|
|
installed application, or to let the user know about related
|
|
applications that are available for download. </p>
|
|
|
|
<p>To launch Market, you send an ACTION_VIEW Intent, passing a Market-handled
|
|
URI string as the Intent data. In most cases, your application would call
|
|
startActivity() to send the ACTION_VIEW Intent with the Market-handled URI.</p>
|
|
|
|
<p>The URI that you supply with the Intent lets the system route the intent
|
|
properly and also expresses the type of action that you want Market to perform
|
|
after launch. Currently, you can have Market initiate a search for applications
|
|
on Android Market, based on query parameters that you provide. For example, you
|
|
can specify URIs to search for applications by:</p>
|
|
|
|
<ul>
|
|
<li>Package name</li>
|
|
<li>Developer name</li>
|
|
<li>String match across application name, developer name, and
|
|
description, or </li>
|
|
<li>Any combination of the above</li>
|
|
</ul>
|
|
|
|
<p>Note that the URI queries return results from the public metadata supplied by
|
|
developers in their Android Market profiles or application publishing
|
|
information, but not from the developer's private account or from the
|
|
certificate used to sign the application. </p>
|
|
|
|
<p>The table below provides a list of URIs and actions currently
|
|
supported by the Market application.</p>
|
|
|
|
<table>
|
|
<tr>
|
|
<th>For this Result</th>
|
|
<th>Pass this URI with the ACTION_VIEW Intent</th>
|
|
<th>Comments</th>
|
|
</tr>
|
|
|
|
<!--
|
|
<tr>
|
|
<td>Display the details screen for a specific application, as identified
|
|
by its Market appID string.</td>
|
|
<td><code>http://market.android.com/details?id=<appMarketAppIdString></code>
|
|
or<br>
|
|
<code>market://details?id=<appMarketUidString></code></td>
|
|
<td>Note that Market appID is specific to an application
|
|
<em>and</em> its version. That is, an appID query loads the details page
|
|
for a specific version of an application.</td>
|
|
</tr>
|
|
-->
|
|
<tr>
|
|
<td>Search for an application by its fully qualified Java package name and
|
|
display the result.</td>
|
|
<td><code>http://market.android.com/search?q=pname:<package></code> or<br>
|
|
<code>market://search?q=pname:<package></code></td>
|
|
<td>Searches only the Java package name of applications. Returns only exact
|
|
matches.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Search for applications by developer name and display the results.</td>
|
|
<td><code>http://market.android.com/search?q=pub:"<Developer Name>"</code>
|
|
or<br> <code>market://search?q=pub:"<Developer Name>"</code></td>
|
|
<td>Searches only the "Developer Name" fields of Market public profiles.
|
|
Returns exact matches only. </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Search for applications by substring and display the results.</td>
|
|
<td><code>http://market.android.com/search?q=<substring></code> or
|
|
<br><code>market://search?q=<substring></code></td>
|
|
<td>Searches all public fields (application title, developer name, and
|
|
application description) for all applications. Returns exact and partial
|
|
matches.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Search using multiple query parameters and display the results.</td>
|
|
<td>Example:<p><code>http://market.android.com/search?q=world pname:com.android.hello pub:Android</code></p></td>
|
|
<td>Returns a list of applications meeting all the supplied parameters. </td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>Note that these URIs work only when passed as intent data — you
|
|
can't currently load the URIs in a web browser, either on a desktop machine or
|
|
on the device. </p> |