307 lines
13 KiB
Plaintext
307 lines
13 KiB
Plaintext
page.title=Publishing Your Applications
|
|
@jd:body
|
|
|
|
<div id="qv-wrapper">
|
|
<div id="qv">
|
|
|
|
<h2>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 Updates on Android Market</a></li>
|
|
<li><a href="#marketLicensing">Using Android Market Licensing Service</a></li>
|
|
<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/licensing.html">Licensing Your Applications</a></li>
|
|
<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="overview">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
|
|
<a
|
|
href="{@docRoot}guide/topics/manifest/manifest-element.html"><code><manifest></code></a>
|
|
element of its manifest. The server uses the <code>android:versionCode</code> as
|
|
the basis for identifying the application internally and handling updates, 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 Updates on Android Market</h3>
|
|
|
|
<p>At any time after publishing an application on Android Market, you can upload
|
|
and publish an update to the same application package. When you publish an
|
|
update to an application, users who have already installed the
|
|
application will automatically receive a notification that an update is
|
|
available for the application. They can then choose to update the application
|
|
to the latest version.</p>
|
|
|
|
<p>Before uploading the updated application, be sure that you have incremented
|
|
the <code>android:versionCode</code> and <code>android:versionName</code>
|
|
attributes in the <a
|
|
href="{@docRoot}guide/topics/manifest/manifest-element.html"><code><manifest></code></a>
|
|
element of the manifest file. Also, the package name must be the same and the
|
|
.apk must be signed with the same private key. If the package name and signing
|
|
certificate do <em>not</em> match those of the existing version, Market will
|
|
consider it a new application and will not offer it to users as an update.</p>
|
|
|
|
|
|
<h3 id="marketLicensing">Using Android Market Licensing Service</h3>
|
|
|
|
<p>Android Market offers a licensing service that lets you enforce licensing
|
|
policies for paid applications that you publish through Android Market. With
|
|
Android Market Licensing, your applications can query Android Market at run time
|
|
to obtain their licensing status for the current user, then allow or disallow
|
|
further use as appropriate. Using the service, you can apply a flexible
|
|
licensing policy on an application-by-application basis — each
|
|
application can enforce its licensing status in the way most appropriate
|
|
for it. </p>
|
|
|
|
<p>Any application that you publish through Android Market can use the Android
|
|
Market Licensing Service. The service uses no dedicated framework APIs, you can
|
|
add licensing to any legacy application that uses a minimum API level of 3 or
|
|
higher.</p>
|
|
|
|
<p>For complete information about Android Market Licensing Service and how to
|
|
use it in your application, see <a
|
|
href="{@docRoot}guide/publishing/licensing.html">Licensing Your
|
|
Applications</a>.</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 update 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 take these actions:</p>
|
|
|
|
<ul>
|
|
<li>Initiate a search for applications on Android Market, based on the query
|
|
parameters that you provide, or </li>
|
|
<li>Load the Details page for a specific application on Android Market, based on
|
|
the application's package name.</li>
|
|
</ul>
|
|
|
|
<h4>Initiating a search</h4>
|
|
|
|
<p>Your application can initiate a search on Android Market for applications
|
|
that match the query parameters that you provide. To do so, your application
|
|
sends an ACTION_VIEW Intent that includes a URI and query parameters in this
|
|
format:</p>
|
|
|
|
<p style="margin-left:2em"><code>market://search?q=<paramtype>:<value></code></p>
|
|
|
|
<div class="sidebox-wrapper" xstyle="margin-bottom:2em;margin-top:.5em;width:90%;">
|
|
<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;">Searches on Android Market</p>
|
|
<p>When you initiate a search, Android Market returns results from matches in
|
|
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>
|
|
</div>
|
|
</div>
|
|
|
|
<p>Using this URI format, you can 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>The table at the bottom of this page specifies the <code>paramtypes</code>
|
|
and <code>values</code> that correspond to each of these types of search. </p>
|
|
|
|
<p>When you send an intent to initiate a search for applications, Market sends
|
|
the search query to the server and displays the result. To the user, the
|
|
experience is something like this: </p>
|
|
|
|
<ol>
|
|
<li>The user presses a link or button in your application.</li>
|
|
<li>The Market application launches and takes control of the screen, displaying
|
|
a progress indicator labeled "Searching" until it receives the search
|
|
results.</li>
|
|
<li>Market receives the search results and displays them. Depending on the query
|
|
parameters, the search results may include a list of one or more applications.
|
|
</li>
|
|
<li>From the results page, the user can select an app to go to its Details page,
|
|
which offers information about the app and lets the user download/purchase the
|
|
app.</li>
|
|
</ol>
|
|
|
|
<h4>Loading an application's Details page</h4>
|
|
|
|
<p>In Android Market, every application has a Details page that provides an
|
|
overview of the application for users. For example, the page includes a short
|
|
description of the app and screen shots of it in use, if supplied by the
|
|
developer, as well as feedback from users and information about the developer.
|
|
The Details page also includes an "Install" button that lets the user trigger
|
|
the download/purchase of the application.</p>
|
|
|
|
<p>If you want to refer the user to a specific appplication, your application
|
|
can take the user directly to the application's Details page. To do so, your
|
|
application sends an ACTION_VIEW Intent that includes a URI and query parameter
|
|
in this format:</p>
|
|
|
|
<p style="margin-left:2em"><code>market://details?id=<packagename></code></p>
|
|
|
|
<p>In this case, the <code>packagename</code> parameter is target application's
|
|
fully qualified package name, as declared in the <code>package</code> attribute
|
|
of the <code>manifest</code> element in the application's manifest file. For example:</p>
|
|
|
|
<p style="margin-left:2em"><code>market://details?id=com.example.android.jetboy</code></p>
|
|
|
|
<h4>Android Market URIs</h4>
|
|
|
|
<p>The table below provides a list of URIs and actions currently
|
|
supported by the Market application.</p>
|
|
|
|
<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>
|
|
|
|
<table>
|
|
<tr>
|
|
<th width="25%">For this Result</th>
|
|
<th>Pass this URI with the ACTION_VIEW Intent</th>
|
|
<th width="36%">Comments</th>
|
|
</tr>
|
|
<tr>
|
|
<td>Display the Details screen for a specific application, as identified
|
|
by the app's fully qualified package name.</td>
|
|
<td><code>http://market.android.com/details?id=<packagename></code>
|
|
or<br>
|
|
<code>market://details?id=<packagename></code></td>
|
|
<td>Note that the package name that you specify is <em>not</em> specific to any
|
|
version of an application. Therefore, Market always displays the Details page for the
|
|
latest version of the 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>
|