| 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> |