From 4473ababadc2ec528191fdcbae4006f5ea5e72e8 Mon Sep 17 00:00:00 2001
From: Dirk Dougherty
Google Play is the premier store for distributing Android apps. It’s preinstalled on more than 400 million devices worldwide, a number growing by more than a million every day. Android users have downloaded -more than 15 billion apps from Google +more than 25 billion apps from Google Play, growing at a rate of more than 1.5 billion per month.
When you publish on Google Play, you put your apps in front of Android's huge diff --git a/docs/html/distribute/googleplay/quality/core.jd b/docs/html/distribute/googleplay/quality/core.jd new file mode 100644 index 0000000000000..1c30b9b3c599b --- /dev/null +++ b/docs/html/distribute/googleplay/quality/core.jd @@ -0,0 +1,783 @@ +page.title=Core App Quality Guidelines +@jd:body + +
App quality directly influences the long-term success of your app—in +terms of installs, user rating and reviews, engagement, and user retention. +Android users expect high-quality apps, even more so if they've spent money on +them.
+ +This document helps you assess basic aspects of quality in your app through a +compact set of core app quality criteria and associated tests. All +Android apps should meet these criteria.
+ +Before publishing your app, make sure to test it against these criteria to +ensure that it functions well on many devices, meets Android standards for +navigation and design, and is prepared for promotional opportunities in the +Google Play Store. Your testing will go well beyond what's described here—the +purpose of this document is to specify the essential characteristics +of basic quality so that you can include them in your test plans.
+ +If your app is targeting tablet devices, make sure that it delivers a rich, +compelling experience to your tablet customers. See the Tablet App Quality +Checklist for recommendations on ways to optimize your app for tablets.
+ + +These criteria ensure that your app provides standard Android visual design +and interaction patterns where appropriate, for a consistent and intuitive +user experience.
+ +| + Area + | ++ ID + | + + ++ Description + | ++ Tests + | +
|---|---|---|---|
| Standard design | ++ UX-B1 + | +
+ App follows Android Design guidelines and uses common UI patterns and icons: +
|
+ CR-all | +
| Navigation | ++ UX-N1 + | + +
+ App supports standard system Back button navigation and does not make use of any custom, on-screen "Back button" prompts. + |
+ CR-3 | +
| + UX-N2 + | +
+ All dialogs are dismissable using the Back button. + |
+ CR-3 | +|
| + UX-N3 + | ++ Pressing the Home button at any point navigates to the Home screen of the device. + | +CR-1 | +
Related resources: +
|
+
These criteria ensure that your app provides expected functional behavior with the appropriate level of permissions.
+ +| + Area + | ++ ID + | + + ++ Description + | ++ Tests + | +
|---|---|---|---|
| Permissions | ++ FN-P1 + | +App requests only the absolute minimum permissions that it needs to support core functionality. + | +CR-11 | +
| + FN-P2 + | +App does not request permissions to access sensitive data (such as Contacts or the System Log) or services that can cost the user money (such as the Dialer or SMS), unless related to a core capability of the app. + |
+ ||
| Install location | ++ FN-L1 + | +
+ App functions normally when installed on SD card (if supported by app). + +Supporting installation to SD card is recommended for most large apps (10MB+). See the App Install Location developer guide for information about which types of apps should support installation to SD card. + |
+
+ SD-1 + | +
| Audio | ++ FN-A1 + | + ++ Audio does not play when the screen is off, unless this is a core feature (for example, the app is a music player). + | +CR-7 | +
| + FN-A2 + | ++ Audio does not play behind the lock screen, unless this is a core feature. + | +CR-8 | +|
| + FN-A3 + | ++ Audio does not play on the home screen or over another app, unless this is a core feature. + | +CR-1, CR-2 |
+ |
| + FN-A4 + | ++ Audio resumes when the app returns to the foreground, or indicates to the user that playback is in a paused state. + | +CR-1, CR-8 | +|
| UI and Graphics | ++ FN-U1 + | + +
+ App supports both landscape and portrait orientations (if possible). + +Orientations expose largely the same features and actions and preserve functional parity. + Minor changes in content or views are acceptable. + |
+ CR-5 | +
| + FN-U2 + | + +
+ App uses the whole screen in both orientations and does not letterbox to account for orientation changes. +Minor letterboxing to compensate for small variations in screen geometry is acceptable. + |
+ CR-5 | +|
| + FN-U3 + | +
+ App correctly handles rapid transitions between display orientations without rendering problems. + |
+ CR-5 | +|
| User/app state | ++ FN-S1 + | +
+ App should not leave any services running when the app is in the background, unless related to a core capability of the app. +For example, the app should not leave services running to maintain a network connection for notifications, to maintain a Bluetooth connection, or to keep the GPS powered-on. + |
+ CR-6 | +
| + FN-S2 + | +
+ App correctly preserves and restores user or app state. +App preserves user or app state when leaving the foreground and prevents accidental data loss due to back-navigation and other state changes. When returning to the foreground, the app must restore the preserved state and any significant stateful transaction that was pending, such as changes to editable fields, game progress, menus, videos, and other sections of the app or game. +
|
+ CR-1, CR-3, CR-5 | +
Related resources: +
|
+
To ensure a high user rating, your app needs to perform well and stay +responsive on all of the devices and form factors and screens that it is +targeting. These criteria ensure that the app provides the basic performance, +stability, and responsiveness expected by users.
+ +| + Area + | ++ ID + | ++ Description + | ++ Tests + | +
|---|---|---|---|
| Stability | ++ PS-S1 + | ++ App does not crash, force close, freeze, or otherwise function abnormally on any targeted device. + | +CR-all, SD-1, HA-1 | +
| Performance | ++ PS-P1 + | ++ App loads quickly or provides onscreen feedback to the user (a progress indicator or similar cue) if the app + takes longer than two seconds to load. + | ++ CR-all, SD-1 + | +
| + PS-P2 + | ++ With StrictMode enabled (see StrictMode Testing, below), no red flashes (performance warnings from StrictMode) are visible when exercising the app, including + during game play, animations and UI transitions, and any other part of the app. + | ++ PM-1 + | +|
| Media | ++ PS-M1 + | ++ Music and video playback is smooth, without crackle, stutter, or other artifacts, during normal app usage and load. + | ++ CR-all, SD-1, HA-1 + | +
| Visual quality | ++ PS-V1 + | +
+ App displays graphics, text, images, and other UI elements without noticeable distortion, blurring, or pixelation. + +
|
+ CR-all | +
| + PS-V2 + | +
+ App displays text and text blocks in an acceptable manner. + +
|
+
+
Related resources: +
|
+
To launch your app successfully on Google Play, raise its ratings, and make +sure that it is ready for promotional activities in the store, follow the +criteria below.
+ +| + Area + | ++ ID + | ++ Description + | ++ Tests + | +
|---|---|---|---|
| Policies | ++ GP-P1 + | ++ App strictly adheres to the terms of the Google Play Developer Content Policy and does not offer inappropriate content, does not use intellectual property or brand of others, and so on. + | ++ GP-all + | +
| + GP-P2 + | +
+ App maturity level is set appropriately, based on the + Content Rating Guidelines. + +Especially, note that apps that request permission to use the device location cannot be given the maturity level "Everyone". + |
+ + GP-1 + | +|
| App Details Page | ++ GP-D1 + | +
+ App feature graphic follows the guidelines outlined in this + blog post. Make sure that: + +
|
+
+ + GP-1, GP-2 + | + + +
| + GP-D2 + | ++ App screenshots and videos do not show or reference non-Android devices. + | +GP-1 | +|
| + GP-D3 + | ++ App screenshots or videos do not + represent the content and experience of your app in a misleading way. + | +||
| User Support | ++ GP-X1 + | +Common user-reported bugs in the Reviews tab of the Google Play page are addressed if they are + reproducible and occur on many different devices. If a bug occurs on only a few devices, + you should still address it if those devices are particularly popular or new. + | + ++ GP-1 + | + +
Related resources: +
|
To assess the quality of your app, you need to set up a suitable +hardware or emulator environment for testing.
+ +The ideal test environment would +include a small number of actual hardware devices that represent key form +factors and hardware/software combinations currently available to consumers. +It's not necessary to test on every device that's on the market — +rather, you should focus on a small number of representative devices, even using +one or two devices per form factor.
+ +If you are not able to obtain actual hardware devices for testing, you should +set up emulated devices (AVDs) to represent the most common form factors and +hardware/software combinations.
+ +To go beyond basic testing, you can add more devices, more form factors, or +new hardware/software combinations to your test environment. You can also +increase the number or complexity of tests and quality criteria.
+ + +These test procedures help you discover various types of quality issues in your app. You can combine the tests or integrate groups of tests together in your own test plans. See the sections above for references that associate specific criteria with specific tests.
+ +| + Type + | ++ Test + | ++ Description + | +
|---|---|---|
| Core Suite | ++ CR-0 + | +Navigate to all parts of the app — all screens, dialogs, settings, and all user flows. + +
|
+
| + CR-1 + | +From each app screen, press the device's Home key, then re-launch the app from the All Apps screen. + | +|
| + CR-2 + | +From each app screen, switch to another running app and then return to the app under test using the Recents app switcher. + | +|
| + CR-3 + | +From each app screen (and dialogs), press the Back button. + | +|
| + CR-5 + | +From each app screen, rotate the device between landscape and portrait orientation at least three times. + | +|
| + CR-6 + | +Switch to another app to send the test app into the background. Go to Settings and check whether the test app has any services running while in the background. In Android 4.0 and higher, go to the Apps screen and find the app in the "Running" tab. In earlier versions, use "Manage Applications" to check for running services. + | +|
| + CR-7 + | ++ Press the power button to put the device to sleep, then press the power button again to + awaken the screen. + | +|
| + CR-8 + | ++ Set the device to lock when the power button is pressed. Press the power button to put the device to sleep, then press the power button again to + awaken the screen, then unlock the device. + | +|
| + CR-9 + | ++ For devices that have slide-out keyboards, slide the keyboard in and out at least once. For devices that have keyboard docks, attach the device to the keyboard dock. + | +|
| + CR-10 + | ++ For devices that have an external display port, plug-in the external display. + | +|
| + CR-11 + | +Examine the permissions requested by the app by going to Settings > App Info. + | +|
| Install on SD Card | ++ SD-1 + | +
+ Repeat Core Suite with app installed to device SD card (if supported by app). + +To move the app to SD card, you can use Settings > App Info > Move to SD Card. + |
+
| Hardware acceleration | ++ HA-1 + | +
+ Repeat Core Suite with hardware acceleration enabled. + +To force-enable hardware acceleration (where supported by device), add |
+
| Performance Monitoring | ++ PM-1 + | +
+ Repeat Core Suite with StrictMode profiling enabled as described below. Pay close attention to garbage collection and its impact on the user experience. + |
+
| Google Play | ++ GP-1 + | ++ Sign into the Developer Console to review your developer profile, app description, screenshots, feature graphic, maturity settings, and user feedback. + | +
| + GP-2 + | ++ Download your feature graphic and screenshots and scale them down to match the display sizes on the devices and form factors you are targeting. + | +|
| + GP-4 + | ++ Review all graphical assets, media, text, code libraries, and other content packaged in the app or expansion file download. + | +|
| Payments | ++ GP-5 + | ++ Navigate to all screens of your app and enter all in-app purchase flows. + | +
For performance testing, we recommend enabling StrictMode in your app and using it to catch operations on the main thread and other threads that could affect performance, network accesses, file reads/writes, and so on.
+
+You can set up a monitoring policy per thread using the ThreadPolicy builder and enable all supported monitoring in the ThreadPolicy using detectAll().
Make sure to enable visual notification of policy violations for the ThreadPolicy using penaltyFlashScreen().
App quality directly influences the long-term success of your app—in +terms of installs, user rating and reviews, engagement, and user retention. +Android users expect high-quality apps, even more so if they've spent money on +them. At the same time, users enjoy and value apps that put a priority on +continuous improvement.
+ +Before you publish an app on Google Play, it's important to make sure that +your app meets the basic quality expectations of users, across all of the form +factors and device types that the app is targeting. The documents in this +section help you assess your app's fundamental quality and address any +issues that you find.
+ ++ A set of core quality criteria that all Android apps should meet on all targeted devices. +
Learn more » ++ A set recommendations for delivering the best possible experience to tablet users. +
Learn more » ++ Tips on continuously improving your app's quality, ratings, reviews, downloads, and engagement. +
Learn more + » +Before you publish an app on Google Play, it's important to make sure that +the app meets the basic expectations of tablet users, through compelling features +and an intuitive, well-designed UI.
+ +Tablets are a growing part of the Android installed base that offers new +opportunities for user engagement +and monetization. If your app is targeting tablet users, this document helps +you focus on key aspects of quality, feature set, and UI that can have a +significant impact on the app's success. Each focus area is given as checklist +item, with each one comprising several smaller tasks or best practices.
+ +Although the checklist tasks below are numbered for convenience, +you can handle them in any order and address them to the extent that you feel +is right for your app. In the interest of delivering the best possible product +to your customers, follow the checklist recommendations +to the greatest extent possible.
+ +As you move through the checklist, you'll find links to support resources +that can help you address the topics raised in each task.
+ + +The first step in delivering a great tablet app experience is making sure +that it meets the core app +quality criteria for all of the devices and form factors that the app is +targeting. For complete information, see the Core App Quality Checklist. +
+ +To assess the quality of your app on tablets — both for core app quality +and tablet app quality — you need to set up a suitable +hardware or emulator environment for testing. For more information, +see Setting Up a Test Environment.
+ + +Android makes it easy to develop an app that runs well on a wide range of +device screen sizes and form factors. This broad compatibility works in your +favor, since it helps you design a single app that you can distribute widely to +all of your targeted devices. However, to give your users the best possible +experience on each screen configuration — in particular on tablets +— you need to optimize your layouts and other UI components for each +targeted screen configuration. On tablets, optimizing your UI lets you take +full advantage of the additional screen available, such as to offer new features, +present new content, or enhance the experience in other ways to deepen user +engagement.
+ +If you developed your app for handsets and now want to distribute it to +tablets, you can start by making minor adjustments to your layouts, fonts, and +spacing. In some cases — such as for 7-inch tablets or for a game with +large canvas — these adjustments may be all +you need to make your app look great. In other cases, such as for larger +tablets, you can redesign parts of your UI to replace "stretched UI" with an +efficient multipane UI, easier navigation, and additional content.
+ +Here are some suggestions:
+ +
+Get rid of "stretched" UI: On tablets, single-pane layouts lead to awkward whitespace and excessive line lengths. Use padding to reduce the width of UI elements and consider using multi-pane layouts.
+large and
+xlarge screens. You can also provide layouts that are loaded based
+on the screen's shortest
+dimension or the minimum
+available width and height. 16dp padding around content near screen edges.In particular, make sure that your layouts do not appear "stretched" +across the screen:
+ +Related resources: +
|
+
+Multi-pane layouts result in a better visual balance on tablet screens, while offering more utility and legibility.
+Tablet screens provide significantly more screen real estate to your app, +especially when in landscape orientation. In particular, 10-inch tablets offer a +greatly expanded area, but even 7-inch tablets give you more space for +displaying content and engaging users.
+ +As you consider the UI of your app when running on tablets, make sure that it +is taking full advantage of extra screen area available on tablets. Here are +some suggestions:
+ +
+
+Compound views combine several single views from a handset UI (above) into a richer, more efficient UI for tablets (below).
+large/xlarge) or minimum screen widths (such as
+sw600dp/sw720).Related resources: +
|
+
So that your app looks its best, make sure to use icons and other bitmap +assets that are created specifically for the densities used by tablet screens. +Specifically, you should create sets of alternative bitmap drawables for each +density in the range commonly supported by tablets.
+ +Table 1. Raw asset sizes for icon types.
| Density | +Launcher | +Action Bar | +Small/Contextual | +Notification | +
|---|---|---|---|---|
mdpi |
+48x48px | +32x32px | +16x16px | +24x24px | +
hdpi |
+72x72px | +48x48px | +24x24px | +36x36px | +
tvdpi |
+(use hdpi) | +(use hdpi) | +(use hdpi) | +(use hdpi) | +
xhdpi |
+96x96px | +64x64px | +32x32px | +48x48px | +
Other points to consider:
+ +Related resources: +
|
+
To make sure your app is easy to use on tablets, take some time to adjust the +font sizes and touch targets in your tablet UI, for all of the screen +configurations you are targeting. You can adjust font sizes through styleable attributes or dimension +resources, and you can adjust touch targets through layouts and bitmap +drawables, as discussed above.
+ +Here are some considerations:
+Related resources: +
|
+
If your app includes a home screen widget, here are a few points to consider +to ensure a great user experience on tablet screens:
+ +targetSdkVersion to 14 or higher, if
+possible.Related resources: +
|
+
Let your tablet users experience the best features of your app. Here are +some recommendations:
+ +Handsets and tablets typically offer slightly different hardware support for +sensors, camera, telephony, and other features. For example, many tablets are +available in a "Wi-Fi" configuration that does not include telephony support.
+ +To ensure that you can deliver a single APK broadly across the +your full customer base, make sure that your app does not have built-in +requirements for hardware features that aren't commonly available on tablets. +
+ +<uses-feature>
+elements for hardware features or capabilities that might not be
+available on tablets, except when they are declared with the
+android:required=”false” attribute. For example, your app should
+not require features such as:
+android.hardware.telephonyandroid.hardware.camera (refers to back camera), orandroid.hardware.camera.front<permission> elements that imply
+feature requirements that might not be appropriate for tablets, except when
+accompanied by a corresponding <uses-feature> element
+declared with the android:required=”false” attribute.In all cases, the app must function normally when the hardware features it +uses are not available and should offer “graceful degradation” and alternative +functionality where appropriate. For example, if GPS is not supported on the device, +your app could let the user set their location manually. The app should do +run-time checking for the hardware capability that it needs and handle as needed.
+ +Related resources: +
|
+
To ensure that you can distribute your app to a broad range of tablets, +declare all the screen sizes that your app supports in its manifest:
+ +<supports-screens> element
+with appropriate attributes, as needed.<compatible-screens> element in the
+manifest, the element must include attributes that specify all of the size and
+density combinations for tablet screens that the app supports. Note that, if possible,
+you should avoid using this element in your app.Related resources: +
|
+
Related resources: +
|
+
To assess the quality of your app on tablets — both for core app quality +and tablet app quality — you need to set up a suitable +hardware or emulator environment for testing.
+ +The ideal test environment would +include a small number of actual hardware devices that represent key form +factors and hardware/software combinations currently available to consumers. +It's not necessary to test on every device that's on the market — +rather, you should focus on a small number of representative devices, even using +one or two devices per form factor. The table below provides an overview of +devices you could use for testing.
+ +If you are not able to obtain actual hardware devices for testing, you should +set up emulated devices (AVDs) to represent the most common form factors and +hardware/software combinations. See the table below for suggestions on the emulator +configurations to use.
+ +To go beyond basic testing, you can add more devices, more form factors, or +new hardware/software combinations to your test environment. For example, you +could include mid-size tablets, tablets with more or fewer hardware/software +features, and so on. You can also increase the number or complexity of tests +and quality criteria.
+ +Table 1. A typical tablet test environment might +include one or two devices from each row in the table below, with one of the +listed chipsets, platform versions, and hardware feature configurations.
+ +| Type | +Size | +Density | +Version | +AVD Skin | +
|---|---|---|---|---|
| 7-inch tablet | +large or-sw600 |
+hdpi,tvdpi |
+Android 4.0+ | +WXGA800-7in | +
| 10-inch tablet | +xlarge or-sw800 |
+mdpi,hdpi |
+Android 3.2+ | +WXGA800 | +