Dirk Dougherty | 4473aba | 2012-10-03 17:43:04 -0700 | [diff] [blame] | 1 | page.title=Tablet App Quality Checklist |
| 2 | @jd:body |
| 3 | |
| 4 | <div id="qv-wrapper"><div id="qv"> |
| 5 | <h2>Checklist</h2> |
| 6 | <ol> |
| 7 | |
| 8 | <li><a href="#core-app-quality">1. Test for Core App Quality</a></li> |
| 9 | <li><a href="#optimize-layouts">2. Optimize your layouts</a></li> |
| 10 | <li><a href="#use-extra-space">3. Use the extra screen area</a></li> |
| 11 | <li><a href="#use-tablet-icons">4. Use assets designed for tablets</a></li> |
| 12 | <li><a href="#adjust-font-sizes">5. Adjust fonts and touch targets</a></li> |
| 13 | <li><a href="#adjust-widgets">6. Adjust homescreen widgets</a></li> |
| 14 | <li><a href="#offer-full-feature-set">7. Offer the app's full feature set</a></li> |
| 15 | <li><a href="#hardware-requirements">8. Don’t require hardware features</a></li> |
| 16 | <li><a href="#support-screens">9. Declare tablet screen support</a></li> |
| 17 | <li><a href="#google-play">10. Follow best practices for publishing in Google Play</a></li> |
| 18 | |
| 19 | </ol> |
| 20 | <h2>Testing</h2> |
| 21 | <ol> |
| 22 | <li><a href="#test-environment">Setting Up a Test Environment</a></li> |
| 23 | </ol> |
| 24 | </div></div> |
| 25 | |
| 26 | |
| 27 | <p>Before you publish an app on Google Play, it's important to make sure that |
Dirk Dougherty | 9aeb0a81 | 2012-08-20 11:07:36 -0700 | [diff] [blame] | 28 | the app meets the basic expectations of tablet users through compelling features |
Dirk Dougherty | 4473aba | 2012-10-03 17:43:04 -0700 | [diff] [blame] | 29 | and an intuitive, well-designed UI. </p> |
| 30 | |
| 31 | <p>Tablets are a growing part of the Android installed base that offers new |
| 32 | opportunities for <a |
| 33 | href="{@docRoot}distribute/googleplay/spotlight/tablets.html">user engagement |
| 34 | and monetization</a>. If your app is targeting tablet users, this document helps |
| 35 | you focus on key aspects of quality, feature set, and UI that can have a |
| 36 | significant impact on the app's success. Each focus area is given as checklist |
| 37 | item, with each one comprising several smaller tasks or best practices.</p> |
| 38 | |
| 39 | <p>Although the checklist tasks below are numbered for convenience, |
| 40 | you can handle them in any order and address them to the extent that you feel |
| 41 | is right for your app. In the interest of delivering the best possible product |
| 42 | to your customers, follow the checklist recommendations |
| 43 | to the greatest extent possible. </p> |
| 44 | |
| 45 | <p>As you move through the checklist, you'll find links to support resources |
| 46 | that can help you address the topics raised in each task.</p> |
| 47 | |
| 48 | |
| 49 | <h2 id="core-app-quality">1. Test for Core App Quality</h2> |
| 50 | |
| 51 | <p>The first step in delivering a great tablet app experience is making sure |
| 52 | that it meets the <em>core app |
| 53 | quality criteria</em> for all of the devices and form factors that the app is |
| 54 | targeting. For complete information, see the <a |
| 55 | href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality Checklist</a>. |
| 56 | </p> |
| 57 | |
| 58 | <p>To assess the quality of your app on tablets — both for core app quality |
| 59 | and tablet app quality — you need to set up a suitable |
| 60 | hardware or emulator environment for testing. For more information, |
| 61 | see <a href="#test-environment">Setting Up a Test Environment</a>.</p> |
| 62 | |
Dirk Dougherty | 9aeb0a81 | 2012-08-20 11:07:36 -0700 | [diff] [blame] | 63 | <table> |
| 64 | <tr> |
| 65 | <td><p>Related resources:</p> |
| 66 | <ul style="margin-top:-.5em;"> |
| 67 | <li><strong><a |
| 68 | href="{@docRoot}distribute/googleplay/quality/core.html">Core App Quality |
| 69 | Guidelines</a></strong> — A set of core quality criteria that all Android |
| 70 | apps should meet on all targeted devices.</li> |
| 71 | </ul> |
| 72 | </td> |
| 73 | </tr> |
| 74 | </table> |
Dirk Dougherty | 4473aba | 2012-10-03 17:43:04 -0700 | [diff] [blame] | 75 | |
| 76 | <h2 id="optimize-layouts">2. Optimize your layouts for larger screens</h2> |
| 77 | |
| 78 | <p>Android makes it easy to develop an app that runs well on a wide range of |
| 79 | device screen sizes and form factors. This broad compatibility works in your |
| 80 | favor, since it helps you design a single app that you can distribute widely to |
| 81 | all of your targeted devices. However, to give your users the best possible |
| 82 | experience on each screen configuration — in particular on tablets |
| 83 | — you need to optimize your layouts and other UI components for each |
| 84 | targeted screen configuration. On tablets, optimizing your UI lets you take |
| 85 | full advantage of the additional screen available, such as to offer new features, |
| 86 | present new content, or enhance the experience in other ways to deepen user |
| 87 | engagement.</p> |
| 88 | |
| 89 | <p>If you developed your app for handsets and now want to distribute it to |
| 90 | tablets, you can start by making minor adjustments to your layouts, fonts, and |
| 91 | spacing. In some cases — such as for 7-inch tablets or for a game with |
| 92 | large canvas — these adjustments may be all |
| 93 | you need to make your app look great. In other cases, such as for larger |
| 94 | tablets, you can redesign parts of your UI to replace "stretched UI" with an |
| 95 | efficient multipane UI, easier navigation, and additional content. </p> |
| 96 | |
| 97 | <p>Here are some suggestions:</p> |
| 98 | |
| 99 | <div style="width:390px;float:right;margin:1.5em;margin-top:0em;"> |
| 100 | <img src="{@docRoot}images/training/app-navigation-multiple-sizes-multipane-bad.png" style="width:390px;padding:4px;margin-bottom:0em;"> |
| 101 | <p class="image-caption" style="padding:0em .5em .5em 2em"><span |
| 102 | style="font-weight:500;">Get rid of "stretched" UI</span>: 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.</p> |
| 103 | </div> |
| 104 | |
| 105 | <ul> |
| 106 | <li>Provide custom layouts as needed for <code>large</code> and |
| 107 | <code>xlarge</code> screens. You can also provide layouts that are loaded based |
| 108 | on the screen's <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">shortest |
| 109 | dimension</a> or the <a href="{@docRoot}guide/practices/screens_support.html#NewQualifiers">minimum |
| 110 | available width and height</a>. </li> |
| 111 | <li>At a minimum, customize dimensions such as font sizes, margins, spacing for |
| 112 | larger screens, to improve use of space and content legibility. </li> |
| 113 | <li>Adjust positioning of UI controls so that they are easily accessible to |
| 114 | users when holding a tablet, such as toward the sides when in |
| 115 | landscape orientation.</li> |
| 116 | <li>Padding of UI elements should normally be larger on tablets than on handsets. A |
| 117 | <a href="{@docRoot}design/style/metrics-grids.html#48dp-rhythm">48dp rhythm</a> (and a 16dp |
| 118 | grid) is recommended.</li> |
| 119 | <li>Adequately pad text content so that it is not aligned directly along screen edges. |
| 120 | Use a minimum <code>16dp</code> padding around content near screen edges.</li> |
| 121 | </ul> |
| 122 | |
| 123 | <p>In particular, make sure that your layouts do not appear "stretched" |
| 124 | across the screen:</p> |
| 125 | |
| 126 | <ul> |
| 127 | <li>Lines of text should not be excessively long — optimize for a maximum |
| 128 | 100 characters per line, with best results between 50 and 75.</li> |
| 129 | <li>ListViews and menus should not use the full screen width.</li> |
| 130 | <li>Use padding to manage the widths of onscreen elements or switch to a |
| 131 | multi-pane UI for tablets (see next section).</li> |
| 132 | </ul> |
| 133 | |
| 134 | <table> |
| 135 | <tr> |
| 136 | <td><p>Related resources:</p> |
| 137 | <ul style="margin-top:-.5em;"> |
| 138 | <li><strong><a href="http://developer.android.com/design/style/metrics-grids.html">Metrics and Grids |
| 139 | </a></strong> — Android Design document that explains ....</li> |
| 140 | <li><strong><a href="http://developer.android.com/design/style/devices-displays.html">Devices and Displays |
| 141 | </a></strong> — Android Design document that explains ....</li> |
| 142 | <li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> — Developer documentation that explains the details of managing UI for best display on multiple screen sizes.</li> |
| 143 | <li><strong><a href="http://developer.android.com/guide/practices/screens_support.html#ConfigurationExamples">Configuration examples |
| 144 | </a></strong> — Examples of how to declare layouts and other resources for specific screen sizes.</a></li> |
| 145 | </ul> |
| 146 | </td> |
| 147 | </tr> |
| 148 | </table> |
| 149 | |
| 150 | |
| 151 | <h2 id="use-extra-space">3. Take advantage of extra screen area available on tablets</h2> |
| 152 | |
| 153 | <div style="width:290px;float:right;margin:1.5em;margin-bottom:0;margin-top:0;"> |
| 154 | <img src="{@docRoot}images/training/app-navigation-multiple-sizes-multipane-good.png" style="width:280px;padding:4px;margin-bottom:0em;"> |
| 155 | <p class="image-caption" style="padding:0em .5em .5em 1.5em"><span |
| 156 | style="font-weight:500;">Multi-pane layouts</span> result in a better visual balance on tablet screens, while offering more utility and legibility.</p> |
| 157 | </div> |
| 158 | |
| 159 | <p>Tablet screens provide significantly more screen real estate to your app, |
| 160 | especially when in landscape orientation. In particular, 10-inch tablets offer a |
| 161 | greatly expanded area, but even 7-inch tablets give you more space for |
| 162 | displaying content and engaging users. </p> |
| 163 | |
| 164 | <p>As you consider the UI of your app when running on tablets, make sure that it |
| 165 | is taking full advantage of extra screen area available on tablets. Here are |
| 166 | some suggestions:</p> |
| 167 | |
| 168 | <ul> |
| 169 | <li>Look for opportunities to include additional content or use an alternative |
| 170 | treatment of existing content.</li> |
| 171 | <li>Use <a href="{@docRoot}design/patterns/multi-pane-layouts.html">multi-pane |
| 172 | layouts</a> on tablet screens to combine single views into a compound view. This |
| 173 | lets you use the additional screen area more efficiently and makes it easier for |
| 174 | users to navigate your app. </li> |
| 175 | <li>Plan how you want the panels of your compound views to reorganize when |
| 176 | screen orientation changes.</li> |
| 177 | |
| 178 | |
| 179 | |
| 180 | <div style="width:490px;margin:1.5em auto 1.5em 0;"> |
| 181 | |
| 182 | <div style=""> |
| 183 | <img src="{@docRoot}images/ui-ex-single-panes.png" style="width:490px;padding:4px;margin-bottom:0em;" align="middle"> |
| 184 | <img src="{@docRoot}images/ui-ex-multi-pane.png" style="width:490px;padding:4px;margin-bottom:0em;"> |
| 185 | <p class="image-caption" style="padding:.5em"><span |
| 186 | style="font-weight:500;">Compound views</span> combine several single views from a handset UI <em>(above)</em> into a richer, more efficient UI for tablets <em>(below)</em>. </p> |
| 187 | </div> |
| 188 | </div> |
| 189 | |
| 190 | <li>While a single screen is implemented as an {@link android.app.Activity} |
| 191 | subclass, consider implementing individual content panels as {@link |
| 192 | android.app.Fragment} subclasses. This lets you maximize code reuse across |
| 193 | different form factors and across screens that share content.</li> |
| 194 | <li>Decide on which screen sizes you'll use a multi-pane UI, then provide the |
| 195 | different layouts in the appropriate screen size buckets (such as |
| 196 | <code>large</code>/<code>xlarge</code>) or minimum screen widths (such as |
| 197 | <code>sw600dp</code>/<code>sw720</code>).</li> |
| 198 | </ul> |
| 199 | |
| 200 | <table> |
| 201 | <tr> |
| 202 | <td><p>Related resources:</p> |
| 203 | <ul style="margin-top:-.5em;"> |
| 204 | <li><strong><a href="{@docRoot}design/patterns/multi-pane-layouts.html">Multi-pane Layouts</a></strong> — Android Design guide for using multi-pane UI, including examples of how to flatten navigation and integrate more content into your tablet UI.</li> |
| 205 | <li><strong><a href="{@docRoot}training/design-navigation/multiple-sizes.html">Planning for Multiple Touchscreen Sizes</a></strong> — Android Training class that walks you through the essentials of planning an intuitive, effective navigation for tablets and other devices. </li> |
| 206 | <li><strong><a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple Screens</a></strong> — Android Training class that walks you through the essentials of planning an intuitive, effective navigation for tablets and other devices. </li> |
| 207 | </ul> |
| 208 | </td> |
| 209 | </tr> |
| 210 | </table> |
| 211 | |
| 212 | |
| 213 | <h2 id="use-tablet-icons">4. Use Icons and other assets that are designed for tablet screens</h2> |
| 214 | |
| 215 | <p>So that your app looks its best, make sure to use icons and other bitmap |
| 216 | assets that are created specifically for the densities used by tablet screens. |
| 217 | Specifically, you should create sets of alternative bitmap drawables for each |
| 218 | density in the range commonly supported by tablets.</p> |
| 219 | |
| 220 | <p class="table-caption"><strong>Table 1</strong>. Raw asset sizes for icon types.<table> |
| 221 | <tr> |
| 222 | <th>Density </th> |
| 223 | <th colspa>Launcher</th> |
| 224 | <th>Action Bar</th> |
| 225 | <th>Small/Contextual</th> |
| 226 | <th>Notification</th> |
| 227 | </tr> |
| 228 | <tr> |
| 229 | <td><code>mdpi</code></td> |
| 230 | <td>48x48px</td> |
| 231 | <td>32x32px</td> |
| 232 | <td>16x16px</td> |
| 233 | <td>24x24px</td> |
| 234 | </tr> |
| 235 | <tr> |
| 236 | <td><code>hdpi</code></td> |
| 237 | <td>72x72px</td> |
| 238 | <td>48x48px</td> |
| 239 | <td>24x24px</td> |
| 240 | <td>36x36px</td> |
| 241 | </tr> |
| 242 | <tr> |
| 243 | <td><code>tvdpi</code></td> |
| 244 | <td><em>(use hdpi)</em></td> |
| 245 | <td><em>(use hdpi)</em></td> |
| 246 | <td><em>(use hdpi)</em></td> |
| 247 | <td><em>(use hdpi)</em></td> |
| 248 | </tr> |
| 249 | <tr> |
| 250 | <td><code>xhdpi</code></td> |
| 251 | <td>96x96px</td> |
| 252 | <td>64x64px</td> |
| 253 | <td>32x32px</td> |
| 254 | <td>48x48px</td> |
| 255 | </tr> |
| 256 | |
| 257 | </table> |
| 258 | |
| 259 | <p>Other points to consider: </p> |
| 260 | |
| 261 | <ul> |
| 262 | <li>Icons in the action bar, notifications, and launcher should be designed |
| 263 | according to the icon design guidelines and have the same physical size on |
| 264 | tablets as on phones.</li> |
| 265 | <li>Use density-specific <a |
| 266 | href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"> |
| 267 | resource qualifiers</a> to ensure that the proper set of alternative resources |
| 268 | gets loaded.</li> |
| 269 | </ul> |
| 270 | |
| 271 | <table> |
| 272 | <tr> |
| 273 | <td><p>Related resources:</p> |
| 274 | <ul style="margin-top:-.5em;"> |
| 275 | <li><strong><a href="{@docRoot}design/style/iconography.html">Iconography</a></strong> — Android Design document that shows how to use various types of icons.</li> |
| 276 | <li><strong><a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a></strong> — Developer documentation on how to provide sets of layouts and drawable resources for specific ranges of device screens. </li> |
| 277 | <li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> — API Guide documentation that explains the details of managing UI for best display on multiple screen sizes.</li> |
| 278 | <li><strong><a href="{@docRoot}training/basics/supporting-devices/screens.html">Supporting Different Screens</a></strong> — Android Training class that takes you through the process of optimizing the user experience for different screen sizes and densities.</li> |
| 279 | </ul> |
| 280 | </td> |
| 281 | </tr> |
| 282 | </table> |
| 283 | |
| 284 | |
| 285 | <h2 id="adjust-font-sizes">5. Adjust font sizes and touch targets for tablet screens</h2> |
| 286 | |
| 287 | <p>To make sure your app is easy to use on tablets, take some time to adjust the |
| 288 | font sizes and touch targets in your tablet UI, for all of the screen |
| 289 | configurations you are targeting. You can adjust font sizes through <a |
| 290 | href="{@docRoot}guide/topics/ui/themes.html">styleable attributes</a> or <a |
| 291 | href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">dimension |
| 292 | resources</a>, and you can adjust touch targets through layouts and bitmap |
| 293 | drawables, as discussed above. </p> |
| 294 | |
| 295 | <p>Here are some considerations:</p> |
| 296 | <ul> |
| 297 | <li>Text should not be excessively large or small on tablet screen sizes and |
| 298 | densities. Make sure that labels are sized appropriately for the UI elements they |
| 299 | correspond to, and ensure that there are no improper line breaks in labels, |
| 300 | titles, and other elements.</li> |
| 301 | <li>The recommended touch-target size for onscreen elements is 48dp (32dp |
| 302 | minimum) — some adjustments may be needed in your tablet UI. Read <a |
| 303 | href="http://developer.android.com/design/style/metrics-grids.html">Metrics and |
| 304 | Grids |
| 305 | </a> to learn about implementation strategies to help most of your users. To |
| 306 | meet the accessibility needs of certain users, it may be appropriate to use |
| 307 | larger touch targets. </li> |
| 308 | <li>When possible, for smaller icons, expand the touchable area to more than |
| 309 | 48dp using {@link android.view.TouchDelegate} or just centering the icon within |
| 310 | the transparent button.</li> |
| 311 | </ul> |
| 312 | |
| 313 | <table> |
| 314 | <tr> |
| 315 | <td><p>Related resources:</p> |
| 316 | <ul style="margin-top:-.5em;"> |
| 317 | <li><strong><a href="http://developer.android.com/design/style/metrics-grids.html">Metrics and Grids |
| 318 | </a></strong> — Android Design document that explains how to arrange and size touch targets and other UI elements on the screen.</li> |
| 319 | <li><strong><a href="{@docRoot}design/style/typography.html">Typography</a></strong> — Android Design document that gives an overview of how to use typography in your apps. </li> |
| 320 | <li><strong><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></strong> — Developer documentation that explains the details of managing UI for best display on multiple screen sizes.</li> |
| 321 | <li><strong><a href="{@docRoot}training/multiscreen/screendensities.html">Supporting Different Densities</a></strong> — Android Training class that shows you how to provide sets of layouts and drawable resources for specific ranges of device screens. </li> |
| 322 | </ul> |
| 323 | </td> |
| 324 | </tr> |
| 325 | </table> |
| 326 | |
| 327 | |
| 328 | <h2 id="adjust-widgets">6. Adjust sizes of home screen widgets for tablet screens</h2> |
| 329 | |
| 330 | <p>If your app includes a home screen widget, here are a few points to consider |
| 331 | to ensure a great user experience on tablet screens: </p> |
| 332 | |
| 333 | <ul> |
| 334 | <li>Make sure that the widget's default height and width are set appropriately |
| 335 | for tablet screens, as well as the minimum and maximum resize height and width. |
| 336 | </li> |
| 337 | <li>The widget should be resizable to 420dp or more, to span 5 or more home |
| 338 | screen rows (if this is a vertical or square widget) or columns (if this is a |
| 339 | horizontal or square widget). </li> |
| 340 | <li>Make sure that 9-patch images render correctly.</li> |
| 341 | <li>Use default system margins.</li> |
| 342 | <li>Set the app's <code>targetSdkVersion</code> to 14 or higher, if |
| 343 | possible.</li> |
| 344 | </ul> |
| 345 | |
| 346 | <table> |
| 347 | <tr> |
| 348 | <td><p>Related resources:</p> |
| 349 | <ul style="margin-top:-.5em;"> |
| 350 | <li><strong><a href="{@docRoot}guide/topics/appwidgets/index.html#MetaData">Adding the AppWidgetProviderInfo Metadata |
| 351 | </a></strong> — API Guide that explains how to set the height and width dimensions of a widget.</li> |
| 352 | <li><strong><a href="{@docRoot}guide/practices/ui_guidelines/widget_design.html">App Widget Design Guidelines</a></strong> — API Guide that provides best practices and techniques for designing and managing the size of widgets. </li> |
| 353 | </ul> |
| 354 | </td> |
| 355 | </tr> |
| 356 | </table> |
| 357 | |
| 358 | |
| 359 | <h2 id="offer-full-feature-set">7. Offer the app's full feature set to tablet users</h2> |
| 360 | |
| 361 | <p>Let your tablet users experience the best features of your app. Here are |
| 362 | some recommendations:</p> |
| 363 | |
| 364 | <ul> |
| 365 | <li>Design your app to offer at least the same set of features on tablets as it does on |
| 366 | handsets. </li> |
| 367 | <li>In exceptional cases, your app might omit or replace certain features on |
| 368 | tablets if they are not supported by the hardware or use-case of most tablets. |
| 369 | For example: |
| 370 | <ul> |
| 371 | <li>If the handset uses telephony features but telephony is not available on the |
| 372 | current tablet, you can omit or replace the related functionality.</li> |
| 373 | <li>Many tablets have a GPS sensor, but most users would not normally carry |
| 374 | their tablets while running. If your phone app provides functionality to let the |
| 375 | user record a GPS track of their runs while carrying their phones, the app would not need to |
| 376 | provide that functionality on tablets because the use-case is not |
| 377 | compelling.</li> |
| 378 | </ul> |
| 379 | </li> |
| 380 | <li>If you will omit a feature or capability from your tablet UI, make sure |
| 381 | that it is not accessible to users or that it offers “graceful degradation” |
| 382 | to a replacement feature (also see the section below on hardware features).</li> |
| 383 | </ul> |
| 384 | |
| 385 | |
| 386 | <h2 id="hardware-requirements">8. Don’t require hardware features that might not be available on tablets</h2> |
| 387 | |
| 388 | <p>Handsets and tablets typically offer slightly different hardware support for |
| 389 | sensors, camera, telephony, and other features. For example, many tablets are |
| 390 | available in a "Wi-Fi" configuration that does not include telephony support.</p> |
| 391 | |
| 392 | <p>To ensure that you can deliver a single APK broadly across the |
| 393 | your full customer base, make sure that your app does not have built-in |
| 394 | requirements for hardware features that aren't commonly available on tablets. |
| 395 | </p> |
| 396 | |
| 397 | <ul> |
| 398 | <li>Your app's manifest should not include <a |
| 399 | href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a> |
| 400 | elements for hardware features or capabilities that might not be |
| 401 | available on tablets, except when they are declared with the |
| 402 | <code>android:required=”false”</code> attribute. For example, your app should |
| 403 | not <em>require</em> features such as: |
| 404 | <ul> |
| 405 | <li><code>android.hardware.telephony</code></li> |
| 406 | <li><code>android.hardware.camera</code> (refers to back camera), or</li> |
| 407 | <li><code>android.hardware.camera.front</code></li> |
| 408 | </ul> |
| 409 | </li> |
| 410 | <li>Similarly, your app manifest should not include any <a |
| 411 | href="{@docRoot}guide/topics/manifest/permission-element.html"><code><permission></code></a> elements that <a |
| 412 | href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">imply |
| 413 | feature requirements</a> that might not be appropriate for tablets, except when |
| 414 | accompanied by a corresponding <code><uses-feature></code> element |
| 415 | declared with the <code>android:required=”false”</code> attribute.</li> |
| 416 | </ul> |
| 417 | |
| 418 | <p>In all cases, the app must function normally when the hardware features it |
| 419 | uses are not available and should offer “graceful degradation” and alternative |
| 420 | functionality where appropriate. For example, if GPS is not supported on the device, |
| 421 | your app could let the user set their location manually. The app should do |
| 422 | run-time checking for the hardware capability that it needs and handle as needed.</p> |
| 423 | |
| 424 | <table> |
| 425 | <tr> |
| 426 | <td><p>Related resources:</p> |
| 427 | <ul style="margin-top:-.5em;"> |
| 428 | <li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">Permissions that Imply Feature Requirements</a></strong> — A list of permissions that may cause unwanted filtering if declared in your app's manifest.</li> |
| 429 | <li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a></strong> — Description and reference documentation for the <code><uses-feature></code> manifest element.</li> |
| 430 | <li><strong><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#testing">Testing the features required by your application</a></strong> — Description of how to determine the actual set of hardware and software requirements (explicit or implied) that your app requires.</li> |
| 431 | </ul> |
| 432 | </td> |
| 433 | </tr> |
| 434 | </table> |
| 435 | |
| 436 | |
| 437 | <h2 id="support-screens">9. Declare support for tablet screen configurations</h2> |
| 438 | |
| 439 | <p>To ensure that you can distribute your app to a broad range of tablets, |
| 440 | declare all the screen sizes that your app supports in its manifest:</p> |
| 441 | |
| 442 | <ul> |
| 443 | <li>Declare a <a |
| 444 | href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code><supports-screens></code></a> element |
| 445 | with appropriate attributes, as needed.</li> |
| 446 | <li>If the app declares a <code><compatible-screens></code> element in the |
| 447 | manifest, the element must include attributes that specify <em>all of the size and |
| 448 | density combinations for tablet screens</em> that the app supports. Note that, if possible, |
| 449 | you should avoid using this element in your app.</li> |
| 450 | </ul> |
| 451 | |
| 452 | <table> |
| 453 | <tr> |
| 454 | <td><p>Related resources:</p> |
| 455 | <ul style="margin-top:-.5em;"> |
| 456 | <li><strong><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code><supports-screens></code></a></strong> |
| 457 | — Description and reference documentation for the <code><supports-screens></code> |
| 458 | manifest element.</li> |
| 459 | <li><strong><a href="{@docRoot}guide/practices/screens_support.html#DeclaringScreenSizeSupport">Declaring Screen Size |
| 460 | Support</a></strong> — Developer documentation that explains the details of managing UI |
| 461 | for best display on multiple screen sizes.</li> |
| 462 | </ul> |
| 463 | </td> |
| 464 | </tr> |
| 465 | </table> |
| 466 | |
| 467 | |
| 468 | <h2 id="google-play">10. Follow best practices for publishing in Google Play</h2> |
| 469 | |
| 470 | <ul> |
| 471 | <li>Publish your app as a single APK for all screen sizes (handsets |
| 472 | and tablets), with a single Google Play listing: |
| 473 | <ul style="margin-top:.25em;"> |
| 474 | <li>Easier for users to find your app from search, browsing, or promotions</li> |
| 475 | <li>Easier for users to restore your app automatically if they get a new device.</li> |
| 476 | <li>Your ratings and download stats are consolidated across all devices.</li> |
| 477 | <li>Publishing a tablet app in a second listing can dilute ratings for your brand.</li> |
| 478 | </ul> |
| 479 | </li> |
| 480 | <li>If necessary, you can alternatively choose to deliver your app using <a |
| 481 | href="{@docRoot}guide/google/play/publishing/multiple-apks.html">Multiple APK Support</a>, |
| 482 | although in most cases using a single APK to reach all devices is strongly recommended.</li> |
| 483 | |
| 484 | <li>Highlight your app’s tablet capabilities in the product details page: |
| 485 | <ul style="margin-top:.25em;"> |
| 486 | <li>Add <strong>at least one screenshot taken while the app is running on a |
| 487 | tablet</strong>. It's recommended that you add one screenshot of landscape orientation |
| 488 | and one of portrait orientation, if possible. These screenshots make it clear to users |
| 489 | that your app is designed for tablets and highlight all the effort you've put into designing |
| 490 | a great tablet app experience.</li> |
| 491 | <li>Mention tablet support in the app description.</li> |
| 492 | <li>Include information about tablet support in the app's release notes and update |
| 493 | information.</li> |
| 494 | <li>In your app's promo video, add shots of your app running on a tablet.</li> |
| 495 | </ul> |
| 496 | </li> |
| 497 | <li>Make sure you are distributing to tablet devices. Check the app's Supported Devices |
| 498 | list in the <a href="https://play.google.com/apps/publish/">Developer Console</a> |
| 499 | to make sure your app is not filtered from tablet devices that you want to target.</li> |
| 500 | |
| 501 | <li>Let tablet users know about your app! Plan a marketing or advertising campaign that |
| 502 | highlights the use of your app on tablets.</li> |
| 503 | </ul> |
| 504 | |
| 505 | <table> |
| 506 | <tr> |
| 507 | <td><p>Related resources:</p> |
| 508 | <ul style="margin-top:-.5em;"> |
Dirk Dougherty | 9aeb0a81 | 2012-08-20 11:07:36 -0700 | [diff] [blame] | 509 | <li><strong><a href="https://play.google.com/apps/publish/">Publishing Checklist</a></strong> — Recommendations on how to prepare your app for publishing, test it, and launch successfully on Google Play.</li> |
Dirk Dougherty | 4473aba | 2012-10-03 17:43:04 -0700 | [diff] [blame] | 510 | <li><strong><a href="https://play.google.com/apps/publish/">Google Play Android Developer Console</a></strong> — The tools console for publishing your app to Android users.</li> |
| 511 | </ul> |
| 512 | </td> |
| 513 | </tr> |
| 514 | </table> |
| 515 | |
| 516 | <h2 id="test-environment">Setting Up a Test Environment for Tablets</h2> |
| 517 | |
| 518 | <p>To assess the quality of your app on tablets — both for core app quality |
| 519 | and tablet app quality — you need to set up a suitable |
| 520 | hardware or emulator environment for testing. </p> |
| 521 | |
| 522 | <p>The ideal test environment would |
| 523 | include a small number of actual hardware devices that represent key form |
| 524 | factors and hardware/software combinations currently available to consumers. |
| 525 | It's not necessary to test on <em>every</em> device that's on the market — |
| 526 | rather, you should focus on a small number of representative devices, even using |
| 527 | one or two devices per form factor. The table below provides an overview of |
| 528 | devices you could use for testing.</p> |
| 529 | |
| 530 | <p>If you are not able to obtain actual hardware devices for testing, you should |
| 531 | set up emulated devices (AVDs) to represent the most common form factors and |
| 532 | hardware/software combinations. See the table below for suggestions on the emulator |
| 533 | configurations to use. </p> |
| 534 | |
| 535 | <p>To go beyond basic testing, you can add more devices, more form factors, or |
| 536 | new hardware/software combinations to your test environment. For example, you |
| 537 | could include mid-size tablets, tablets with more or fewer hardware/software |
| 538 | features, and so on. You can also increase the number or complexity of tests |
| 539 | and quality criteria. </p> |
| 540 | |
| 541 | <p class="table-caption"><strong>Table 1</strong>. A typical tablet test environment might |
| 542 | include one or two devices from each row in the table below, with one of the |
| 543 | listed chipsets, platform versions, and hardware feature configurations.</p> |
| 544 | |
| 545 | <table> |
| 546 | <tr> |
| 547 | <th>Type</th> |
| 548 | <th>Size</th> |
| 549 | <th>Density</th> |
| 550 | <th>Version</th> |
| 551 | <th>AVD Skin</th> |
| 552 | </tr> |
| 553 | |
| 554 | <tr> |
| 555 | <td>7-inch tablet</td> |
| 556 | <td><span style="white-space:nowrap"><code>large</code> or</span><br /><code>-sw600</code></td> |
| 557 | <td><code>hdpi</code>,<br /><code>tvdpi</code></td> |
| 558 | <td>Android 4.0+</td> |
| 559 | <td>WXGA800-7in</td> |
| 560 | </tr> |
| 561 | <tr> |
| 562 | <td><span style="white-space:nowrap">10-inch</span> tablet</td> |
| 563 | <td><span style="white-space:nowrap"><code>xlarge</code> or</span><br /><code>-sw800</code></td> |
| 564 | <td><code>mdpi</code>,<br /><code>hdpi</code></td> |
| 565 | <td>Android 3.2+</td> |
| 566 | <td>WXGA800</td> |
| 567 | </tr> |
| 568 | </table> |