From 2b286bb26b95ac9d4eb35679239ea12d4f63b50b Mon Sep 17 00:00:00 2001
From: Dirk Dougherty
Beware that if your app requests one of the hardware device identifiers (such as the WiFi MAC address, the {@link android.os.Build#SERIAL} number, or the {@link diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd index 5350941c6c13..6cd6f9dd7b67 100644 --- a/docs/html/about/versions/jelly-bean.jd +++ b/docs/html/about/versions/jelly-bean.jd @@ -962,7 +962,7 @@ style="font-weight:500;">App Widgets can resize automatically to fit the
GCM handles all the details of queuing messages and delivering them efficiently to the targeted Android devices. It supports message multicasting and can reach up to 1000 connected devices simultaneously with a single request. It also supports message payloads, which means that in addition to sending tickle messages to an app on the device, developers can send up to 4K of data.
-Google Cloud Messaging is completely free for all developers and sign-up is easy. See the Google Cloud Messaging page for registration, downloads, and documentation.
+Google Cloud Messaging is completely free for all developers and sign-up is easy. See the Google Cloud Messaging page for registration, downloads, and documentation.
You can now set up a free trial period for any Google Play in-app subscription, making it easy for users try your subscriber content before automatically converting to a full subscription. Free trials give you a new way to bring users into your products and engage them effectively.
Read +href="{@docRoot}google/play/billing/billing_subscriptions.html#trials">Read more
diff --git a/docs/html/distribute/googleplay/about/distribution.jd b/docs/html/distribute/googleplay/about/distribution.jd index 0d055abdb236..aff5dab41171 100644 --- a/docs/html/distribute/googleplay/about/distribution.jd +++ b/docs/html/distribute/googleplay/about/distribution.jd @@ -62,7 +62,7 @@ others.When you upload your app, Google Play reads the dependencies and sets up any necessary distribution rules. For technical information about declaring -dependencies, read Filters on +dependencies, read Filters on Google Play.
For pinpoint control over distribution, Google Play lets you see all of the diff --git a/docs/html/distribute/googleplay/about/monetizing.jd b/docs/html/distribute/googleplay/about/monetizing.jd index 47d526629a72..cabd56bab83b 100644 --- a/docs/html/distribute/googleplay/about/monetizing.jd +++ b/docs/html/distribute/googleplay/about/monetizing.jd @@ -112,7 +112,7 @@ gameplay levels, and upgrades as in-app products. The only restriction is that free apps must remain free (to download) for the life of the app.
For details about in-app products or subscriptions, -see Google Play In-app Billing.
+see Google Play In-app Billing.For details on how to implement In-app Billing, see the -In-app Billing +In-app Billing developer documentation.
In-app Billing is a Google Play service that lets you monetize your apps in more ways by selling in-app products and subscriptions. In-app products are one-time purchases, while subscriptions are recurring charges on an monthly or annual basis.
+In-app Billing is a Google Play service that lets you monetize your apps in more ways by selling in-app products and subscriptions. In-app products are one-time purchases, while subscriptions are recurring charges on an monthly or annual basis.
From the Developer Console you can create product lists for in-app products and subscriptions, set prices, and publish.
diff --git a/docs/html/distribute/googleplay/publish/preparing.jd b/docs/html/distribute/googleplay/publish/preparing.jd index a3538a95c0ee..9b623e35b97e 100644 --- a/docs/html/distribute/googleplay/publish/preparing.jd +++ b/docs/html/distribute/googleplay/publish/preparing.jd @@ -188,7 +188,7 @@ launch target date. Google Play. Currently, the maximum size for an APK published on Google Play is 50 MB. If your app exceeds that size, or if you want to offer a secondary download, you can use APK Expansion Files, +href="{@docRoot}google/play/expansion-files.html">APK Expansion Files, which Google Play will host for free on its server infrastructure and automatically handle the download to devices. @@ -207,7 +207,7 @@ creating your release-ready APK.Related resources:
Related resources:
Google Play In-app
+ Google Play In-app
Billing lets you sell digital content in your applications. You can use the
service to sell a wide range of content, including downloadable content such as
media files or photos, and virtual content such as game levels or potions.
@@ -302,7 +302,7 @@ before creating your release-ready APK. Related resources:
diff --git a/docs/html/distribute/googleplay/quality/tablet.jd b/docs/html/distribute/googleplay/quality/tablet.jd
index 80346a7bb8c2..cc7ba3f3587f 100644
--- a/docs/html/distribute/googleplay/quality/tablet.jd
+++ b/docs/html/distribute/googleplay/quality/tablet.jd
@@ -478,7 +478,7 @@ and tablets), with a single Google Play listing:
-
GCM also provides helper libraries (client and server) to make writing your code easier.
+GCM also provides helper libraries (client and server) to make writing your code easier.
Here is the API reference documentation for the helper libraries on which the demo is based:
The sections below describe how to download the demo code and helper libraries from the SDK Manager. The demo code and helper libraries are also available at the open source site. diff --git a/docs/html/google/gcm/gs.jd b/docs/html/google/gcm/gs.jd index fc5c4a264702..df13373efe7d 100644 --- a/docs/html/google/gcm/gs.jd +++ b/docs/html/google/gcm/gs.jd @@ -25,7 +25,7 @@ page.title=GCM: Getting Started -
This document describes how to write an Android application and the server-side logic, using the helper libraries (client and server) provided by GCM.
+This document describes how to write an Android application and the server-side logic, using the helper libraries (client and server) provided by GCM.
Note: If you need to rotate the key, click Generate new key. A new key will be created while the old one will still be active for up to 24 hours. If you want to get rid of the old key immediately (for example, if you feel it was compromised), click Delete key.
To perform the steps described in the following sections, you must first install the helper libraries (reference: client and server). From the SDK Manager, install Extras > Google Cloud Messaging for Android Library. This creates a gcm directory under YOUR_SDK_ROOT/extras/google/ containing these subdirectories: gcm-client, gcm-server, samples/gcm-demo-client, samples/gcm-demo-server, and samples/gcm-demo-appengine.
To perform the steps described in the following sections, you must first install the helper libraries (reference: client and server). From the SDK Manager, install Extras > Google Cloud Messaging for Android Library. This creates a gcm directory under YOUR_SDK_ROOT/extras/google/ containing these subdirectories: gcm-client, gcm-server, samples/gcm-demo-client, samples/gcm-demo-server, and samples/gcm-demo-appengine.
Note: If you don't see Extras > Google Cloud Messaging for Android Library in the SDK Manager, make sure you are running version 20 or higher. Be sure to restart the SDK Manager after updating it.
diff --git a/docs/html/google/gcm/index.jd b/docs/html/google/gcm/index.jd index 8079ebae6e2c..503812593cf9 100644 --- a/docs/html/google/gcm/index.jd +++ b/docs/html/google/gcm/index.jd @@ -10,19 +10,19 @@ page.title=Google Cloud Messaging for AndroidTo learn more about GCM, you can join the android-gcm group and read the following documents:
GCM also provides helper libraries for client and server development.
+GCM also provides helper libraries for client and server development.
diff --git a/docs/html/google/index.jd b/docs/html/google/index.jd index 57a3524da6a5..97e4ea43b176 100644 --- a/docs/html/google/index.jd +++ b/docs/html/google/index.jd @@ -65,7 +65,7 @@ and track app usage. -Keep your users connected by delivering events with lightweight messages immediately from your web server. There are no quotas or charges to use Google Cloud Messaging.
@@ -82,7 +82,7 @@ and track app usage. -Build an app with a steady revenue stream that keeps users engaged by offering new content or virtual goods directly in your app. All transactions are handled by Google Play Store for a simple user experience. diff --git a/docs/html/google/play-services/dist.jd b/docs/html/google/play-services/dist.jd index 85a64f94e3cc..e179bff7fb10 100644 --- a/docs/html/google/play-services/dist.jd +++ b/docs/html/google/play-services/dist.jd @@ -21,7 +21,7 @@ page.title=Google Play Distribution and Licensing
Make sure your app gets to the right users by filtering on a wide range of characteristics such as platform versions and hardware features. -
+Distribute different APKs based on a variety of properties such as platform version, screen size, and GLES texture compression support. -
+Protect your revenue streams and integrate policies for usage into your app. -
Learn more » + Learn more »You should be redirected. Please click +href="http://developer.android.com/google/play/billing/index.html">click here.
\ No newline at end of file diff --git a/docs/html/google/play/billing/billing_admin.jd b/docs/html/google/play/billing/billing_admin.jd index cb288a5381d5..2413ae5dd474 100755 --- a/docs/html/google/play/billing/billing_admin.jd +++ b/docs/html/google/play/billing/billing_admin.jd @@ -15,20 +15,20 @@ parent.link=index.htmlcom.android.vendin
permission. If an application's manifest does not include this permission, you will be able to edit
existing items in the product list but you will not be able to add new items to the list. For more
information about this permission, see
-Updating Your
+Updating Your
Application's Manifest.
In addition, an application package can have only one product list. If you create a product
list for an application, and you use the multiple APK feature to distribute
+href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APK feature to distribute
more than one APK for that application, the product list applies to all APK versions that are
associated with the application listing. You cannot create individual product lists for each APK if
you are using the multiple APK feature.
@@ -143,7 +143,7 @@ number of in-app items.
Published and the item's application must be published on Google Play.
Note: This is not true for test accounts. An item is visible to
a test account if the application is not published and the item is published. See Testing In-app
+ href="{@docRoot}google/play/billing/billing_testing.html#billing-testing-real">Testing In-app
Billing for more information.
Before you implement in-app billing in your own application, be sure that you read Overview of In-app Billing and Security and Design. These +href="{@docRoot}google/play/billing/billing_overview.html">Overview of In-app Billing and Security and Design. These documents provide background information that will make it easier for you to implement in-app billing.
@@ -238,7 +238,7 @@ how to do this. your product list so thatsword_001 has a purchase type of "Managed per user
account" and potion_001 has a purchase type of "Unmanaged" so you can see how these
two purchase types behave. To learn how to set up a product list, see Creating a Product
+ href="{@docRoot}google/play/billing/billing_admin.html#billing-list-setup">Creating a Product
List.
Note: You must publish the items in your product
list (sword_001 and potion_001) even though you are not publishing the
@@ -258,7 +258,7 @@ onto a device to run it. To run the sample application, do the following:
You cannot purchase items from yourself (Google Wallet prohibits this), so you need to create at least one test account that you can use to purchase items in the sample application. To learn how to set up a test account, see Setting up Test + href="{@docRoot}google/play/billing/billing_testing.html#billing-testing-setup">Setting up Test Accounts.
The primary account on your device must be one of the test accounts + href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">test accounts that you registered on the Google Play publisher site. If the primary account on your device is not a test account, you must do a factory reset of the device and then sign in with one of your test accounts. To perform a factory reset, do the following:
@@ -466,7 +466,7 @@ indicates the item being purchased, and another identifies your application. The code. However, this is not the complete purchase response; the complete response is delivered with an asynchronous broadcast intent. For more information about the various Bundle keys that are supported by theMarketBillingService, see In-app Billing
+href="{@docRoot}google/play/billing/billing_reference.html#billing-interface">In-app Billing
Service Interface.
You can use the sendBillingRequest() method to send five types of billing requests.
@@ -482,7 +482,7 @@ key can have the following five values:
CONFIRM_NOTIFICATIONS—acknowledges that you received the transaction
information for a purchase or refund.RESTORE_TRANSACTIONS—retrieves a user's transaction history for managed
+ href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">managed
purchases.BILLING_REQUEST,
API_VERSION, and PACKAGE_NAME. If you are offering subscriptions in
your app, set the API_VERSION key to a value of "2", to confirm that In-app Billing v2 is
available. For an examnple, see
-Subscriptions.
+Subscriptions.
The CHECK_BILLING_SUPPORTED request returns a synchronous {@link
android.os.Bundle} response, which contains only a single key: RESPONSE_CODE. The
@@ -577,7 +577,7 @@ Help topic.
You must specify four keys in the request {@link android.os.Bundle}. The following code sample
shows how to set these keys and make a purchase request for a single in-app item. In the sample,
mProductId is the Google Play product ID of an in-app item (which is listed in the
-application's product
+application's product
list), and mService is an instance of the MarketBillingService
interface.
REQUEST_PURCHASE re
Note: The Google Play application also sends
an IN_APP_NOTIFY for refunds. For more information, see Handling
+href="{@docRoot}google/play/billing/billing_overview.html#billing-action-notify">Handling
IN_APP_NOTIFY messages.
Because the purchase process is not instantaneous and can take several seconds (or more), you
@@ -855,7 +855,7 @@ android.content.BroadcastReceiver}. To see an example of how you can send and re
messages, see the BillingReceiver.java and BillingService.java files in
the sample application. You can use these samples as a basis for your own implementation. However,
if you use any of the code from the sample application, be sure you follow the guidelines in Security and Design.
This broadcast intent contains a Google Play response code, and is sent after you make an in-app billing request. For more information about the response codes that are sent with this response, see Google Play Response + href="{@docRoot}google/play/billing/billing_reference.html#billing-codes">Google Play Response Codes for In-app Billing.
This response indicates that a purchase has changed state, which means a purchase succeeded, was canceled, or was refunded. For more information about notification messages, see In-app Billing + href="{@docRoot}google/play/billing/billing_reference.html#billing-intents">In-app Billing Broadcast Intents
This broadcast intent contains detailed information about one or more transactions. For more information about purchase state messages, see In-app Billing + href="{@docRoot}google/play/billing/billing_reference.html#billing-intents">In-app Billing Broadcast Intents
BillingReceiver.javaSecurity and Design .
+href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design .
Verifying Signatures and Nonces
@@ -1028,7 +1028,7 @@ code shows some simple methods you can use to do this.
PURCHASE_STATE_CHANGED broadcast intent. The Security.java file in the
sample application shows you how to do this. If you use this file as a basis for your own security
implementation, be sure to follow the guidelines in Security and Design and
+href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design and
obfuscate your code.
You will need to use your Google Play public key to perform the signature verification. The
@@ -1075,7 +1075,7 @@ sample application provides an example database (PurchaseDatabase.java); however
database has been simplified for clarity and does not exhibit the security best practices that we
recommend. If you have a remote server, we recommend that you store purchase information on your
server instead of in a local database on a device. For more information about security best
-practices, see Security and
+practices, see Security and
Design.
Note: If you store any purchase information on a device, be sure to
diff --git a/docs/html/google/play/billing/billing_overview.jd b/docs/html/google/play/billing/billing_overview.jd
index 82f6cf4e7443..4b2a64313e89 100755
--- a/docs/html/google/play/billing/billing_overview.jd
+++ b/docs/html/google/play/billing/billing_overview.jd
@@ -21,19 +21,19 @@ parent.link=index.html
Downloads
See also
- - Implementing In-app
+
- Implementing In-app
Billing
- - Security and
+
- Security and
Design
- - Testing In-app Billing
- - Administering In-app
+
- Testing In-app Billing
+ - Administering In-app
Billing
- - In-app Billing
+
- In-app Billing
Reference
@@ -156,7 +156,7 @@ messaging that takes place between your application and the Google Play applicat
interface. This interface is defined in an Android Interface Definition Language file
(IMarketBillingService.aidl). You can download this AIDL
+href="{@docRoot}google/play/billing/billing_integrate.html#billing-download">download this AIDL
file with the in-app billing sample application.
The sendBillingRequest() method has a single {@link android.os.Bundle} parameter.
@@ -164,7 +164,7 @@ The Bundle that you deliver must include several key-value pairs that specify va
the request, such as the type of billing request you are making, the item that is being purchased and
its type, and the application that is making the request. For more information about the Bundle keys
that are sent with a request, see In-app Billing
+href="{@docRoot}google/play/billing/billing_reference.html#billing-interface">In-app Billing
Service Interface.
One of the most important keys that every request Bundle must have is the
@@ -198,9 +198,9 @@ requests:
RESTORE_TRANSACTIONS
This request retrieves a user's transaction status for managed
+ href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">managed
purchases and subscriptions.
+ href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">subscriptions.
You should send this request only when you need to retrieve a user's transaction
status, which is usually only when your application is reinstalled or installed for the first
time on a device.
@@ -240,7 +240,7 @@ include the following:
request. This response is not used to report any purchase state changes (such as refund
or purchase information). For more information about the response codes that are sent with this
response, see Server Response Codes
+ href="{@docRoot}google/play/billing/billing_reference.html#billing-codes">Server Response Codes
for In-app Billing.
com.android.vending.billing.IN_APP_NOTIFY
@@ -276,7 +276,7 @@ string for a subscription item is shown below:
For more information about the fields in this JSON string, see In-app Billing
+href="{@docRoot}google/play/billing/billing_reference.html#billing-intents">In-app Billing
Broadcast Intents.
Messaging sequence
@@ -435,7 +435,7 @@ application can handle this message the same way it handles the response from an
application-initiated REQUEST_PURCHASE message, so that ultimately your application
receives a PURCHASE_STATE_CHANGED broadcast intent message that includes information
about the item that has been purchased. This applies only to items that have their purchase type set
+href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">purchase type set
to "managed per user account."
In the second case, your application can receive an IN_APP_NOTIFY broadcast intent
@@ -478,7 +478,7 @@ application. When your application receives the JSON string, you need to verify
the signature of the JSON string.
For more information about best practices for security and design, see Security and Design.
+href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design.
In-app Billing Requirements and Limitations
diff --git a/docs/html/google/play/billing/billing_reference.jd b/docs/html/google/play/billing/billing_reference.jd
index c5541fa2e7a1..e78c99ff59ac 100755
--- a/docs/html/google/play/billing/billing_reference.jd
+++ b/docs/html/google/play/billing/billing_reference.jd
@@ -15,20 +15,20 @@ parent.link=index.html
Downloads
See also
- - Overview of In-app
+
- Overview of In-app
Billing
- - Implementing In-app
+
- Implementing In-app
Billing
- - Security and
+
- Security and
Design
- - Testing In-app
+
- Testing In-app
Billing
- - Administering In-app
+
- Administering In-app
Billing
@@ -114,7 +114,7 @@ purchase an item from yourself, which is not allowed by Google Wallet.
The following section describes the interface for Google Play's in-app billing service. The
interface is defined in the IMarketBillingService.aidl file, which is included with the
in-app billing sample
+href="{@docRoot}google/play/billing/billing_integrate.html#billing-download">sample
application.
The interface consists of a single request method sendBillingRequest(). This method
takes a single {@link android.os.Bundle} parameter. The Bundle parameter includes several key-value
@@ -233,7 +233,7 @@ pairs, which are summarized in table 2.
RESTORE_TRANSACTIONS
This request retrieves a user's transaction status for managed purchases (see Choosing a
+ href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">Choosing a
Purchase Type for more information). You should send this message only when you need to
retrieve a user's transaction status, which is usually only when your application is reinstalled
or installed for the first time on a device.
@@ -304,7 +304,7 @@ each in-app billing request type.
Play application. These broadcast intents inform your application about in-app billing actions
that have occurred. Your application must implement a {@link android.content.BroadcastReceiver} to
receive these broadcast intents, such as the BillingReceiver that's shown in the in-app
-billing sample
+billing sample
application.
com.android.vending.billing.RESPONSE_CODE
@@ -442,7 +442,7 @@ validity of a specific subscription at any time or cancel a subscription. The
API is designed to be used from your backend servers as a way of securely
managing subscriptions, as well as extending and integrating subscriptions with
other services. See
+href="{@docRoot}google/play/billing/billing_subscriptions.html#play-dev-api">
Google Play Android Developer API for more information.
In-app Billing API Versions
@@ -457,7 +457,7 @@ Versions are specified in the API_VERSION key of the Bundle object
passed in the sendBillingRequest(), which is defined in the defined
in the IMarketBillingService.aidl file, which is included with the
in-app billing
+href="{@docRoot}google/play/billing/billing_integrate.html#billing-download">
sample application. For more information, see In-app Billing Service Interface.
In-app Billing version 2
diff --git a/docs/html/google/play/billing/billing_subscriptions.jd b/docs/html/google/play/billing/billing_subscriptions.jd
index 68eda196e3fe..5980d835973d 100755
--- a/docs/html/google/play/billing/billing_subscriptions.jd
+++ b/docs/html/google/play/billing/billing_subscriptions.jd
@@ -48,19 +48,19 @@ parent.link=index.html
Downloads
See also
- - Overview of In-app
+
- Overview of In-app
Billing
- - Security and
+
- Security and
Design
- - Testing In-app
+
- Testing In-app
Billing
- - Administering In-app
+
- Administering In-app
Billing
- - In-app Billing
+
- In-app Billing
Reference
@@ -78,7 +78,7 @@ subscriptions using the standard communication model, data structures, and user
interactions as for other in-app products.subscriptions. Because the
implementation of subscriptions follows the same path as for other in-app
products, details are provided outside of this document, starting with the In-app Billing
+href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing
Overview.
This document is focused on highlighting implementation details that are
@@ -395,7 +395,7 @@ other in-app products.subscriptions.
The full implementation details for In-app Billing are provided outside of
this document, starting with the In-app Billing
+href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing
Overview. This document is focused on highlighting implementation details
that are specific to subscriptions, along with some strategies for the
associated billing and business models.
@@ -407,7 +407,7 @@ associated billing and business models.
subscriptions, an updated version of the In-app Billing sample app is available.
You can download the sample app from the Android SDK repository using the
Android SDK Manager. For details, see
+href="{@docRoot}google/play/billing/billing_integrate.html#billing-download">
Downloading the Sample Application.
Application model
@@ -426,7 +426,7 @@ Play. Also recommended are a response Handler for processing notifications,
errors, and status messages, and an observer for sending callbacks to your
application as needed. All of these components and their interactions are
described in full in the In-app Billing
+href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing
Overview and related documents.
To initiate different types of billing communication with Google Play, your
@@ -470,7 +470,7 @@ is shown below.
pass it to your backend servers, which can then use it to query the billing
status or cancel the subscription remotely. If your app will store the token
locally, please read the Security and
+href="{@docRoot}google/play/billing/billing_best_practices.html">Security and
Design document for best practices for maintaining the security of your
data.
@@ -565,7 +565,7 @@ transaction..
The REQUEST_PURCHASE includes a Bundle containing the item details, as
described in the In-app Billing
+href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing
Overview. For a subscription, the Bundle must also specify:
@@ -581,7 +581,7 @@ Overview. For a subscription, the Bundle must also specify:
RESPONSE_CODE, PURCHASE_INTENT, and
REQUEST_ID. Your app uses the PURCHASE_INTENT to
launch the checkout UI and the message flow proceeds exactly as described in Messaging sequence.
Here’s how the sample app initiates a purchase for a subscription, where
@@ -638,7 +638,7 @@ the subscriptions that the user has purchased.
The process for restoring subscriptions transactions is the same as described
in Messaging sequence. Your app sends a
RESTORE_TRANSACTIONS request to Google Play. Google Play sends two
broadcast intents as asynchronous responses — a RESPONSE_CODE
@@ -654,7 +654,7 @@ restore locally.
Your app can store the restored purchase state and other transaction details
in the way that best meets your needs. Your app can use it later to check the
subscription validity, although please read the Security and
+href="{@docRoot}google/play/billing/billing_best_practices.html">Security and
Design document for best practices for maintaining the security of your
data.
@@ -788,7 +788,7 @@ your app does not need to grant further access to the subscription content.
For subscriptions, you make the same types of modifications to your app as
are described in
+href="{@docRoot}google/play/billing/billing_integrate.html#billing-implement">
Modifying your Application Code.
Note that, in your UI that lets users view and select subscriptions for
@@ -816,7 +816,7 @@ subscription product:
- Additional currency pricing (can be auto-filled)
-For details, please see Administering
+For details, please see Administering
In-app Billing.
diff --git a/docs/html/google/play/billing/billing_testing.jd b/docs/html/google/play/billing/billing_testing.jd
index e2d4a014cbbf..edf7e70e710c 100755
--- a/docs/html/google/play/billing/billing_testing.jd
+++ b/docs/html/google/play/billing/billing_testing.jd
@@ -13,20 +13,20 @@ parent.link=index.html
Downloads
See also
@@ -94,7 +94,7 @@ reserved product IDs.
request through your Google Wallet account, a refund message is sent to your application by
Google Play. This occurs only when Google Play gets notification from Google Wallet that
a refund has been made. For more information about refunds, see Handling
+ href="{@docRoot}google/play/billing/billing_overview.html#billing-action-notify">Handling
IN_APP_NOTIFY messages and In-app Billing
Pricing.
@@ -108,7 +108,7 @@ reserved product IDs.
In some cases, the reserved items may return signed static responses, which lets you test
signature verification in your application. To test signature verification with the special reserved
product IDs, you may need to set up test accounts or
+href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">test accounts or
upload your application as a unpublished draft application. Table 1 shows you the conditions under
which static responses are signed.
@@ -218,7 +218,7 @@ testing.
register at least one test account on the Google Play publisher site. You cannot use your
developer account to test the complete in-app purchase process because Google Wallet does not let
you buy items from yourself. If you have not set up test accounts before, see Setting up test
+href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">Setting up test
accounts.
Also, a test account can purchase an item in your product list only if the item is published. The
@@ -243,7 +243,7 @@ actual payouts to your merchant account.
Add items to the application's product list.
Make sure that you publish the items (the application can remain unpublished). See Creating a product
+ href="{@docRoot}google/play/billing/billing_admin.html#billing-catalog">Creating a product
list to learn how to do this.
Install your application on an Android-powered device.
@@ -256,7 +256,7 @@ actual payouts to your merchant account.
Make one of your test accounts the primary account on your device.
To perform end-to-end testing of in-app billing, the primary account on your device must be
one of the test accounts
+ href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">test accounts
that you registered on the Google Play site. If the primary account on your device is not a
test account, you must do a factory reset of the device and then sign in with one of your test
accounts. To perform a factory reset, do the following:
diff --git a/docs/html/google/play/billing/index.jd b/docs/html/google/play/billing/index.jd
index 134140d3d62d..80ba2d4ab275 100755
--- a/docs/html/google/play/billing/index.jd
+++ b/docs/html/google/play/billing/index.jd
@@ -6,25 +6,25 @@ page.title=In-app Billing
Topics
- - Overview of In-app
+
- Overview of In-app
Billing
- - Implementing In-app
+
- Implementing In-app
Billing
- - Subscriptions
- - Security and
- Design
- Testing In-app
+
- Subscriptions
+ - Security and
+ Design
- Testing In-app
Billing
- - Administering In-app
+
- Administering In-app
Billing
Reference
Downloads
@@ -43,7 +43,7 @@ and features, and more. You can use In-app Billing to sell products as
Free trials for subscriptions New!
- You can now offer users a configurable free trial period for your in-app subscriptions. You can set up trials with a simple change in the Developer Console—no change to your app code is needed.
+
You can now offer users a configurable free trial period for your in-app subscriptions. You can set up trials with a simple change in the Developer Console—no change to your app code is needed.
@@ -71,7 +71,7 @@ business logic you might use to implement in-app billing.
Important: Although the sample application is a working example
of how you can implement in-app billing, we strongly recommend that you modify and
obfuscate the sample code before you use it in a production application. For more information, see
-Security and Design.
+Security and Design.
@@ -84,29 +84,29 @@ obfuscate the sample code before you use it in a production application. For mor
applications, read the following documents:
- - Overview of In-app
+
- Overview of In-app
Billing
- Learn how the service works and what a typical in-app billing implementation looks
like.
- - Implementing
+
- Implementing
In-app Billing
- Use this step-by-step guide to start incorporating in-app billing into your
application. The instructions apply to both one-time and subscription purchases.
- - Subscriptions
+ - Subscriptions
- Learn how subscriptions work and how to implement support for them in your app.
- - Security
+
- Security
and Design
- Review these best practices to help ensure that your in-app billing implementation is
secure and well designed.
- - Testing In-app
+
- Testing In-app
Billing
- Understand how the in-app billing test tools work and learn how to test your in-app billing
implementation.
- - Administering
+
- Administering
In-app Billing
- Learn how to set up your product list, register test accounts, and handle refunds.
- - In-app Billing
+
- In-app Billing
Reference
- Get detailed information about Google Play response codes and the in-app billing
interface.
diff --git a/docs/html/google/play/dist.jd b/docs/html/google/play/dist.jd
index 7e6031533475..20523f6ec740 100644
--- a/docs/html/google/play/dist.jd
+++ b/docs/html/google/play/dist.jd
@@ -17,7 +17,7 @@ page.title=Google Play Distribution and Licensing
Make sure your app gets to the right users by filtering on a wide range of characteristics
such as platform versions and hardware features.
-
+
@@ -27,7 +27,7 @@ page.title=Google Play Distribution and Licensing
Distribute different APKs based on a variety of properties such as platform version, screen
size, and GLES texture compression support.
-
+
@@ -39,7 +39,7 @@ page.title=Google Play Distribution and Licensing
Tap into Google's content delivery services by serving up to 4GB of assets for free. Provide
users with high-fidelity graphics, media files, or other large assets that are required by
your app.
- Learn more »
+ Learn more »
@@ -47,6 +47,6 @@ page.title=Google Play Distribution and Licensing
Application Licensing
Protect your revenue streams and integrate policies for usage into your app.
-
Learn more »
+ Learn more »
\ No newline at end of file
diff --git a/docs/html/google/play/expansion-files.jd b/docs/html/google/play/expansion-files.jd
index 9cd1bb142278..271c19210ffa 100644
--- a/docs/html/google/play/expansion-files.jd
+++ b/docs/html/google/play/expansion-files.jd
@@ -52,8 +52,8 @@ page.title=APK Expansion Files
See also
@@ -216,7 +216,7 @@ already saved on the device.
- If yes, your app is ready to go.
- If no, your app must download the expansion files over HTTP from Google Play. Your app
must send a request to the Google Play client using the Google Play's Application Licensing service, which
+href="{@docRoot}google/play/licensing/index.html">Application Licensing
service, which
responds with the name, file size, and URL for each expansion file. With this information, you then
download the files and save them to the proper storage location.
@@ -243,7 +243,7 @@ application:
Space is precious and you should keep your total application size as small as possible. If your app
uses more than 50MB in order to provide multiple versions of your graphic assets for multiple screen
densities, consider instead publishing multiple APKs in which each APK
+href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APKs in which each APK
contains only the assets required for the screens that it targets.
Determine which application resources to separate from your APK and package them in a
file to use as the main expansion file.
@@ -260,7 +260,7 @@ Library.
Add logic to your application's main activity that checks whether the expansion files
are on the device upon start-up. If the files are not on the device, use Google Play's Application Licensing service to request URLs
+href="{@docRoot}google/play/licensing/index.html">Application Licensing service to request URLs
for the expansion files, then download and save them.
To greatly reduce the amount of code you must write and ensure a good user experience
during the download, we recommend you use the Downloader
@@ -293,16 +293,16 @@ provide the URLs for your expansion files if the application was installed by ot
provides for each file is unique for every download and each one expires shortly after it is given
to your application.
If you update your application with a new APK or upload multiple APKs for the same
+href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APKs for the same
application, you can select expansion files that you've uploaded for a previous APK. The
expansion file's name does not change—it retains the version received by the APK to
which the file was originally associated.
If you use expansion files in combination with multiple APKs in order to
+href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APKs in order to
provide different expansion files for different devices, you still must upload separate APKs
for each device in order to provide a unique {@code versionCode}
-value and declare different filters for
+value and declare different filters for
each APK.
You cannot issue an update to your application by changing the expansion files
alone—you must upload a new APK to update your app. If your changes only
@@ -334,7 +334,7 @@ time it installs or updates the APK. This way, the expansion files are available
application launches for the first time. However, in some cases your app must download the
expansion files itself by requesting them from a URL provided to you in a response
from Google Play's Application Licensing service.
+href="{@docRoot}google/play/licensing/index.html">Application Licensing service.
The basic logic you need to download your expansion files is the following:
@@ -347,7 +347,7 @@ href="#StorageLocation">shared storage location (in the
If the expansion files are not there:
- Perform a request using Google Play's Application Licensing to get your
+href="{@docRoot}google/play/licensing/index.html">Application Licensing to get your
app's expansion file names, sizes, and URLs.
- Use the URLs provided by Google Play to download the expansion files and save
the expansion files. You must save the files to the
If your application is free (not a paid app), then you probably haven't used the Application Licensing service. It's primarily
+href="{@docRoot}google/play/licensing/index.html">Application Licensing
service. It's primarily
designed for you to enforce
licensing policies for your application and ensure that the user has the right to
use your app (he or she rightfully paid for it on Google Play). In order to facilitate the
@@ -410,7 +410,7 @@ download your expansion files. The information in the following sections explain
the library into your application.
If you'd rather develop your own solution to download the expansion files using the Google
-Play URLs, you must follow the Application
+Play URLs, you must follow the Application
Licensing documentation to perform a license request, then retrieve the expansion file names,
sizes, and URLs from the response extras. You should use the {@code
APKExpansionPolicy} class (included in the License Verification Library) as your licensing
@@ -572,11 +572,11 @@ DownloaderService} class and override three methods to provide specific applicat
- {@code getPublicKey()}
- This must return a string that is the Base64-encoded RSA public key for your publisher
account, available from the profile page on the Developer Console (see Setting Up for Licensing).
+href="{@docRoot}google/play/licensing/setting-up.html">Setting Up for Licensing).
- {@code getSALT()}
- This must return an array of random bytes that the licensing {@code Policy} uses to
create an {@code
+href="{@docRoot}google/play/licensing/adding-licensing.html#impl-Obfuscator">{@code
Obfuscator}. The salt ensures that your obfuscated {@link android.content.SharedPreferences}
file in which your licensing data is saved will be unique and non-discoverable.
- {@code getAlarmReceiverClassName()}
@@ -925,7 +925,7 @@ expansion files:
For more information about how to use the {@code APKExpansionPolicy} when you're not
using the Downloader Library, see the documentation for Adding Licensing to Your App,
+href="{@docRoot}google/play/licensing/adding-licensing.html">Adding Licensing to Your App,
which explains how to implement a license policy such as this one.
diff --git a/docs/html/google/play/filters.jd b/docs/html/google/play/filters.jd
index 3db9cb634d06..eeb2215e629a 100644
--- a/docs/html/google/play/filters.jd
+++ b/docs/html/google/play/filters.jd
@@ -6,19 +6,18 @@ page.title=Filters on Google Play
Quickview
-- Google Play applies filters that control which Android-powered devices can access your
-application when the user is visiting the store.
-- Filtering is determined by comparing device configurations that you declare in you app's
-manifest file to the configurations defined by the device, as well as other factors.
+ - Google Play applies filters to control which Android devices can download
+your application from the store.
+- Filtering ensures that your apps are available only to users whose devices meet your app's compatibility requirements.
+
- Filtering is determined by the configuration requirements that you declare in you app's
+manifest file, as well as other factors.
+
In this document
- How Filters Work on Google Play
- Filtering based on Manifest Elements
-
- Other Filters
- Publishing Multiple APKs with Different Filters
@@ -44,53 +43,44 @@ href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-per
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><uses-sdk>
-
- Go to Google Play to create a publisher -account and upload your app.
When a user searches or browses for apps to download on Google Play, the +results are filtered based on which applications are compatible with the device. +For example, if an app requires a camera, Google Play would not show the app to devices +that do not have a camera. This filtering helps developers manage the +distribution of their apps and helps ensure the best possible experience for +users.
-When a user searches or browses on Google Play on an Android device, the results are filtered -based on which applications are compatible with that device. For example, if an application -requires a camera (as specified in the application manifest file), then Google Play will not show -the app on any device that does not have a camera.
- -Declarations in the manifest file that are compared to the device's configuration is not the -only part of how applications are filtered. Filtering might also occur due to the user's country and -carrier, the presence or absence of a SIM card, and other factors.
+Filtering in Google Play is based on several types of app metadata and +configuration settings, including manifest declarations, required +libraries,architecture dependencies, and distribution controls set in the Google +Play Developer Console, such as geographic targeting, pricing, and more.
-Changes to the Google Play filters are independent of changes to the Android platform itself. -This document is updated periodically to reflect any changes that affect the way Google Play -filters applications.
+Google Play filtering is based in part on manifest declarations and other +aspects of the Android framework, but actual filtering behaviors are distinct +from the framework and are not bound to specific API levels. This document +specifies the current filtering rules used by Google Play.
Google Play uses the filter restrictions described below to determine whether to show your application to a user who is browsing or searching for -applications from the Google Play app. When determining whether to display your app, -Google Play checks the device's hardware and software configuration, as well as it's -carrier, location, and other characteristics. It then compares those against the -restrictions and dependencies expressed by the application's -manifest file and publishing details. If the application is -compatible with the device according to the filter rules, Google Play displays the -application to the user. Otherwise, Google Play hides your application from search -results and category browsing, even if a user specifically requests -the app by clicking a deep link that points directly to the app's ID within Google Play..
- -Note: When users browse the Google Play web site, they can see all published -applications. The Google Play web site compares the application requirements to each of the -user's registered devices for compatibility, though, and only allows them to install the application -if it's compatible with their device.
+applications from the Google Play app. + +When determining whether to display your app, Google Play checks the device's +hardware and software requirement, as well as it's carrier, location, and other +characteristics. It then compares those against the restrictions and +dependencies expressed by the application's manifest file and publishing +details.
+ +If the application is compatible with the device according to the filter +rules, Google Play displays the application to the user. Otherwise, Google Play +hides your application from search results and category browsing, even if a user +specifically requests the app by clicking a deep link that points directly to +the app's ID within Google Play.
You can use any combination of the available filters for your app. For example, you can set a
minSdkVersion requirement of "4" and set smallScreens="false"
@@ -103,8 +93,15 @@ change between versions. For example, if a user has installed your application a
update that makes the app invisible to the user, the user will not see that an update is
available.
When users browse the Google Play web +site, they can see all published applications. The Google Play web site +compares the application requirements to each of the user's registered devices +for compatibility, though, and only allows them to install the application if +it's compatible with their device.
-Most filters are triggered by elements within an application's
manifest file,
If you need more information about how to publish multiple APKs on Google Play, read Multiple APK Support.
The sections below describe these tasks. When you are done with the integration, you should be able to compile your application successfully and you can begin testing, as described in Setting Up the Test +href="{@docRoot}google/play/licensing/setting-up.html#test-env">Setting Up the Test Environment.
For an overview of the full set of source files included in the LVL, see Summary of LVL Classes +href="{@docRoot}google/play/licensing/licensing-reference.html#lvl-summary">Summary of LVL Classes and Interfaces.
@@ -224,7 +224,7 @@ in local persistent storage. cached response is valid, rather than making a request to the licensing server. Setting the response validity according to the server-providedVT
extra is highly recommended. See Server Response Extras
+href="{@docRoot}google/play/licensing/licensing-reference.html#extras">Server Response Extras
for more information.
See Server Response Extras
+href="{@docRoot}google/play/licensing/licensing-reference.html#extras">Server Response Extras
for
a list of settings and ServerManagedPolicy.java for information
about how a {@code Policy} can use the extras.
processServerResponse() method and checks
them in its allowAccess() method. For a list of the server-provided
settings used by ServerManagedPolicy, see Server Response
+href="{@docRoot}google/play/licensing/licensing-reference.html#extras">Server Response
Extras.
For convenience, best performance, and the benefit of using license settings @@ -697,9 +697,9 @@ private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
Additionally, you should implement the applicationError()
method, which the LVL calls to let your application handle errors that are not
retryable. For a list of such errors, see Server
+href="{@docRoot}google/play/licensing/licensing-reference.html#server-response-codes">Server
Response Codes in the Licensing Reference. You can implement
+href="{@docRoot}google/play/licensing/licensing-reference.html">Licensing Reference. You can implement
the method in any way needed. In most cases, the
method should log the error code and call dontAllow().
To learn more about Google Play's application licensing service and start integrating it into your applications, read the following documents:
Note: As documented in +href="{@docRoot}google/play/licensing/setting-up.html#test-env"> Setting Up The Testing Environment, the response code can be manually overridden for the application developer and any registered test users via the Google Play publisher site. @@ -251,13 +251,13 @@ testing purposes.
period and provide other information, The licensing server includes several pieces of information in the license responses. Specifically, the service provides recommended values for the application's license validity period, retry grace period, maximum allowable retry count, and other -settings. If your application uses APK +settings. If your application uses APK expansion files, the response also includes the file names, sizes, and URLs. The server appends the settings as key-value pairs in the license response "extras" field.Any {@code Policy} implementation can extract the extras settings from the license response and use them as needed. The LVL default {@code Policy} implementation, {@code +href="{@docRoot}google/play/licensing/adding-licensing.html#ServerManagedPolicy">{@code ServerManagedPolicy}, serves as a working implementation and an illustration of how to obtain, store, and use the settings.
diff --git a/docs/html/google/play/licensing/overview.jd b/docs/html/google/play/licensing/overview.jd index 467a3a2c151c..11237484c59c 100644 --- a/docs/html/google/play/licensing/overview.jd +++ b/docs/html/google/play/licensing/overview.jd @@ -206,7 +206,7 @@ secure.To begin adding application licensing to your application, continue to Setting Up for Licensing.
+href="{@docRoot}google/play/licensing/setting-up.html">Setting Up for Licensing. diff --git a/docs/html/google/play/licensing/setting-up.jd b/docs/html/google/play/licensing/setting-up.jd index 80a44192c754..77e9d09435ef 100644 --- a/docs/html/google/play/licensing/setting-up.jd +++ b/docs/html/google/play/licensing/setting-up.jd @@ -102,7 +102,7 @@ responses, see Setting Up a Testing Environment, below.The sections below describe these tasks. When you are done with setup, -you can begin Adding +you can begin Adding Licensing to Your App.
To get started, you need to set up a proper runtime environment on which
@@ -358,7 +358,7 @@ LVL's library/src/com directory into your application's
If you add the LVL sources directly to your application, you can skip the next section and start working with the library, as described in Adding +href="{@docRoot}google/play/licensing/adding-licensing.html">Adding Licensing to Your App.
@@ -483,9 +483,9 @@ test in your application.In general, you should make sure to test your application's licensing implementation with every response code available in the Test Response menu. For a description of the codes, see Server +href="{@docRoot}google/play/licensing/licensing-reference.html#server-response-codes">Server Response Codes in the Licensing Reference.
+href="{@docRoot}google/play/licensing/licensing-reference.html">Licensing Reference.
Figure 4. The Licensing @@ -506,7 +506,7 @@ sign using either your publisher account or one of the test accounts that you have set up. For more information about test accounts, see the next section.
See Server +href="{@docRoot}google/play/licensing/licensing-reference.html#server-response-codes">Server Response Codes for a list of test responses available and their meanings.
@@ -695,7 +695,7 @@ publisher account or test account each time you wipe data when restarting the emulator.Once you've completed the setup procedures, continue to Adding Licensing to Your App.
+href="{@docRoot}google/play/licensing/adding-licensing.html">Adding Licensing to Your App. diff --git a/docs/html/google/play/publishing/multiple-apks.jd b/docs/html/google/play/publishing/multiple-apks.jd index 0619dfc62ac3..fc9e0f9c5181 100644 --- a/docs/html/google/play/publishing/multiple-apks.jd +++ b/docs/html/google/play/publishing/multiple-apks.jd @@ -44,8 +44,8 @@ support all desired devices with a single APKWhich devices receive each APK is determined by Google Play filters that are specified by +href="{@docRoot}google/play/filters.html">Google Play filters that are specified by elements in the manifest file of each APK. However, Google Play allows you to publish multiple APKs only when each APK uses filters to support a variation of the following device characteristics:
@@ -293,7 +293,7 @@ higher, as per the previous note).Other manifest elements that enable Google Play filters—but are not +href="{@docRoot}google/play/filters.html">Google Play filters—but are not listed above—are still applied for each APK as usual. However, Google Play does not allow you to publish separate APKs based on variations of those device characteristics. Thus, you cannot publish multiple APKs if the above listed filters are the same for each APK (but the APKs differ diff --git a/docs/html/guide/appendix/install-location.jd b/docs/html/guide/appendix/install-location.jd index 19c4b3900ef1..50f6d27b49f1 100644 --- a/docs/html/guide/appendix/install-location.jd +++ b/docs/html/guide/appendix/install-location.jd @@ -174,7 +174,7 @@ external storage, it can never receive this broadcast.
For more information about how Google Play filters applications based on these (and other) -requirements, see the Filters on Google Play +requirements, see the Filters on Google Play document.
diff --git a/docs/html/guide/practices/compatibility.jd b/docs/html/guide/practices/compatibility.jd index a2284bd03133..bc584035f624 100644 --- a/docs/html/guide/practices/compatibility.jd +++ b/docs/html/guide/practices/compatibility.jd @@ -7,7 +7,7 @@ page.title=Android CompatibilityIf you need more information about how to publish multiple APKs on Google Play, read Multiple APK Support.
+href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support. diff --git a/docs/html/guide/topics/data/install-location.jd b/docs/html/guide/topics/data/install-location.jd index 5abdced5519f..061a2c0f241e 100644 --- a/docs/html/guide/topics/data/install-location.jd +++ b/docs/html/guide/topics/data/install-location.jd @@ -167,7 +167,7 @@ external storage, it can never receive this broadcast.Also see the Filters on Google Play +
Also see the Filters on Google Play document for more information about how Google Play filters applications using this and other manifest elements.
@@ -138,5 +138,5 @@ entry looks like if your application is compatible with only small and normal scCaution: If your application uses Google Play's Copy Protection feature, it cannot be installed to a device's SD card. However, if you use Google - Play's Application Licensing instead, + Play's Application Licensing instead, your application can be installed to internal or external storage, including SD cards.
Note: By default, your application will be installed on the diff --git a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd index 6dfc59e0b800..65d3d4042db0 100644 --- a/docs/html/guide/topics/manifest/supports-gl-texture-element.jd +++ b/docs/html/guide/topics/manifest/supports-gl-texture-element.jd @@ -3,38 +3,36 @@ parent.title=The AndroidManifest.xml File parent.link=manifest-intro.html @jd:body +
Google Play Filtering
+Google Play filters applications according + to the texture compression formats that they support, to ensure that + they can be installed only on devices that can handle their textures + properly. You can use texture compression filtering + as a way of targeting specific device types, based on GPU platform.
+ +For important information about how
+ Google Play uses <supports-gl-texture> elements as
+ the basis for filtering, please read Google
+ Play and texture compression filtering, below.
-<supports-gl-texture android:name="string" /> +<supports-gl-texture + android:name="string" />
<manifest>
- Google Play and <supports-gl-texture> elements
Google Play filters applications according - to the texture compression formats that they support, to ensure that - they can be installed only on devices that can handle their textures - properly. Developers can use texture compression filtering - as a way of targeting specific device types, based on GPU platform.
- -For important information about how
- Google Play uses <supports-gl-texture> elements as
- the basis for filtering, please read Google
- Play and texture compression filtering, below.
<uses-configuration android:reqFiveWayNav=["true" | "false"] - android:reqHardKeyboard=["true" | "false"] - android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | - "twelvekey"] - android:reqNavigation=["undefined" | "nonav" | "dpad" | - "trackball" | "wheel"] - android:reqTouchScreen=["undefined" | "notouch" | "stylus" | - "finger"] />
<uses-configuration + android:reqFiveWayNav=["true" | "false"] + android:reqHardKeyboard=["true" | "false"] + android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"] + android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"] + android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
<manifest><uses-feature android:name="string" - android:required=["true" | "false"] - android:glEsVersion="integer" />-
<manifest>
- Google Play and <uses-feature> elements
Google Play filters the applications that are visible to users, so -that users can see and download only those applications that are compatible with their -devices. One of the ways it filters applications is by feature compatibility.
- -To do this, Google Play checks the
-<uses-feature> elements in each application's manifest, to
-establish the app's feature needs. Google Play then shows or hides the application to
-each user, based on a comparison with the features available on the user's
-device.
Google Play Filtering
+Google Play uses the <uses-feature>
+ elements declared in your app manifest to filter your app from devices
+ that do not meet it's hardware and software feature requirements.
By specifying the features that your application requires, you enable Google Play to present your application only to users whose devices meet the application's feature requirements, rather than presenting it to all users.
-For important information about how +
For important information about how Google Play uses features as the basis for filtering, please read Google Play and Feature-Based Filtering, below.
<uses-feature + android:name="string" + android:required=["true" | "false"] + android:glEsVersion="integer" />+
<manifest><uses-permission>Google Play Filtering
+Google Play uses the <uses-library> elements declared + in your app manifest to filter your app from devices that do not meet it's library + requirements. For more information about filtering, see the topic + Google Play filters.
+-<uses-library android:name="string" - android:required=["true" | "false"] /> +<uses-library + android:name="string" + android:required=["true" | "false"] />
The {@code android:required} attribute is described in detail in the following section. diff --git a/docs/html/guide/topics/manifest/uses-permission-element.jd b/docs/html/guide/topics/manifest/uses-permission-element.jd index 6c71fb46c97e..8e9e795accb0 100644 --- a/docs/html/guide/topics/manifest/uses-permission-element.jd +++ b/docs/html/guide/topics/manifest/uses-permission-element.jd @@ -5,22 +5,21 @@ parent.link=manifest-intro.html
- <uses-permission> and filtering on Google Play.
Google Play Filtering
-In some cases, the permissions that you request +
In some cases, the permissions that you request
through <uses-permission> can affect how
your application is filtered by Google Play.
If you request a hardware-related permission — +
If you request a hardware-related permission —
CAMERA, for example — Google Play assumes that your
application requires the underlying hardware feature and filters the application
from devices that do not offer it.
To control filtering, always explicitly declare +
To control filtering, always explicitly declare
hardware features in <uses-feature> elements, rather than
relying on Google Play to "discover" the requirements in
<uses-permission> elements. Then, if you want to disable
@@ -28,14 +27,13 @@ filtering for a particular feature, you can add a
android:required="false" attribute to the
<uses-feature> declaration.
For a list of permissions that imply +
For a list of permissions that imply
hardware features, see the documentation for the
<uses-feature> element.
<uses-permission android:name="string" />
Google Play Filtering
+Google Play uses the <uses-sdk>
+ attributes declared in your app manifest to filter your app from devices
+ that do not meet it's platform version requirements. Before setting these
+ attributes, make sure that you understand
+ Google Play filters.
@@ -52,22 +64,6 @@ major version or the sum of the major and minor versions). Versioning Your Applications.
- Google Play and <uses-sdk> attributes
-Google Play filters the applications that are visible to users, so
-that users can only see and download applications that are compatible with their
-devices. One of the ways it filters applications is by Android
-version-compatibility. To do this, Google Play checks the <uses-sdk>
-attributes in each application's manifest to establish its version-compatibility
-range, then shows or hides the application based on a comparison with the API
-Level of the user's Android system version. For more information, see Filters on Google Play.
The following table specifies the API Level supported by each version of the -Android platform.
+The table below specifies the API Level supported by each version of the +Android platform. For information about the relative numbers of devices that +are running each version, see the Platform +Versions dashboards page.
| Platform Version | API Level | VERSION_CODE | Notes |
|---|---|---|---|
| Android 4.2 | +17 | +{@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} | +Platform +Highlights |
| Android 4.1, 4.1.1 | 16 | {@link android.os.Build.VERSION_CODES#JELLY_BEAN} | diff --git a/docs/html/sdk/exploring.jd b/docs/html/sdk/exploring.jd index 8272b061a0c9..e8d8e3769b2d 100644 --- a/docs/html/sdk/exploring.jd +++ b/docs/html/sdk/exploring.jd @@ -85,13 +85,13 @@ android.support.v4.view.ViewPager} APIs that allow you to easily build a side-sw{@code <sdk>/extras/android/support/} |
| Google Play Billing | +Google Play Billing | Provides the static libraries and samples that allow you to integrate billing services in your app with Google Play. | {@code <sdk>/extras/google/} |
| Google Play Licensing | +Google Play Licensing | Provides the static libraries and samples that allow you to perform license verification for your app when distributing with Google Play. | {@code <sdk>/extras/google/} | diff --git a/docs/html/tools/help/jobb.jd b/docs/html/tools/help/jobb.jd index d390ac945411..97f094232555 100644 --- a/docs/html/tools/help/jobb.jd +++ b/docs/html/tools/help/jobb.jd @@ -8,7 +8,7 @@ page.title=JOBB Level 9) or higher. OBB files are used to provide additional file assets for Android applications (such as graphics, sounds and video), separate from an application's APK file. For more information on using expansion files, see - APK Expansion Files. + APK Expansion Files.
Now, let’s further assume that the Red APK has some requirement on it that the other two don’t. The -Filters on Google Play page of the Android +Filters on Google Play page of the Android Developer guide has a whole list of possible culprits. For the sake of example, let’s assume that red requires a front-facing camera. In fact, the entire point of the red APK is to use the extra available screen space to do entertaining things with that front-facing camera. But, it turns out, @@ -243,7 +243,7 @@ size.
In order to keep all your APKs on separate "tracks", it’s important to have a good version code scheme. The recommended one can be found on the Version Codes area of +href="{@docRoot}google/play/publishing/multiple-apks.html#VersionCodes">Version Codes area of our developer guide. Since the example set of APKs is only dealing with one of 3 possible dimensions, it would be sufficient to separate each APK by 1000 and increment from there. This might look like:
diff --git a/docs/html/training/multiple-apks/texture.jd b/docs/html/training/multiple-apks/texture.jd index 70ad1e05767f..e4ea72b9728a 100644 --- a/docs/html/training/multiple-apks/texture.jd +++ b/docs/html/training/multiple-apks/texture.jd @@ -33,7 +33,7 @@ next.link=multiple.html