diff options
author | Dirk Dougherty <ddougherty@google.com> | 2014-05-14 21:21:15 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-05-14 21:21:15 +0000 |
commit | 0540bc373c84b4ab590708cc9f79c95eeac5114c (patch) | |
tree | 5943abf0f2ef3e6c9b7301ae7ec7d33ed5e4d485 /docs/html/distribute/essentials | |
parent | 80816bfcaf487535a45a7e6f271341eaede653b1 (diff) | |
parent | a4e6c7d1d4e6c8ca2b50f91ae8881fb4838d7955 (diff) | |
download | frameworks_base-0540bc373c84b4ab590708cc9f79c95eeac5114c.zip frameworks_base-0540bc373c84b4ab590708cc9f79c95eeac5114c.tar.gz frameworks_base-0540bc373c84b4ab590708cc9f79c95eeac5114c.tar.bz2 |
am a4e6c7d1: am 3506ac87: Doc change: Updated content for distribute.
* commit 'a4e6c7d1d4e6c8ca2b50f91ae8881fb4838d7955':
Doc change: Updated content for distribute.
Diffstat (limited to 'docs/html/distribute/essentials')
-rw-r--r-- | docs/html/distribute/essentials/best-practices/apps.jd | 260 | ||||
-rw-r--r-- | docs/html/distribute/essentials/best-practices/games.jd | 259 | ||||
-rw-r--r-- | docs/html/distribute/essentials/essentials_toc.cs | 44 | ||||
-rw-r--r-- | docs/html/distribute/essentials/gpfe-guidelines.jd | 513 | ||||
-rw-r--r-- | docs/html/distribute/essentials/index.jd | 34 | ||||
-rw-r--r-- | docs/html/distribute/essentials/optimizing-your-app.jd | 517 | ||||
-rw-r--r-- | docs/html/distribute/essentials/quality/core.jd | 1170 | ||||
-rw-r--r-- | docs/html/distribute/essentials/quality/tablets.jd | 867 |
8 files changed, 3664 insertions, 0 deletions
diff --git a/docs/html/distribute/essentials/best-practices/apps.jd b/docs/html/distribute/essentials/best-practices/apps.jd new file mode 100644 index 0000000..055a349 --- /dev/null +++ b/docs/html/distribute/essentials/best-practices/apps.jd @@ -0,0 +1,260 @@ +page.title=App Developer Best Practices +page.image=/distribute/images/gp-app-practices.png +page.metaDescription=Essential tips for launching successful apps in Google Play. +@jd:body + +<div id="qv-wrapper"><div id="qv"> +<h2>Best Practices</h2> +<ol> +<li><a href="#essentials">Get the Essentials Right</a></li> +<li><a href="#users">Get Users</a></li> +<li><a href="#engage">Engage and Retain</a></li> +<li><a href="#beyond">Beyond the Basics</a></li> +<li><a href="#related-resources">Related Resources</a></li> +</ol> +</div></div> + +<p>The following best practices have enabled developers worldwide to build great, successful apps for Google Play.</p> + +<div class="headerLine"> +<h1 id="essentials">Get the Essentials Right</h1><hr> +</div> + +<h3>1. Make it Android</h3> + +<ul> + <li> + <p> + Build your apps to make best use of the unique Android features, such as + <a href="{@docRoot}distribute/engage/widgets.html">widgets</a>, <a href= + "{@docRoot}distribute/engage/notifications.html">rich notifications</a>, + <a href= + "http://android-developers.blogspot.com/2012/02/share-with-intents.html">sharing + through Intents</a>, and more. + </p> + </li> + + <li> + <p> + Add the power of Google features your users already love, such as + <a href="https://developers.google.com/maps/documentation/android/">Google + Maps</a>, <a href="https://developers.google.com/drive/">Google + Drive</a>, and more, all with <a href= + "https://developers.google.com/+/mobile/android/sign-in">single sign + on</a>. + </p> + </li> +</ul> + +<h3> + 2. Make it quality +</h3> + +<ul> + <li> + <p> + Make sure your apps follow the <a href= + "{@docRoot}distribute/essentials/quality/core.html">Core App Quality</a> + guidelines. + </p> + </li> + + <li> + <p> + Create apps that are available on all form factors and screen sizes, by + following the <a href= + "{@docRoot}distribute/essentials/quality/tablets.html">Tablet App + Quality</a> guidelines. + </p> + </li> + + <li> + <p> + Test and <a href= + "{@docRoot}distribute/essentials/optimizing-your-app.html">optimize your + quality</a> at every step and make use of the Google Play <a href= + "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">beta-testing</a> + and <a href= + "{@docRoot}distribute/googleplay/developer-console.html#staged-rollouts">staged + rollouts</a> features to test with users before launch. + </p> + </li> +</ul> + +<div class="headerLine"> + <h1 id="users"> + Get Users + </h1> + + <hr> +</div> + +<h3> + 1. Build buzz +</h3> + +<ul> + <li> + <p> + Create a great <a href="{@docRoot}distribute/users/your-listing.html">app + listing page</a> to showcase your apps and grab users’ attention. Don’t + forget to include a <a href= + "{@docRoot}distribute/engage/video.html">YouTube video</a>. + </p> + </li> + + <li> + <p> + <a href="{@docRoot}distribute/tools/launch-checklist.html">Launch</a> on + multiple platforms simultaneously to maximize your reach. + </p> + </li> + + <li> + <p> + Promote your apps with the official <a href= + "{@docRoot}distribute/tools/promote/badges.html">Google Play badge</a> + and <a href="{@docRoot}distribute/tools/promote/linking.html">link to + your products</a> on Google Play. + </p> + </li> + + <li> + <p> + Build a community with social media, <a href= + "http://groups.google.com/">forums</a>, and <a href= + "http://plus.google.com">communities</a> to get and keep users talking. + </p> + </li> +</ul> + +<h3> + 2. Optimize for great ratings +</h3> + +<ul> + <li> + <p> + Get to <a href="{@docRoot}distribute/users/know-your-user.html">know your + users</a>, listen to and <a href= + "{@docRoot}distribute/engage/app-updates.html">update your apps</a> from + their feedback. + </p> + </li> + + <li> + <p> + Focus on your strength markets first, get these right before expanding. + </p> + </li> +</ul> + +<div class="headerLine"> + <h1 id="engage"> + Engage and Retain + </h1> + + <hr> +</div> + +<h3> + 1. Keep users coming back +</h3> + +<ul> + <li> + <p> + Use <a href="{@docRoot}google/play/billing/index.html">Google Play In-app + Billing</a> to offer subscriptions to extended features. + </p> + </li> + + <li> + <p> + Hold competitions and offer promotions, then announce them through + <a href="{@docRoot}design/patterns/notifications.html">notifications</a>. + </p> + </li> +</ul> + +<h3> + 2. Earn users’ love +</h3> + +<ul> + <li> + <p> + <a href= + "http://android-developers.blogspot.com/2013/05/all-google-play-developers-can-now.html"> + Respond to reviews</a> and get valuable feedback from the community + you've built. + </p> + </li> + + <li> + <p> + <a href= + "http://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html"> + Measure</a> your campaigns to see what is driving users to install your + apps. + </p> + </li> + + <li> + <p> + <a href= + "{@docRoot}distribute/essentials/optimizing-your-app.html#measuring-analyzing-responding"> + Analyze in-app use</a> to steer content updates and prolong the life of + your apps. + </p> + </li> +</ul> + +<div class="headerLine"> + <h1 id="beyond"> + Beyond the Basics + </h1> + + <hr> +</div> + +<ul> + <li> + <p> + After you’ve launched in your market of strength, <a href= + "{@docRoot}distribute/users/expand-to-new-markets.html">expand into other + markets</a> strategically and <a href= + "{@docRoot}distribute/tools/localization-checklist.html">localize</a> + your apps as you go. + </p> + </li> + + <li> + <p> + Keep users engaged, and stay ahead of the competition, by continually + <a href= + "{@docRoot}distribute/essentials/optimizing-your-app.html">optimizing + your apps</a> to offer new and better features, or retire those that + users aren’t using. + </p> + </li> + + <li> + <p> + Build educational apps: learn <a href= + "{@docRoot}distribute/googleplay/edu/start.html">how to make apps for + Google Play for Education</a>. + </p> + </li> +</ul> + +<div class="headerLine"> +<h1 id="related-resources">Related Resources</h1><hr> +</div> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/toolsreference/bestpractices/apps" + data-sortOrder="-timestamp" + data-cardSizes="9x3,9x3" + data-maxResults="6"></div> + diff --git a/docs/html/distribute/essentials/best-practices/games.jd b/docs/html/distribute/essentials/best-practices/games.jd new file mode 100644 index 0000000..ac1df44 --- /dev/null +++ b/docs/html/distribute/essentials/best-practices/games.jd @@ -0,0 +1,259 @@ +page.title=Game Developer Best Practices +page.image=/distribute/images/gp-games-practices.png +page.metaDescription=Essential tips for launching successful games in Google Play. + +@jd:body + +<div id="qv-wrapper"><div id="qv"> +<h2>Best Practices</h2> +<ol> +<li><a href="#users">Get Users</a></li> +<li><a href="#engage">Engage and Retain</a></li> +<li><a href="#beyond">Beyond the Basics</a></li> +<li><a href="#related-resources">Related Resources</a></li> +</ol> +</div></div> + +<p> + The following best practices have enabled developers worldwide to build + great, successful games for Google Play. +</p> + +<div class="headerLine"> + <h1 id="users"> + Get Users + </h1> + + <hr> +</div> + +<h3> + 1. Optimize for great ratings +</h3> + +<ul> + <li> + <p> + <a href= + "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">Beta + test</a> to ensure your games are ready and poised for great ratings. + </p> + </li> + + <li> + <p> + Optimize graphics, frame rates, and responsiveness with the <a href= + "http://android-developers.blogspot.com/2013/09/using-hardware-scaler-for-performance.html"> + Hardware Scaler</a> and <a href= + "{@docRoot}training/graphics/opengl/index.html">OpenGL ES</a>. + </p> + </li> + + <li> + <p> + Be sure your APK is small, then provide game content through over-the-air + downloads. + </p> + </li> +</ul> + +<h3> + 2. Build buzz +</h3> + +<ul> + <li> + <p> + Build a community with social media, <a href= + "{@docRoot}distribute/users/build-community.html">communities</a> to get + and keep users talking. + </p> + </li> + + <li> + <p> + Promote your games with official <a href= + "{@docRoot}distribute/tools/promote/badges.html">Google Play badges</a> + and <a href="{@docRoot}distribute/tools/promote/linking.html">links to + your products</a> on Google Play. + </p> + </li> + + <li> + <p> + If you ship on multiple platforms, doing so at the same time can maximize + your marketing impact. + </p> + </li> +</ul> + +<h3> + 3. Get Visibility +</h3> + +<ul> + <li> + <p> + First impressions count: <a href= + "{@docRoot}distribute/users/your-listing.html">highlight</a> the game's + best features in screenshots, videos, and description. + </p> + </li> + + <li> + <p> + Integrate Google Play Game Services, so your game is displayed in the + <a href= + "https://play.google.com/store/apps/details?id=com.google.android.play.games"> + Google Play Games App</a>. + </p> + </li> +</ul> + +<div class="headerLine"> + <h1 id="engage"> + Engage and Retain + </h1> + + <hr> +</div> + +<h3> + 1. Keep users coming back +</h3> + +<ul> + <li> + <p> + <a href= + "https://developers.google.com/games/services/common/concepts/achievements"> + Achievements</a>, <a href= + "https://developers.google.com/games/services/common/concepts/leaderboards"> + leaderboards</a>, <a href= + "https://developers.google.com/games/services/common/concepts/realtimeMultiplayer"> + multiplayer</a>, and <a href= + "https://developers.google.com/games/services/common/concepts/cloudsave">cloud + save</a> help engage users and bring them back. + </p> + </li> + + <li> + <p> + Hold tournaments and offer promotions, then announce them through + <a href="{@docRoot}design/patterns/notifications.html">notifications</a>. + </p> + </li> + + <li> + <p> + Sign in users early, then automatically. Before their first sign-in, save + progress locally. + </p> + </li> +</ul> + +<h3> + 2. Give users a reason to invest their money +</h3> + +<ul> + <li> + <p> + A majority of the top grossing games use in-app purchases. Use them to + unlock content and allow players to enhance their game play. + </p> + </li> + + <li> + <p> + <a href="{@docRoot}google/play/billing/index.html">Google Play In-app + Billing</a> makes purchasing easy with several forms of payment. + </p> + </li> + + <li> + <p> + Provide content updates regularly to give users limited edition items to + win or purchase. + </p> + </li> +</ul> + +<h3> + 3. Earn players’ love +</h3> + +<ul> + <li> + <p> + <a href= + "http://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html"> + Measure</a> your campaigns to see what’s driving quality users to install + your games. + </p> + </li> + + <li> + <p> + <a href= + "{@docRoot}distribute/essentials/optimizing-your-app.html#measuring-analyzing-responding"> + Analyze in-game use</a> to steer content updates and prolong the life of your + games. + </p> + </li> + + <li> + <p> + <a href= + "http://android-developers.blogspot.com/2013/05/all-google-play-developers-can-now.html"> + Respond to reviews</a> and get valuable feedback from the community + you’ve built. + </p> + </li> +</ul> + +<div class="headerLine"> + <h1 id="beyond"> + Beyond the Basics + </h1> + + <hr> +</div> + +<ul> + <li> + <p> + After you've launched in your market of strength, <a href= + "{@docRoot}distribute/users/expand-to-new-markets.html">expand into other + markets</a> strategically and <a href= + "{@docRoot}distribute/tools/localization-checklist.html">localize</a> + your apps as you go. + </p> + </li> + + <li> + <p> + Provide content <a href= + "{@docRoot}distribute/engage/app-updates.html">updates on a regular + basis</a> to keep users engaged. + </p> + </li> + + <li> + <p> + Building educational games? See the <a href= + "{@docRoot}distribute/essentials/gpfe-guidelines.html">Education + Guidelines</a>. + </p> + </li> +</ul> + +<div class="headerLine"> +<h1 id="related-resources">Related Resources</h1><hr> +</div> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/toolsreference/bestpractices/games" + data-sortOrder="-timestamp" + data-cardSizes="9x3,9x3" + data-maxResults="6"></div> diff --git a/docs/html/distribute/essentials/essentials_toc.cs b/docs/html/distribute/essentials/essentials_toc.cs new file mode 100644 index 0000000..7084fdd --- /dev/null +++ b/docs/html/distribute/essentials/essentials_toc.cs @@ -0,0 +1,44 @@ +<ul id="nav"> + <li class="nav-section"> + <div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/quality/core.html"> + <span class="en">Core App Quality</span></a> + </div> + </li> + <li class="nav-section"> + <div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/quality/tablets.html"> + <span class="en">Tablet App Quality</span> + </a> + </div> + </li> + <li class="nav-section"> + <div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/gpfe-guidelines.html"> + <span class="en">Education Guidelines</span> + </a> + </div> + </li> + <li class="nav-section"> + <div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/optimizing-your-app.html"> + <span class="en">Optimize Your App</span> + </a> + </div> + </li> + <li class="nav-section"> + <div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/best-practices/apps.html"> + <span class="en">App Best Practices</span> + </a> + </div> + </li> + <li class="nav-section"> + <div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/essentials/best-practices/games.html"> + <span class="en">Game Best Practices</span> + </a> + </div> + </li> + + +<script type="text/javascript"> +<!-- + buildToggleLists(); + changeNavLang(getLangPref()); +//--> +</script> diff --git a/docs/html/distribute/essentials/gpfe-guidelines.jd b/docs/html/distribute/essentials/gpfe-guidelines.jd new file mode 100644 index 0000000..8b47671 --- /dev/null +++ b/docs/html/distribute/essentials/gpfe-guidelines.jd @@ -0,0 +1,513 @@ +page.title=Education Guidelines +page.metaDescription=These guidelines and requirements help you develop great apps for students, which offer compelling content and an intuitive user experience on Android tablets. +page.image=/distribute/images/edu-guidelines.jpg +Xnonavpage=true + +@jd:body + + +<div id="qv-wrapper"><div id="qv"> +<h2>Guidelines</h2> +<ol> +<li><a href="#basic-reqts">Basic Requirements</a></li> +<li><a href="#monetizing-ads">Monetizing and Ads</a></li> +<li><a href="#e-value">Educational Value</a></li> +<li><a href="#quality">App Quality</a></li> +<li><a href="#related-resources">Related Resources</a></li> +</ol> + +<h2> + Testing +</h2> + +<ol> + <li> + <a href="#test-environment">Setting Up a Test Environment</a> + </li> +</ol> + +</div></div> + +<div style="margin:0 0 1em 0;"> + <img src="{@docRoot}distribute/images/edu-guidelines.jpg" style= + "width:274px;"> +</div> + +<p> + These guidelines and requirements help you develop great apps for students, + which offer compelling content and an intuitive user experience on Android + tablets. +</p> + +<p> + You’ll also need to ensure that your apps comply with the terms of the + <a href= + "https://play.google.com/about/developer-distribution-agreement-addendum.html"> + Google Play for Education Addendum</a>, <a href= + "http://play.google.com/about/developer-content-policy.html">Google Play + Developer Program Policies</a>, and <a href= + "http://play.google.com/about/developer-distribution-agreement.html">Developer + Distribution Agreement</a>. +</p> + +<div class="headerLine clearfloat"> + <h1 id="basic-reqts"> + Basic Requirements + </h1> + + <hr> +</div> + +<p> + To participate, your apps must be designed for the K-12 market. The basic + requirements that your apps must meet are: +</p> + +<ul> + <li> + <p> + Apps and the ads they contain must not collect personally identifiable + information, other than user credentials or data required to operate and + improve the app. + </p> + </li> + + <li> + <p> + Apps must not use student data for purposes unrelated to its educational + function. + </p> + </li> + + <li> + <p> + Apps must have a content rating of "Everyone" or "Low Maturity" (apps + with a "Medium Maturity" rating are allowed, if they have that rating + solely because they allow communication between students). + </p> + </li> + + <li> + <p> + App content, including ads displayed by the app, must be consistent with + the app's maturity rating. The app must not display any "offensive" + content, as described in the <a href= + "http://play.google.com/about/developer-content-policy.html">Google Play + Developer Program Policies</a> and <a href= + "https://support.google.com/googleplay/android-developer/answer/188189">content-rating + guidelines</a>. + </p> + </li> + + <li> + <p> + Apps must comply with the Children’s Online Privacy Protection Act and + all other applicable laws and regulations. + </p> + </li> +</ul> + +<div class="headerLine"> + <h1 id="monetizing-ads"> + Monetizing and Ads + </h1> + + <hr> +</div> + +<div class="figure"> + <img src="{@docRoot}images/gp-edu-monetize.png"> +</div> + +<p> + In-app purchase is currently not supported with Google Play for Education, so + a student device will block any transactions. To avoid confusion, be sure to + remove any in-app purchase buttons and related UI elements from your apps. + We’re investigating additional purchase mechanisms to enable more flexible + pricing models for developers and schools. +</p> + +<p> + If your apps are priced In Google Play for Education, you must allow Google + Play to offer teachers limited free trials before purchase (you provide this + through business terms only, no development work is needed.) +</p> + +<p> + You can only choose not to remove in-app purchasing from your apps where all + content and services are sold through Google Play for Education using In-app + Billing. If you choose not to remove In-app Billing features, ensure that: +</p> + +<ul> + <li> + <p> + Users can access your apps’ core functionality for a classroom setting + without an in-app purchase. + </p> + </li> + + <li> + <p> + In-app purchases are clearly identifiable in your UI. + </p> + </li> + + <li> + <p> + You declare the use of in-app purchases at <a href= + "{@docRoot}distribute/googleplay/edu/start.html#publish">opt-in</a>. + </p> + </li> +</ul> + +<p> + For each app that you publish, you can set a single price that applies to + both Google Play and Google Play for Education. You can’t set a different + price for a given app (based on a single package name) in Google Play for + Education. +</p> + +<p> + If your apps display ads, you should disable the display of ads if possible, + or ensure that: +</p> + +<ul> + <li>Ads are not distracting for students or teachers (this includes + Flash-based ads, video ads, and ads that flash or move) + </li> + + <li>Interstitial ads are not served in the app + </li> + + <li>Ad walls do not appear in the app UI + </li> + + <li>Ads do not occupy a significant portion of the screen + </li> + + <li>Ads content does not exceed the maturity rating of the app. + </li> + + <li> + <p> + You declare the use of ads at <a href= + "{@docRoot}distribute/googleplay/edu/start.html#publish">opt-in</a>. + </p> + </li> +</ul> + +<div class="headerLine"> + <h1 id="e-value"> + Educational Value + </h1> + + <hr> +</div> + +<div class="figure"> + <img src="{@docRoot}images/gp-e-value.png" class="border-img"> +</div> + +<p> + Apps submitted to Google Play for Education will be evaluated by a + third-party educator network, which will review them based on alignment with + <a href="http://www.corestandards.org/">Common Core Standards</a> and other + educational considerations. This will help make your content more + discoverable for teachers and administrators as they browse by grade level, + subject, core curriculum, and other parameters. +</p> + +<p> + Apps with highest educational value will have these characteristics: +</p> + +<ul> + <li> + <p> + Designed for use in K-12 classrooms. + </p> + </li> + + <li> + <p> + Aligned with a common core standard or support common-core learning. + </p> + </li> + + <li> + <p> + Simple, easy to use, and intuitive for the grade levels the apps are + targeting. Apps are relatively easy to navigate without teacher guidance. + Not distracting or overwhelming to students. + </p> + </li> + + <li> + <p> + Enjoyable and interactive. Apps are engaging to students and lets them + control their experience. + </p> + </li> + + <li> + <p> + Versatile. Apps have features that make them useful for more than one + classroom function or lesson throughout the school year. + </p> + </li> + + <li> + <p> + Supports the "4Cs": + </p> + + <ul> + <li> + <p> + <em>Creativity</em> — Allows students to create in order to + express understanding of the learning objectives, and try new + approaches, innovation, and invention to get things done. + </p> + </li> + + <li> + <p> + <em>Critical thinking</em> — Allows students to look at + problems in a new way, linking learning across subjects and + disciplines. + </p> + </li> + + <li> + <p> + <em>Collaboration</em> — Allows students and (if appropriate) + educators to work together to reach a goal. + </p> + </li> + + <li> + <p> + <em>Communication</em> — Allows students to comprehend, + critique and share thoughts, questions, ideas, and solutions. + </p> + </li> + </ul> + </li> +</ul> + +<p> + As you design and develop your apps, make sure they offer high educational + value by addressing as many of these characteristics as possible. +</p> + +<div class="headerLine"> + <h1 id="quality"> + App Quality + </h1> + + <hr> +</div> + +<div class="figure"> + <img src="{@docRoot}images/gp-edu-quality.png"> +</div> + +<p> + Your apps should be designed to perform well and look great on Android + tablets, and they should offer the best user experience possible. +</p> + +<p> + High quality apps are engaging, intuitive, and offer compelling content. + Google Play for Education will highlight high-quality apps for easy discovery + in the store. Here are some recommendations for making your app easy for + students and teachers to enjoy: +</p> + +<ul> + <li> + <p> + Meet the Core Quality Guidelines: + </p> + + <ul> + <li> + <p> + Follow <a href="{@docRoot}design/index.html">Android Design + Guidelines</a>. Pay special attention to the sections on <a href= + "{@docRoot}design/patterns/actionbar.html">Action Bar</a>, <a href= + "{@docRoot}design/patterns/navigation.html">Navigation</a>, and + <a href="{@docRoot}design/patterns/pure-android.html">Pure + Android</a>. + </p> + </li> + + <li> + <p> + Test your apps against the <a href= + "{@docRoot}distribute/essentials/quality/core.html">Core Quality + Guidelines</a>. + </p> + </li> + </ul> + </li> + + <li> + <p> + Meet the Tablet App Quality guidelines: + </p> + + <ul> + <li> + <p> + Follow our best practices for tablet app development. + </p> + </li> + + <li> + <p> + Review the <a href= + "{@docRoot}distribute/essentials/quality/tablets.html">Tablet App + Quality</a> guidelines and <a href= + "http://android-developers.blogspot.com/2012/11/designing-for-tablets-were-here-to-help.html"> + blog post on designing for tablets.</a> + </p> + + <ul> + <li>Check your Optimization Tips in the <a href= + "https://play.google.com/apps/publish/">Developer Console</a> (if + you've already uploaded your apps.) + </li> + </ul> + </li> + + <li> + <p> + Strive for simplicity and highest usability for students: + </p> + + <ul> + <li> + <p> + Design your app so that teachers and students can use all the + capabilities of your app without having to sign-in to multiple + accounts and remember multiple passwords. + </p> + </li> + + <li> + <p> + Every student or teacher using a Google Play for Education tablet + will already be signed in with a Google account on the device. + You can take advantage of that to provide a simple, seamless + sign-in experience in your app. A recommended approach is to use + <a href="{@docRoot}google/play-services/auth.html">Google OAuth 2 + authorization</a> through Google Play Services. + </p> + </li> + </ul> + </li> + </ul> + </li> +</ul> + +<div class="headerLine"> + <h1 id="test-environment"> + Test Environment + </h1> + + <hr> +</div> + +<p> + To test your app and assess it against the guidelines in this document, it's + recommended that you <a href= + "{@docRoot}distribute/essentials/quality/tablets.html#test-environment">set + up a test environment</a> that replicates the actual environment in which + students and teachers will run your app. +</p> + +<h3> + Test conditions +</h3> + +<p> + Make sure to test your apps under conditions that simulate those of schools. + For example, Google Play for Education lets administrators <a href= + "https://support.google.com/a/answer/182442?hl=en">control or disable certain + capabilities</a> for students, so it's good to test your app with those + capabilities disabled. Below are some conditions to test your apps for, to + ensure best results in the Google Play for Education environment: +</p> + +<ul> + <li> + <p> + <em>Android version</em> — Test the apps on devices running Android + 4.2. Google Play for Education devices will be running Android 4.2 or + higher (API level 17+). + </p> + </li> + + <li> + <p> + <em>Proxy server</em> — Test the apps in a network environment that + uses proxies. Many schools use proxies. + </p> + </li> + + <li> + <p> + <em>No location services</em> — Test the apps to make sure they + work properly with location services disabled. Many schools will disable + location services for student devices. + </p> + </li> + + <li> + <p> + <em>No In-app Billing</em> — Test the apps to make sure they work + properly without access to In-app Billing. In-app purchases are blocked + on Google Play for Education devices. + </p> + </li> + + <li> + <p> + <em>No Bluetooth</em> — Test the apps to make sure they work + properly when Bluetooth is disabled. Many schools will disable Bluetooth + on student devices. + </p> + </li> + + <li> + <p> + <em>No access to network</em> — Test the app to make sure it works + properly when the device cannot connect to the internet. + </p> + </li> +</ul> + +<div class="headerLine"> +<h1>Related Resources</h1><hr> +</div> + +<div class="dynamic-grid"> +<h3>FOR DEVELOPERS</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/eduessentials/developers" + data-sortOrder="-timestamp" + data-cardSizes="6x3,6x3,6x3" + data-maxResults="6"></div> + +<h3>FOR TEACHERS AND EDUCATORS</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/eduessentials/educators" + data-sortOrder="-timestamp" + data-cardSizes="6x3,6x3,6x3" + data-maxResults="3"></div> +</div>
\ No newline at end of file diff --git a/docs/html/distribute/essentials/index.jd b/docs/html/distribute/essentials/index.jd new file mode 100644 index 0000000..ca5442a --- /dev/null +++ b/docs/html/distribute/essentials/index.jd @@ -0,0 +1,34 @@ +page.title=Essentials for a Successful App +meta.tags="landing, quality" +page.tags="guidelines", "tablet", "quality" +section.landing=true +nonavpage=true + +@jd:body + +<p> + A focus on quality should be part of your entire app delivery process: from + initial concept through app and UI design, coding and testing and onto a + process of monitoring feedback and making improvement after launch. +</p> + +<div class="dynamic-grid"> +<div class="resource-widget resource-flow-layout landing col-16" + data-query="collection:distribute/essentials" + data-cardSizes="6x6" + data-maxResults="6"> +</div> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-16" + data-query="type:blog+tag:quality" + data-cardSizes="6x3" + data-maxResults="3"> +</div> +<div class="resource-widget resource-flow-layout col-16" + data-query="type:youtube+tag:appquality" + data-cardSizes="6x3" + data-maxResults="3"> +</div> +</div>
\ No newline at end of file diff --git a/docs/html/distribute/essentials/optimizing-your-app.jd b/docs/html/distribute/essentials/optimizing-your-app.jd new file mode 100644 index 0000000..3fe91b28 --- /dev/null +++ b/docs/html/distribute/essentials/optimizing-your-app.jd @@ -0,0 +1,517 @@ +page.title=Optimize Your App +page.metaDescription=A look at how to get the most visibility and the highest ratings possible for your app or game. Optimizing the quality of your apps is a key strategy. +page.image=/distribute/images/gp-optimize-card.jpg + +@jd:body + +<div id="qv-wrapper"> + <div id="qv"> + <h2>Strategies</h2> + <ol> + <li><a href="#listen-to-your-users">Listen to Your Users</a></li> + <li><a href="#measuring-analyzing-responding">Measuring, Analyzing, and Responding to User Behavior</a></li> + <li><a href="#improve-stability">Improve Stability and Eliminate Bugs</a></li> + <li><a href="#improve-ui">Improve UI Responsiveness</a></li> + <li><a href="#improve-usability">Improve Usability</a></li> + <li><a href="#professional-appearance">Professional Appearance and Aesthetics</a></li> + <li><a href="#deliver-features">Deliver the Right Set of Features</a></li> + <li><a href="#integrate">Integrate with the System and Third-Party Apps</a></li> + <li><a href="#related-resources">Related Resources</a></li> + </ol> + </div> +</div> + +<div class="top-right-float"> + <img src="{@docRoot}images/gp-optimize.png" class="quality-top-image" style= + "width:239px;padding-left:1.5em;"> +</div> + +<p> + With thousands of new apps being published in Google Play every week, it's + important to look for ways to get the most visibility and the highest ratings + possible. Optimizing the quality of your apps is a key strategy. +</p> + +<p> + A higher quality app can translate to higher user ratings, generally better + rankings, more downloads, and higher retention (longer install periods). + High-quality apps are much more likely to get positive publicity, such as + being featured in Google Play or generating social media buzz. +</p> + +<p> + The quality of your apps is something you should consider addressing both + before and after launch. Gaining users after the launch of a poor quality app + can be hard and recovering costly. On the other hand, maintaining the ranking + of high-quality apps is made easier if there are continual improvements, a + practice that also fuels the impression-install-ranking cycle. +</p> + +<p> + On this page you can find advice on a number of ways in which you can drive + improvements to your apps’ quality. +</p> + +<div class="headerLine"> + <h1 id="listen-to-your-users"> + Listen to Your Users + </h1> + + <hr> +</div> + +<div class="figure"> + <img src="{@docRoot}images/gp-optimizing-chat-bubbles.png"> +</div> + +<p> + Listening and hearing your users can be one of your best tools for success. + Start listening to your users before launching your apps and continue to + listen after launch. +</p> + +<h3> + <strong>Listening before you launch</strong> +</h3> + +<p> + You can listen to your users during the development of your apps. This + process can start with focus groups to review app features, continue into + user experience workshops, and onto alpha and beta releases. Listening at + these stages has two main benefits: <strong>you’ll build apps with features + users want</strong> and <strong>any issues they identify will be cheaper and + quicker to fix</strong> than they would be once the app is launched fully. +</p> + +<p> + If the practicalities of focus groups and user workshops seem excessive in + relation to the development of a particular app, drawing on the feedback of + colleagues, friends, and family can be much more useful than getting no + feedback at all. +</p> + +<p> + It's crucial to conduct user testing before releasing your apps to Google + Play. If you can only engage with colleagues, friends, and family you’re + already making a good start. For more extensive testing consider a public + alpha/beta test or creating your own trusted tester program. You can manage + app distribution yourself through email or your own website, or you can use + <a href= + "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">beta-testing</a> + and <a href= + "{@docRoot}distribute/googleplay/developer-console.html#staged-rollouts">staged + rollouts</a> in conjunction with <a href= + "http://www.google.com/+/business/">Google+</a> or <a href= + "https://groups.google.com/forum/#!overview">Google Groups</a> to distribute + software and gather feedback to a subset of users. <strong>Users on alpha or + beta versions cannot leave reviews or ratings</strong>, so there is + <strong>no risk to your rating</strong> on Google Play. +</p> + +<p> + Unless you have to, don’t restrict the users you involve in these stages in + the information they can share through their social networks and blogs - + users engaged in these early stages (and listened too) are likely to be great + ambassadors for your apps and will help create great social media buzz. +</p> + +<h3> + Listening after launch +</h3> + +<p> + Once you have launched, the most obvious way to listen to users is by reading + and addressing comments on Google Play. Although the comments aren't always + productive or constructive, some will provide valuable insight on aspects of + your apps. It's important to remember that users have the opportunity to + change their ratings and comments as much as they like. +</p> + +<p> + There are more interactive ways you can reach users, help them address their + concerns, and gather more detailed feedback: by setting up support and + discussion forums. There are some great support tools out there that can put + you in touch with your users directly, from forums such as <a href= + "http://groups.google.com/">Google Groups</a> to comprehensive customer + support products and tools like UserVoice. Once you get set up with such a + tool, make sure to fill in the support link in your Google Play product + details page — users do click through to these. +</p> + +<p> + Also don’t forget to use the <a href= + "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">beta-testing</a> + and <a href= + "{@docRoot}distribute/googleplay/developer-console.html#staged-rollouts">staged + rollout</a> features of Google Play with app updates. +</p> + +<div class="headerLine" id="measuring-analyzing-responding"> + <h1> + Measuring, Analyzing, and Responding to User Behavior + </h1> + + <hr> +</div> + +<div class="figure"> + <img src="{@docRoot}images/gp-optimize-analytics.png"> +</div> + +<p> + One of the best ways to spot issues to resolve is by measuring user behavior. + Optimizing your app becomes much easier when you analyze performance before + and after you launch. Drop off points, low ratings, and high percent of + uninstalls can be indicative that there’s a problem. Measuring and responding + to user-related metrics such as download sources, retention rates, and in-app + behavior regularly is critical to keeping and bringing back your hard earned + user base. +</p> + +<p> + You can get data from tools in Google Play or third-parties to analyze user + behavior. You can identify details such as: +</p> + +<ul> + <li> + <p> + Where installs are coming from. + </p> + </li> + + <li> + <p> + The types of users you are acquiring. + </p> + </li> + + <li> + <p> + What is causing user churn and how to reduce it. + </p> + </li> +</ul> + +<h3> + Statistics for analyzing installs and ratings +</h3> + +<p> + Once you’ve published your app, Google Play makes it easy to see how it’s + doing. The <a href="https://play.google.com/apps/publish/">Developer + Console</a> gives you access to a variety of anonymized statistics and custom + charts that show you the app's installation performance and ratings. +</p> + +<p> + You can view data and charts for active, daily, and total installs per unique + devices or users, as well as upgrades and uninstalls. You can also view the + app's daily average user rating and its cumulative user rating. To help you + analyze the data, you can view install and ratings statistics across a + variety of different dimensions such as Android version, device, country, app + version, and carrier. +</p> + +<div> + <img class="border-img" src="{@docRoot}images/gp-dc-stats-mini.png"> +</div> + +<p> + You can see your app statistics on timeline charts, for all metrics and + dimensions. At a glance, the charts highlight your app’s installation and + ratings peaks and longer-term trends, which you can correlate to promotions, + app improvements, or other factors. You can even focus in on data inside a + dimension by highlighting specific data points (such as individual platform + versions or languages) on the timeline. +</p> + +<p> + You can download all of your installation data as a CSV file for viewing in + the business program of your choice. +</p> + +<h3> + Tracking and analyzing Marketing campaigns +</h3> + +<p> + While you should consider monitoring user behavior data as a part of your + normal activities, it’s particularly important when you’re running any form + of marketing campaign, to make sure you’re getting the right users at the + lowest cost possible. +</p> + +<p> + One way to track your marketing campaigns is to link <a href= + "http://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html"> + Google Analytics with your Google Play account</a> to analyze activity from + source to install. +</p> + +<div style="margin-top:1em;"> + <img src="{@docRoot}images/gp-optimizing-image-4.jpg" class="border-img"> +</div> + +<p> + You can also use any of the variety of tools on the market to help track your +marketing success and improvement ROI if you wish. There are also third parties +who can help automate, measure, and optimize your mobile marketing. +</p> + +<div class="headerLine"> + <h1 id="improve-stability"> + Improve Stability and Eliminate Bugs + </h1> + + <hr> +</div> + +<p> + There are many tools and techniques for testing and profiling your app on + different devices and user scenarios. +</p> + +<p> + One noteworthy and yet relatively underused tool for catching stability + issues such as crashes is the <a href= + "{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a> + (Monkey). Monkey will send random UI events to your app's activities, + allowing you to trigger user flows that can uncover stability problems. +</p> + +<p> + Also, with the Google error-reporting features built into most Android + devices, users have a way to report application crashes to you. The error + reports show up in aggregate in the Google Play Developer Console. Make sure + to read these reports often and act on them appropriately. +</p> + +<p> + Last, keep an external bug and feature request tracker and let users know how + to find it. This will enable them to engage with the app at a closer level, + by following features and bugs that affect them. User frustration with app + problems can be effectively managed with diligent issue tracking and + communication. Several community support tools offer issue tracking features, + and if your project is open source, most popular repository hosting sites + offer this as well. +</p> + +<div class="headerLine"> + <h1 id="improve-ui"> + Improve UI Responsiveness + </h1> + + <hr> +</div> + +<div class="figure"> + <img src="{@docRoot}images/gp-optimize-speed.png"> +</div> + +<p> + One sure-fire way to lose your users is to give them a slow, unresponsive UI. + Research has shown that <a href= + "http://googleresearch.blogspot.com/2009/06/speed-matters.html">speed + matters</a>, for any interface, on mobile, web, or desktop. In fact, the + importance of speed is amplified on mobile devices since users often need + their information on the go and in a hurry. +</p> + +<p> + You can improve your apps' UI responsiveness by moving long-running + operations off the main thread to worker threads. Android offers built-in + debugging facilities such as StrictMode for analyzing your app's performance + and activities on the main thread. See more recommendations in <a href= + "http://www.youtube.com/watch?v=c4znvD-7VDA">Writing Zippy Android Apps</a>, + a developer session from Google I/O 2010. +</p> + +<p> + A great way to improve UI performance is to minimize the complexity of your + layouts. If you open up <a href= + "{@docRoot}tools/help/hierarchy-viewer.html">hierarchyviewer</a> and see that + your layouts are more than 5 levels deep, it may be time to simplify your + layout. Consider refactoring those deeply nested <a href= + "{@docRoot}reference/android/widget/LinearLayout.html">LinearLayouts</a> into + <a href="{@docRoot}guide/topics/ui/layout/relative.html">RelativeLayout</a>. + The impact of View objects is cumulative — each one costs about 1 to 2 KB of + memory, so large view hierarchies can be a recipe for disaster, causing + frequent VM garbage collection passes which block the main (UI) thread. You + can learn more from the Google I/O session <a href= + "http://www.youtube.com/watch?v=wDBM6wVEO70">World of ListView</a>. +</p> + +<p> + Lastly, as pointed out in the blog post <a href= + "http://android-developers.blogspot.com/2010/10/traceview-war-story.html">Traceview + War Story</a>, tools like <a href= + "{@docRoot}tools/help/traceview.html">traceview and ddms</a> can be your best + friends in improving your app by profiling method calls and monitoring VM + memory allocations, respectively. +</p> + +<div class="headerLine"> + <h1 id="improve-usability"> + Improve Usability + </h1> + + <hr> +</div> + +<div class="sidebox-wrapper" style="float:right;"> + <div class="sidebox"> + <p> + <strong>Tip:</strong> As you’re designing or evaluating your app's UI, + make sure to read and become familiar with the <a href= + "{@docRoot}design/index.html">Android Design</a> guidelines. Included are + many examples of UI patterns, styles, and building blocks, as well as + tools for the design process. + </p> + </div> +</div> + +<p> + In usability and in app design too, you should listen carefully to your + users. Ask a handful of real Android device users (friends, family, etc.) to + try out your app and observe them as they interact with it. Look for cases + where they get confused, are unsure of how to proceed, or are surprised by + certain behaviors. Minimize these cases by rethinking some of the + interactions in your app. See the <a href= + "{@docRoot}design/patterns/index.html">Patterns section</a> for tips to + improve your design. +</p> + +<p> + In the same vein, two problems that can plague some Android user interfaces + are small tap targets and excessively small font sizes. These are generally + easy to fix and can make a big impact on usability and user satisfaction. As + a general rule, optimize for ease of use and legibility, while minimizing, or + at least carefully balancing, information density. +</p> + +<p> + Another way to incrementally improve usability, based on real-world data, is + to implement <a href= + "http://code.google.com/mobile/analytics/docs/">Analytics</a> throughout your + app to log the use of particular sections. Consider demoting infrequently + used sections to the overflow menu in the <a href= + "{@docRoot}design/patterns/actionbar.html">Action bar</a>, or removing them + altogether. For often-used sections and UI elements, make sure they're + immediately obvious and easily accessible in your app's UI so that users can + get to them quickly. +</p> + +<div class="headerLine"> + <h1 id="professional-appearance"> + Professional Appearance and Aesthetics + </h1> + + <hr> +</div> + +<p> + There's no substitute for a real user interface designer — ideally one who's + well-versed in mobile and Android, and handy with both interaction and visual + design. One popular venue to post openings for designers is <a href= + "http://jobs.smashingmagazine.com/">jobs.smashingmagazine.com</a>, and + leveraging social networks can also surface great talent. +</p> + +<p> + If you don't have the luxury of working with a UI designer, there are some + ways in which you can improve your app's appearance yourself. You can use + Adobe Photoshop, Adobe Fireworks, GIMP, Inkscape or other image editing + tools. Mastering the art of the pixel in these apps takes time, but honing + this skill can help build polish across your interface designs. Also, master + the resources framework by studying the framework UI assets and layouts and + reading through the <a href= + "{@docRoot}guide/topics/resources/index.html">resources documentation</a>. + Techniques such as 9-patches and resource directory qualifiers are somewhat + unique to Android, and are crucial in building flexible yet aesthetic UIs. +</p> + +<p> + Before you get too far in designing your app and writing the code, make sure + to visit the <a href="{@docRoot}design/index.html">Android Design section</a> + and learn about the vision, the building blocks, and the tools of designing + beautiful and inspiring user interfaces. +</p> + +<div class="headerLine"> + <h1 id="deliver-features"> + Deliver the Right Set of Features + </h1> + + <hr> +</div> + +<p> + Having the <em>right</em> set of features in your app is important. It's + often easy to fall into the trap of feature-creep, building as much + functionality into your app as possible. Providing instant gratification by + immediately showing the most important or relevant information is crucial on + mobile devices. Providing too much information can be as frustrating (or even + more so) than not providing enough of it. +</p> + +<p> + Again, listen to your users by collecting and responding to feature requests. + Be careful, though, to take feature requests with a grain of salt. Requests + can be very useful in aggregate, to get a sense of what kinds of + functionality you should be working on, but not every feature request needs + to be implemented. +</p> + +<div class="headerLine"> + <h1 id="integrate"> + Integrate with the System and Third-Party apps + </h1> + + <hr> +</div> + +<p> + A great way to deliver a delightful user experience is to integrate tightly + with the operating system. Features like <a href= + "{@docRoot}guide/topics/appwidgets/index.html">Home screen widgets</a>, + <a href="{@docRoot}design/patterns/notifications.html">rich + notifications</a>, <a href="{@docRoot}guide/topics/search/index.html">global + search integration</a>, and <a href= + "{@docRoot}reference/android/widget/QuickContactBadge.html">Quick + Contacts</a> are fairly low-hanging fruit in this regard. +</p> + +<p> + For some app categories, basic features like home screen widgets are + expected. Not including them is a sure-fire way to tarnish an otherwise + positive user experience. Some apps can achieve even tighter OS integration + with Android's contacts, accounts, and sync APIs. +</p> + +<p> + Third-party integrations can provide even more user delight and give the user + a feeling of device cohesiveness. It's also a really nice way of adding + functionality to your app without writing any extra code (by leveraging other + apps' functionality). For example, if you're creating a camera app, you can + allow users to edit their photos in another app before saving them to their + collection, if they have that third-party application installed. More + information on this subject is available in the Android Training class + <a href="{@docRoot}training/basics/intents/index.html">Interacting with Other + Apps</a>. +</p> + +<div class="headerLine"> +<h1 id="related-resources">Related Resources</h1><hr> +</div> +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/optimizing, tag:addia" + data-sortOrder="-timestamp" + data-cardSizes="6x3" + data-maxResults="3"></div> +<div class="resource-widget resource-flow-layout col-13" + data-query="tag:adia" + data-sortOrder="-timestamp" + data-cardSizes="6x3" + data-maxResults="3"></div> + diff --git a/docs/html/distribute/essentials/quality/core.jd b/docs/html/distribute/essentials/quality/core.jd new file mode 100644 index 0000000..558b030 --- /dev/null +++ b/docs/html/distribute/essentials/quality/core.jd @@ -0,0 +1,1170 @@ +page.title=Core App Quality +page.metaDescription=App quality directly influences the long-term success of your app—in terms of installs, user rating and reviews, engagement, and user retention. +page.image=/distribute/images/core-quality-guidelines.jpg +@jd:body + +<div id="qv-wrapper"><div id="qv"> +<h2>Quality Criteria</h2> + <ol> + <li><a href="#ux">Design and Interaction</a></li> + <li><a href="#fn">Functionality</a></li> + <li><a href="#ps">Performance and Stability</a></li> + <li><a href="#listing">Google Play</a></li> + + </ol> + + <h2>Testing</h2> + <ol> + <li><a href="#test-environment">Setting Up a Test Environment</a></li> + <li><a href="#tests">Test Procedures</a></li> + </ol> + + <h2>You Should Also Read</h2> + <ol> + <li><a href="{@docRoot}distribute/essentials/quality/tablets.html">Tablet App Quality</a></li> + <li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">Optimize Your App</a></li> + </ol> + + +</div> +</div> + +<div class="top-right-float"> + <img src="{@docRoot}images/gp-core-quality.png" style="margin-left: 20px;"> +</div> + +<p> + Android users expect high-quality apps. App quality directly influences the + long-term success of your app—in terms of installs, user rating and reviews, + engagement, and user retention. +</p> + +<p> + 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. +</p> + +<p> + Before publishing your apps, test them against these criteria to ensure that + they function well on many devices, meets Android standards for navigation + and design, and are 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 quality characteristics all apps + should display, so that you can cover them in your test plans. +</p> + +<p> + If you're creating apps for tablets and or Google Play for Education there + are additional quality criteria you should consider, which are defined in the + <a href="{@docRoot}distribute/essentials/quality/tablets.html">Tablet App + Quality</a> guidelines and <a href= + "{@docRoot}distribute/essentials/gpfe-guidelines.html">Education + Guidelines</a>. +</p> + +<div class="headerLine clearfloat"> + <h1 id="ux"> + Visual Design and User Interaction + </h1> + + <hr> +</div> + +<p> + These criteria ensure that your app provides standard Android visual design + and interaction patterns where appropriate, for a consistent and intuitive + user experience. +</p> + +<table> + <tr> + <th style="width:2px;"> + Area + </th> + <th style="width:54px;"> + ID + </th> + + + <th> + Description + </th> + <th style="width:54px;"> + Tests + </th> + </tr> + <tr id="UX-B1"> + <td>Standard design</td> + <td> + UX-B1 + </td> + <td> + <p style="margin-bottom:.5em;"> + App follows <a href="{@docRoot}design/index.html">Android Design</a> + guidelines and uses common <a href= + "{@docRoot}design/patterns/index.html">UI patterns and icons</a>: + </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>App does not redefine the expected function of a system icon (such + as the Back button). + </li> + + <li>App does not replace a system icon with a completely different icon + if it triggers the standard UI behavior. + </li> + + <li>If the app provides a customized version of a standard system icon, + the icon strongly resembles the system icon and triggers the standard + system behavior. + </li> + + <li>App does not redefine or misuse Android UI patterns, such that + icons or behaviors could be misleading or confusing to users. + </li> + </ol> + </td> + <td> + <a href="#core">CR-all</a> + </td> + </tr> + + <tr> + <td rowspan="3"> + Navigation + </td> + <td id="UX-N1"> + UX-N1 + </td> + <td> + <p> + App supports standard system <a href= + "{@docRoot}design/patterns/navigation.html">Back button navigation</a> + and does not make use of any custom, on-screen "Back button" prompts. + </p> + </td> + <td> + <a href="#core">CR-3</a> + </td> + </tr> + + <tr> + <td id="UX-N2"> + UX-N2 + </td> + <td> + <p> + All dialogs are dismissable using the Back button. + </p> + </td> + <td> + <a href="#core">CR-3</a> + </td> + </tr> + + <tr id="UX-N3"> + <td> + UX-N3 + </td> + <td> + Pressing the Home button at any point navigates to the Home screen of the + device. + </td> + <td> + <a href="#core">CR-1</a> + </td> + </tr> + + <tr id="UX-S1"> + <td rowspan="2"> + Notifications + </td> + <td> + UX-S1 + </td> + <td> + <p style="margin-bottom:.5em;"> + Notifications follow Android Design <a href= + "{@docRoot}design/patterns/notifications.html">guidelines</a>. In + particular: + </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>Multiple notifications are stacked into a single notification + object, where possible. + </li> + + <li>Notifications are persistent only if related to ongoing events + (such as music playback or a phone call). + </li> + + <li>Notifications do not contain advertising or content unrelated to + the core function of the app, unless the user has opted in. + </li> + </ol> + </td> + <td> + <a href="#core">CR-11</a> + </td> + </tr> + + <tr id="UX-S2"> + <td> + UX-S2 + </td> + <td> + <p style="margin-bottom:.5em;"> + App uses notifications only to: + </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>Indicate a change in context relating to the user personally (such + as an incoming message), or + </li> + + <li>Expose information/controls relating to an ongoing event (such as + music playback or a phone call). + </li> + </ol> + </td> + <td> + <a href="#core">CR-11</a> + </td> + </tr> +</table> + +<h3> + Related Resources +</h3> + +<div class="resource-widget resource-flow-layout col-13" data-query= +"collection:distribute/essentials/corequalityguidelines/visualdesign" +data-sortorder="-timestamp" data-cardsizes="9x3,9x3,6x3,6x3,6x3" +data-maxresults="6"> +</div> + +<div class="headerLine clearfloat"> + <h1 id="fn"> + Functionality + </h1> + + <hr> +</div> + +<p> + These criteria ensure that your app provides expected functional behavior, + with the appropriate level of permissions. +</p> + +<table> + <tr> + <th style="width:2px;"> + Area + </th> + <th style="width:54px;"> + ID + </th> + <th> + Description + </th> + <th style="width:54px;"> + Tests + </th> + </tr> + + <tr id="FN-P1"> + <td rowspan="2"> + Permissions + </td> + <td> + FN-P1 + </td> + <td> + App requests only the <em>absolute minimum</em> permissions that it needs + to support core functionality. + </td> + <td rowspan="2"> + <a href="#core">CR-11</a> + </td> + </tr> + + <tr id="FN-P2"> + <td> + FN-P2 + </td> + <td> + <p style="margin-bottom:.5em;"> + 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. + </p> + </td> + </tr> + + <tr id="FN-L1"> + <td> + Install location + </td> + <td> + FN-L1 + </td> + <td> + <p style="margin-bottom:.5em;"> + App functions normally when installed on SD card (if supported by app). + </p> + + <p style="margin-bottom:.25em;"> + Supporting installation to SD card is recommended for most large apps + (10MB+). See the <a href= + "{@docRoot}guide/topics/data/install-location.html">App Install + Location</a> developer guide for information about which types of apps + should support installation to SD card. + </p> + </td> + <td> + <a href="#SD-1">SD-1</a> + </td> + </tr> + + <tr id="FN-A1"> + <td rowspan="4"> + Audio + </td> + <td> + FN-A1 + </td> + <td> + Audio does not play when the screen is off, unless this is a core feature + (for example, the app is a music player). + </td> + <td> + <a href="#core">CR-7</a> + </td> + </tr> + + <tr id="FN-A2"> + <td> + FN-A2 + </td> + <td> + Audio does not <a href= + "http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html"> + play behind the lock screen</a>, unless this is a core feature. + </td> + <td> + <a href="#core">CR-8</a> + </td> + </tr> + + <tr id="FN-A3"> + <td> + FN-A3 + </td> + <td> + Audio does not play on the home screen or over another app, unless this + is a core feature. + </td> + <td> + <a href="#core">CR-1,<br> + CR-2</a> + </td> + </tr> + + <tr id="FN-A4"> + <td> + FN-A4 + </td> + <td> + Audio resumes when the app returns to the foreground, or indicates to the + user that playback is in a paused state. + </td> + <td> + <a href="#core">CR-1, CR-8</a> + </td> + </tr> + + <tr id="FN-U1"> + <td rowspan="3"> + UI and Graphics + </td> + <td> + FN-U1 + </td> + <td> + <p style="margin-bottom:.5em;"> + App supports both landscape and portrait orientations (if possible). + </p> + + <p style="margin-bottom:.25em;"> + Orientations expose largely the same features and actions and preserve + functional parity. Minor changes in content or views are acceptable. + </p> + </td> + <td> + <a href="#core">CR-5</a> + </td> + </tr> + + <tr id="FN-U2"> + <td> + FN-U2 + </td> + <td> + <p style="margin-bottom:.5em;"> + App uses the whole screen in both orientations and does not letterbox + to account for orientation changes. + </p> + + <p style="margin-bottom:.25em;"> + Minor letterboxing to compensate for small variations in screen + geometry is acceptable. + </p> + </td> + <td> + <a href="#core">CR-5</a> + </td> + </tr> + + <tr id="FN-U3"> + <td> + FN-U3 + </td> + <td> + <p style="margin-bottom:.5em;"> + App correctly handles rapid transitions between display orientations + without rendering problems. + </p> + </td> + <td> + <a href="#core">CR-5</a> + </td> + </tr> + + <tr id="FN-S1"> + <td rowspan="2"> + User/app state + </td> + <td> + FN-S1 + </td> + <td> + <p style="margin-bottom:.5em;"> + App should not leave any services running when the app is in the + background, unless related to a core capability of the app. + </p> + + <p style="margin-bottom:.25em;"> + 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. + </p> + </td> + <td> + <a href="#core">CR-6</a> + </td> + </tr> + + <tr id="FN-S2"> + <td> + FN-S2 + </td> + <td> + <p style="margin-bottom:.5em;"> + App correctly preserves and restores user or app state. + </p> + + <p style="margin-bottom:.25em;"> + 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. + </p> + + <ol style="margin-bottom:.25em;list-style-type:lower-alpha"> + <li>When the app is resumed from the Recents app switcher, the app + returns the user to the exact state in which it was last used. + </li> + + <li>When the app is resumed after the device wakes from sleep (locked) + state, the app returns the user to the exact state in which it was last + used. + </li> + + <li>When the app is relaunched from Home or All Apps, the app restores + the app state as closely as possible to the previous state. + </li> + + <li>On Back keypresses, the app gives the user the option of saving any + app or user state that would otherwise be lost on back-navigation. + </li> + </ol> + </td> + <td> + <a href="#core">CR-1, CR-3, CR-5</a> + </td> + </tr> +</table> + +<h3> + Related Resources +</h3> + +<div class="resource-widget resource-flow-layout col-13" data-query= +"collection:distribute/essentials/corequalityguidelines/functionality" +data-sortorder="-timestamp" data-cardsizes="6x3" data-maxresults="6"> +</div> + +<div class="headerLine clearfloat"> + <h1 id="ps"> + Performance and Stability + </h1> + + <hr> +</div> + +<p> + These criteria ensure that apps provide the performance, stability, and + responsiveness expected by users. +</p> + +<table> + <tr> + <th style="width:2px;"> + Area + </th> + <th style="width:54px;"> + ID + </th> + <th> + Description + </th> + <th style="width:54px;"> + Tests + </th> + </tr> + + <tr id="PS-S1"> + <td> + Stability + </td> + <td> + PS-S1 + </td> + <td> + App does not crash, force close, freeze, or otherwise function abnormally + on any targeted device. + </td> + <td> + <a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href= + "#HA-1">HA-1</a> + </td> + </tr> + + <tr id="PS-P1"> + <td rowspan="2"> + Performance + </td> + <td> + PS-P1 + </td> + <td> + 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. + </td> + <td> + <a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a> + </td> + </tr> + + <tr id="PS-P2"> + <td> + PS-P2 + </td> + <td> + With StrictMode enabled (see <a href="#strictmode">StrictMode + Testing</a>, 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. + </td> + <td> + <a href="#PM-1">PM-1</a> + </td> + </tr> + + <tr id="PS-M1"> + <td> + Media + </td> + <td> + PS-M1 + </td> + <td> + Music and video playback is smooth, without crackle, stutter, or other + artifacts, during normal app usage and load. + </td> + <td> + <a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href= + "#HA-1">HA-1</a> + </td> + </tr> + + <tr id="PS-V1"> + <td rowspan="2"> + Visual quality + </td> + <td> + PS-V1 + </td> + <td> + <p style="margin-bottom:.5em;"> + App displays graphics, text, images, and other UI elements without + noticeable distortion, blurring, or pixelation. + </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>App provides high-quality graphics for all targeted screen sizes + and form factors, including for <a href= + "{@docRoot}distribute/essentials/quality/tablet.html">larger-screen + devices such as tablets</a>. + </li> + + <li>No aliasing at the edges of menus, buttons, and other UI elements + is visible. + </li> + </ol> + </td> + <td rowspan="2"> + <a href="#core">CR-all</a> + </td> + </tr> + + <tr id="PS-V2"> + <td> + PS-V2 + </td> + <td> + <p style="margin-bottom:.5em;"> + App displays text and text blocks in an acceptable manner. + </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>Composition is acceptable in all supported form factors, including + for larger-screen devices such as tablets. + </li> + + <li>No cut-off letters or words are visible. + </li> + + <li>No improper word wraps within buttons or icons are visible. + </li> + + <li>Sufficient spacing between text and surrounding elements. + </li> + </ol> + </td> + </tr> +</table> + +<h3> + Related Resources +</h3> + +<div class="resource-widget resource-flow-layout col-13" data-query= +"collection:distribute/essentials/core/performance" data-sortorder="-timestamp" +data-cardsizes="6x3" data-maxresults="6"> +</div> + +<div class="headerLine clearfloat"> + <h1 id="listing"> + Google Play + </h1> + + <hr> +</div> + +<p> + These criteria ensure that your apps are ready to publish on Google Play. +</p> + +<table> + <tr> + <th style="width:2px;"> + Area + </th> + <th style="width:54px;"> + ID + </th> + <th> + Description + </th> + <th style="width:54px;"> + Tests + </th> + </tr> + + <tr id="GP-P1"> + <td rowspan="2"> + Policies + </td> + <td> + GP-P1 + </td> + <td> + App strictly adheres to the terms of the <a href= + "http://play.google.com/about/developer-content-policy.html">Google Play + Developer Content Policy</a> and does not offer inappropriate content, + does not use intellectual property or brand of others, and so on. + </td> + <td> + <a href="#gp">GP-all</a> + </td> + </tr> + + <tr id="GP-P2"> + <td> + GP-P2 + </td> + <td> + <p style="margin-bottom:.5em;"> + App maturity level is set appropriately, based on the <a href= + "http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=188189"> + Content Rating Guidelines</a>. + </p> + + <p style="margin-bottom:.25em;"> + Especially, note that apps that request permission to use the device + location cannot be given the maturity level "Everyone". + </p> + </td> + <td> + <a href="#gp">GP-1</a> + </td> + </tr> + + <tr id="GP-D1"> + <td rowspan="3"> + App Details Page + </td> + <td> + GP-D1 + </td> + <td> + <p style="margin-bottom:.5em;"> + App feature graphic follows the guidelines outlined in this <a href= + "http://android-developers.blogspot.com/2011/10/android-market-featured-image.html"> + blog post</a>. Make sure that: + </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>The app listing includes a high-quality feature graphic. + </li> + + <li>The feature graphic does not contain device images, screenshots, or + small text that will be illegible when scaled down and displayed on the + smallest screen size that your app is targeting. + </li> + + <li>The feature graphic does not resemble an advertisement. + </li> + </ol> + </td> + <td> + <a href="#gp">GP-1, GP-2</a> + </td> + </tr> + + <tr id="GP-D2"> + <td> + GP-D2 + </td> + <td> + App screenshots and videos do not show or reference non-Android devices. + </td> + <td rowspan="2"> + <a href="#gp">GP-1</a> + </td> + </tr> + + <tr id="GP-D3"> + <td> + GP-D3 + </td> + <td> + App screenshots or videos do not represent the content and experience of + your app in a misleading way. + </td> + </tr> + + <tr id="GP-X1"> + <td> + User Support + </td> + <td> + GP-X1 + </td> + <td> + 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. + </td> + <td> + <a href="#gp">GP-1</a> + </td> + </tr> +</table> + +<h3> + Related Resources +</h3> + +<div class="resource-widget resource-flow-layout col-13" data-query= +"collection:distribute/essentials/core/play" data-sortorder="-timestamp" +data-cardsizes="6x3,6x3,6x3,6x3,6x3,6x3" data-maxresults="6"> +</div> + +<div class="headerLine clearfloat"> + <h1 id="test-environment"> + Setting Up a Test Environment + </h1> + + <hr> +</div> + +<p> + To assess the quality of your app, you need to set up a suitable hardware or + emulator environment for testing. +</p> + +<p> + 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 + <em>every</em> 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. +</p> + +<p> + If you are not able to obtain actual hardware devices for testing, you should + <a href="{@docRoot}tools/devices/index.html">set up emulated devices + (AVDs)</a> to represent the most common form factors and hardware/software + combinations. +</p> + +<p> + 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. +</p> + +<div class="headerLine clearfloat"> + <h1 id="tests"> + Test Procedures + </h1> + + <hr> +</div> + +<p> + 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. +</p> + +<table> + <tr> + <th style="width:2px;"> + Type + </th> + <th style="width:54px;"> + Test + </th> + <th> + Description + </th> + </tr> + + <tr> + <td rowspan="12" id="core"> + Core Suite + </td> + <td> + CR-0 + </td> + <td> + <p style="margin-bottom:.5em;"> + Navigate to all parts of the app — all screens, dialogs, + settings, and all user flows. + </p> + + <ol style="margin-bottom:.5em;list-style-type:lower-alpha"> + <li>If the application allows for editing or content creation, game + play, or media playback, make sure to enter those flows to create or + modify content. + </li> + + <li>While exercising the app, introduce transient changes in network + connectivity, battery function, GPS or location availability, system + load, and so on. + </li> + </ol> + </td> + </tr> + + <tr id="tg2"> + <td id="core2"> + CR-1 + </td> + <td> + From each app screen, press the device's Home key, then re-launch the app + from the All Apps screen. + </td> + </tr> + + <tr id="CR-2"> + <td> + CR-2 + </td> + <td> + From each app screen, switch to another running app and then return to + the app under test using the Recents app switcher. + </td> + </tr> + + <tr id="CR-3"> + <td> + CR-3 + </td> + <td> + From each app screen (and dialogs), press the Back button. + </td> + </tr> + + <tr id="CR-5"> + <td> + CR-5 + </td> + <td> + From each app screen, rotate the device between landscape and portrait + orientation at least three times. + </td> + </tr> + + <tr id="CR-6"> + <td> + CR-6 + </td> + <td> + 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. + </td> + </tr> + + <tr id="CR-7"> + <td> + CR-7 + </td> + <td> + Press the power button to put the device to sleep, then press the power + button again to awaken the screen. + </td> + </tr> + + <tr id="CR-8"> + <td> + CR-8 + </td> + <td> + 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. + </td> + </tr> + + <tr id="CR-9"> + <!-- Hardware features --> + + <td> + CR-9 + </td> + <td> + 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. + </td> + </tr> + + <tr id="CR-10"> + <td> + CR-10 + </td> + <td> + For devices that have an external display port, plug-in the external + display. + </td> + </tr> + + <tr id="CR-11"> + <td> + CR-11 + </td> + <td> + Trigger and observe in the notications drawer all types of notifications + that the app can display. Expand notifications where applicable (Android + 4.1 and higher), and tap all actions offered. + </td> + </tr> + + <tr id="CR-12"> + <td> + CR-12 + </td> + <td> + Examine the permissions requested by the app by going to Settings > + App Info. + </td> + </tr> + + <tr id="tg3"> + <td> + Install on SD Card + </td> + <td> + SD-1 + </td> + <td> + <p style="margin-bottom:.5em;"> + Repeat <em>Core Suite</em> with app installed to <a href= + "{@docRoot}guide/topics/data/install-location.html">device SD card</a> + (if supported by app). + </p> + + <p style="margin-bottom:.25em;"> + To move the app to SD card, you can use Settings > App Info > + Move to SD Card. + </p> + </td> + </tr> + + <tr id="tg32"> + <td> + Hardware acceleration + </td> + <td> + HA-1 + </td> + <td> + <p style="margin-bottom:.5em;"> + Repeat <em>Core Suite</em> with hardware acceleration enabled. + </p> + + <p style="margin-bottom:.25em;"> + To force-enable hardware acceleration (where supported by device), add + <code>hardware-accelerated="true"</code> to the + <code><application></code> in the app manifest and recompile. + </p> + </td> + </tr> + + <tr id="tg33"> + <td> + Performance Monitoring + </td> + <td> + PM-1 + </td> + <td> + <p style="margin-bottom:.5em;"> + Repeat <em>Core Suite</em> with StrictMode profiling enabled <a href= + "#strictmode">as described below</a>. + </p> + + <p style="margin-bottom:.25em;"> + Pay close attention to garbage collection and its impact on the user + experience. + </p> + </td> + </tr> + + <tr id="gp"> + <td rowspan="3"> + Google Play + </td> + <td> + GP-1 + </td> + <td> + Sign into the <a href="https://play.google.com/apps/publish/">Developer + Console</a> to review your developer profile, app description, + screenshots, feature graphic, maturity settings, and user feedback. + </td> + </tr> + + <tr id="GP-2"> + <td> + GP-2 + </td> + <td> + Download your feature graphic and screenshots and scale them down to + match the display sizes on the devices and form factors you are + targeting. + </td> + </tr> + + <tr id="GP-3"> + <td> + GP-3 + </td> + <td> + Review all graphical assets, media, text, code libraries, and other + content packaged in the app or expansion file download. + </td> + </tr> + + <tr id="GP-4"> + <td> + Payments + </td> + <td> + GP-4 + </td> + <td> + Navigate to all screens of your app and enter all in-app purchase flows. + </td> + </tr> +</table> + +<h3 id="strictmode"> + Testing with StrictMode +</h3> + +<p> + For performance testing, we recommend enabling {@link android.os.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. +</p> + +<p> + You can set up a monitoring policy per thread using {@link + android.os.StrictMode.ThreadPolicy.Builder} and enable all supported + monitoring in the <code>ThreadPolicy</code> using {@link + android.os.StrictMode.ThreadPolicy.Builder#detectAll()}. +</p> + +<p> + Make sure to enable <strong>visual notification</strong> of policy violations + for the <code>ThreadPolicy</code> using {@link + android.os.StrictMode.ThreadPolicy.Builder#penaltyFlashScreen() + penaltyFlashScreen()}. +</p> diff --git a/docs/html/distribute/essentials/quality/tablets.jd b/docs/html/distribute/essentials/quality/tablets.jd new file mode 100644 index 0000000..7dfab48 --- /dev/null +++ b/docs/html/distribute/essentials/quality/tablets.jd @@ -0,0 +1,867 @@ +page.title=Tablet App Quality +page.metaDescription=Tablets are a fast-growing part of the Android installed base that offers new opportunities for your apps. +page.image=/distribute/images/tablet-guidelines-color.jpg +Xnonavpage=true + +@jd:body +<div id="qv-wrapper"><div id="qv"> +<h2>Checklist</h2> +<ol> +<li><a href="#core-app-quality">1. Test for Basic Tablet App Quality</a></li> +<li><a href="#optimize-layouts">2. Optimize Layouts</a></li> +<li><a href="#use-extra-space">3. Use Extra Screen Area</a></li> +<li><a href="#use-tablet-icons">4. Use Assets Designed for Tablets</a></li> +<li><a href="#adjust-font-sizes">5. Adjust Fonts and Touch Targets</a></li> +<li><a href="#adjust-widgets">6. Adjust Homescreen Widgets</a></li> +<li><a href="#offer-full-feature-set">7. Offer Full Feature Set</a></li> +<li><a href="#android-versions">8. Target Android Versions Properly</a></li> +<li><a href="#hardware-requirements">9. Declare Dependencies Properly</a></li> +<li><a href="#support-screens">10. Declare Support for Tablet Screens</a></li> +<li><a href="#google-play">11. Showcase Your Tablet UI</a></li> +<li><a href="#google-play-best-practices">12. Follow Best Practices for Publishing in Google Play</a></li> + +</ol> +<h2>Testing</h2> +<ol> +<li><a href="#test-environment">Setting Up a Test Environment</a></li> +</ol> +</div></div> + +<div class="todp-right-float" style="padding-right:0;margin-bottom:1em;"> + <img src="{@docRoot}distribute/images/tablet-guidelines-color.jpg" style="width:480px;"> +</div> + +<p> + Tablets are a growing part of the Android installed base and offer new + opportunities for <a href="{@docRoot}distribute/stories/tablets.html">user + engagement and monetization</a>. The guidelines in this document will help + you meet the expectations of tablet users through compelling features and an + intuitive, well-designed UI. +</p> + +<p> + Although the guidelines are numbered, you can approach them in any order. You + should address each guideline’s recommendations to the extent that they’re + appropriate for your app, but — in the interest of delivering the best + product to your customers — follow them to the greatest extent + possible. +</p> + +<p> + Through the document you'll find links to resources that can + help you address each recommendation included. +</p> + +<div class="headerLine"><h1 id="core-app-quality">1. Test for Basic Tablet App Quality</h1><hr></div> + +<p>The first step in delivering a great tablet app experience is making sure +that it meets the <em>core app quality criteria</em> for all of the devices +and form factors that the app is targeting. For complete information, see the <a +href="{@docRoot}distribute/essentials/quality/core.html">Core App Quality Guidelines</a>. +</p> + +<p> +Before publishing, also ensure that your app passes the basic technical checks and launch criteria, such as: +</p> + +<ul> + <li><a href="#android-versions">Targets appropriate Android versions</a></li> + <li><a href="#hardware-requirements">Specifies any hardware dependencies properly</a></li> + <li><a href="#support-screens">Declares support for appropriate screens</a></li> + <li><a href="#use-extra-space">Uses all of the available screen space</a></li> + <li><a href="#google-play">Screenshots are uploaded to Google Play</a></li> +</ul> + +<p>If your app is already uploaded to the Google Play Developer Console, you + can see how it is doing against these checks + by visiting the <a href="#google-play-optimization-tips">Optimization + Tips page</a>.</p> + + +<div class="headerLine clearfloat"> +<h1 id="optimize-layouts">2. Optimize Layouts for Larger Screens</h1><hr></div> + +<p> + 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. +</p> + +<p> + 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. +</p> + + +<div style="width:500px;margin:1.5em;margin-top:-16px;"> +<img src="{@docRoot}images/training/app-navigation-multiple-sizes-multipane-bad.png" +style="padding:4px;margin-bottom:0em;"> +<p class="img-caption"><span +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> +</div> + +<p>Here are some suggestions:</p> + + +<ul> + <li>Provide custom layouts as needed for <code>large</code> and + <code>xlarge</code> screens. You can also provide layouts that are loaded + based on the screen's <a href= + "{@docRoot}guide/practices/screens_support.html#NewQualifiers">shortest + dimension</a> or the <a href= + "{@docRoot}guide/practices/screens_support.html#NewQualifiers">minimum + available width and height</a>. + </li> + + <li>At a minimum, customize dimensions such as font sizes, margins, spacing + for larger screens, to improve use of space and content legibility. + </li> + + <li>Adjust positioning of UI controls so that they are easily accessible to + users when holding a tablet, such as toward the sides when in landscape + orientation. + </li> + + <li>Padding of UI elements should normally be larger on tablets than on + handsets. A <a href="{@docRoot}design/style/metrics-grids.html#48dp-rhythm"> + 48dp rhythm</a> (and a 16dp grid) is recommended. + </li> + + <li>Adequately pad text content so that it is not aligned directly along + screen edges. Use a minimum <code>16dp</code> padding around content near + screen edges. + </li> +</ul> + +<p>In particular, make sure that your layouts do not appear "stretched" +across the screen:</p> + +<ul> +<li>Lines of text should not be excessively long — optimize for a maximum +100 characters per line, with best results between 50 and 75.</li> +<li>ListViews and menus should not use the full screen width.</li> +<li>Use padding to manage the widths of onscreen elements or switch to a +multi-pane UI for tablets (see next section).</li> +</ul> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/optimize" + data-sortOrder="-timestamp" + data-cardSizes="6x3" + data-maxResults="6"></div> + + +<div class="headerLine clearfloat"><h1 id="use-extra-space">3. Take Advantage of Extra Screen Area</h1><hr></div> + +<div style="width:340px;float:right;margin:1.5em;margin-bottom:0;margin-top:0;"> +<img src="{@docRoot}images/training/app-navigation-multiple-sizes-multipane-good.png" +style="padding:4px;margin-bottom:0em;"> +<p class="img-caption"><span +style="font-weight:500;">Multi-pane layouts</span> result in a better visual +balance on tablet screens, while offering more utility and legibility.</p> +</div> + +<p>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. </p> + +<p>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:</p> + +<ul> +<li>Look for opportunities to include additional content or use an alternative +treatment of existing content.</li> +<li>Use <a href="{@docRoot}design/patterns/multi-pane-layouts.html">multi-pane +layouts</a> on tablet screens to combine single views into a compound view. This +lets you use the additional screen area more efficiently and makes it easier for +users to navigate your app. </li> +<li>Plan how you want the panels of your compound views to reorganize when +screen orientation changes.</li> + +<div style="width:490px;margin:1.5em auto 1.5em 0;"> +<div style=""> +<img src="{@docRoot}images/ui-ex-single-panes.png" +style="width:490px;padding:4px;margin-bottom:0em;" align="middle"> +<img src="{@docRoot}images/ui-ex-multi-pane.png" style="width:490px;padding:4px;margin-bottom:0em;"> +<p class="image-caption" style="padding:.5em"><span +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> +</div> +</div> + +<li>While a single screen is implemented as an {@link android.app.Activity} +subclass, consider implementing individual content panels as {@link +android.app.Fragment} subclasses. This lets you +maximize code reuse across different form factors and across screens that +share content.</li> +<li>Decide on which screen sizes you'll use a multi-pane UI, then provide the +different layouts in the appropriate screen size buckets (such as +<code>large</code>/<code>xlarge</code>) or minimum screen widths (such as +<code>sw600dp</code>/<code>sw720</code>).</li> +</ul> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/extrascreen" + data-sortOrder="-timestamp" + data-cardSizes="6x3,6x3,6x3" + data-maxResults="6"></div> + +<div class="headerLine clearfloat"><h1 id="use-tablet-icons">4. Use Assets Designed for Tablet Screens</h1><hr></div> + +<div><img src="{@docRoot}design/media/devices_displays_density@2x.png"></div> + +<p>To ensure your app looks its best, provide icons and other bitmap +assets for each density in the range commonly supported by tablets. Specifically, you should +design your icons for the action bar, notifications, and launcher according to the +<a href="{@docRoot}design/style/iconography.html">Iconography</a> guidelines and +provide them in multiple densities, so they appear at the appropriate size on all screens +without blurring or other scaling artifacts.</p> + +<p class="table-caption"><strong>Table 1</strong>. Raw asset sizes for icon types.<table> +<tr> +<th>Density</th> +<th>Launcher</th> +<th>Action Bar</th> +<th>Small/Contextual</th> +<th>Notification</th> +</tr> +<tr> +<td><code>mdpi</code></td> +<td>48x48 px</td> +<td>32x32 px</td> +<td>16x16 px</td> +<td>24x24 px</td> +</tr> +<tr> +<td><code>hdpi</code></td> +<td>72x72 px</td> +<td>48x48 px</td> +<td>24x24 px</td> +<td>36x36 px</td> +</tr> +<tr> +<td><code>tvdpi</code></td> +<td><em>(use hdpi)</em></td> +<td><em>(use hdpi)</em></td> +<td><em>(use hdpi)</em></td> +<td><em>(use hdpi)</em></td> +</tr> +<tr> +<td><code>xhdpi</code></td> +<td>96x96 px</td> +<td>64x64 px</td> +<td>32x32 px</td> +<td>48x48 px</td> +</tr> +<tr> +<td><code>xxhdpi</code></td> +<td>144x144 px</td> +<td>96x96 px</td> +<td>48x48 px</td> +<td>72x72 px</td> +</tr> + +</table> + +<p> + As a minimum, supply a version of each icon and bitmap asset that's optimized + for <strong>at least one</strong> the following common tablet screen + densities: +</p> +<ul> + <li><code>hdpi</code></li> + <li><code>xhdpi</code></li> + <li><code>xxhdpi</code></li> +</ul> + +<p>Other tips:</p> + +<ul> +<li>Use vector shapes when designing icons, so they scale without loss of either detail or edge crispness.</li> +<li>Use density-specific <a +href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"> +resource qualifiers</a> to ensure that the proper icons are loaded for each screen density.</li> +<li>Tablets and other large screen devices often request a launcher icon that is one density +size larger than the device's actual density, so you should provide your launcher +icon at the highest density possible. For example, if a tablet has an {@code xhdpi} screen, +it will request the {@code xxhdpi} version of the launcher icon.</li> +</ul> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/assets" + data-sortOrder="-timestamp" + data-cardSizes="9x3" + data-maxResults="6"></div> + +<div class="headerLine clearfloat"><h1 id="adjust-font-sizes">5. +Adjust Font Sizes and Touch Targets</h1><hr></div> + +<p>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 <a +href="{@docRoot}guide/topics/ui/themes.html">styleable attributes</a> or <a +href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">dimension +resources</a>, and you can adjust touch targets through layouts and bitmap +drawables, as discussed above. </p> + +<p>Here are some considerations:</p> +<ul> +<li>Text should not be excessively large or small on tablet screen sizes and +densities. Make sure that labels are sized appropriately for the UI elements they +correspond to, and ensure that there are no improper line breaks in labels, +titles, and other elements.</li> +<li>The recommended touch-target size for onscreen elements is 48dp (32dp +minimum) — some adjustments may be needed in your tablet UI. Read <a +href="{@docRoot}design/style/metrics-grids.html">Metrics and +Grids +</a> to learn about implementation strategies to help most of your users. To +meet the accessibility needs of certain users, it may be appropriate to use +larger touch targets. </li> +<li>When possible, for smaller icons, expand the touchable area to more than +48dp using {@link android.view.TouchDelegate} +or just centering the icon within the transparent button.</li> +</ul> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/fonts" + data-sortOrder="-timestamp" + data-cardSizes="9x3,9x3,6x3,6x3,6x3" + data-maxResults="6"></div> + +<div class="headerLine clearfloat"><h1 id="adjust-widgets">6. Adjust Sizes of Home Screen Widgets</h1><hr></div> + +<p>If your app includes a home screen widget, here are a few points to consider +to ensure a great user experience on tablet screens: </p> + +<ul> +<li>Set the widget's default height and width appropriately +for tablet screens, as well as the minimum and maximum resize height and width. +</li> +<li>The widget should be resizable to 420dp or more, to span 5 or more home +screen rows (if this is a vertical or square widget) or columns (if this is a +horizontal or square widget). </li> +<li>Make sure that 9-patch images render correctly.</li> +<li>Use default system margins.</li> +<li>Set the app's <code>targetSdkVersion</code> to 14 or higher, if +possible.</li> +</ul> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/widgets" + data-sortOrder="-timestamp" + data-cardSizes="6x3" + data-maxResults="6"></div> + + +<div class="headerLine clearfloat"><h1 id="offer-full-feature-set">7. Full Feature Set for Tablet Users</h1><hr></div> + +<div class="centered-full-image" style="width:600px;margin:1.5em"><img src="{@docRoot}images/gp-tablets-full-feature-set.png" alt="Tablet feature sets"></div> + +<p>Let your tablet users experience the best features of your app. Here are +some recommendations:</p> + +<ul> + <li>Design your app to offer at least the same set of features on tablets as + it does on phones. + </li> + + <li>In exceptional cases, your app might omit or replace certain features on + tablets if they are not supported by the hardware or use-case of most + tablets. For example: + <ul> + <li>If the handset uses telephony features but telephony is not available + on the current tablet, you can omit or replace the related functionality. + </li> + + <li>Many tablets have a GPS sensor, but most users would not normally + carry their tablets while running. If your phone app provides + functionality to let the user record a GPS track of their runs while + carrying their phones, the app would not need to provide that + functionality on tablets because the use-case is not compelling. + </li> + </ul> + </li> + + <li>If you will omit a feature or capability from your tablet UI, make sure + that it is not accessible to users or that it offers “graceful degradation” + to a replacement feature (also see the section below on hardware features). + </li> +</ul> + +<div class="headerLine clearfloat"><h1 id="android-versions">8. Target Android Versions Properly</h1><hr></div> + +<p> + To ensure the broadest possible distribution to tablets, make sure that your + app properly targets the Android versions that support tablets. Initial + support for tablets was added in <a href= + "{@docRoot}about/versions/android-3.0.html">Android 3.0</a> (API level 11). + Unified UI framework support for tablets, phones, and other devices was + introduced in <a href="{@docRoot}about/versions/android-4.0.html">Android + 4.0</a> +</p> + +<p> + You can set the app's range of targeted Android versions in the manifest + file, in the <a href= + "{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a> + element. In most cases, you can target Android versions properly by setting + the element's <code>targetSdkVersion</code> attribute to the highest API + level available. +</p> + +<p style="margin-bottom:.5em;"> + At a minimum, check the <a href= + "{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a> + element to make sure that: +</p> + +<ol style="list-style-type:lower-alpha;margin-top:0em;"> + <li> + <code>targetSdkVersion</code> is declared with value 11 or higher (14 or + higher is recommended), OR + </li> + + <li> + <code>minSdkVersion</code> is declared with value 11 or higher. + </li> + + <li>If a <code>maxSdkVersion</code> attribute is declared, it must have a + value of 11 or higher. Note that, in general, the use of + <code>maxSdkVersion</code> is <em>not recommended</em>. + </li> +</ol> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/versions" + data-sortOrder="-timestamp" + data-cardSizes="6x3" + data-maxResults="6"></div> + +<div class="headerLine clearfloat"><h1 id="hardware-requirements">9. Declare Hardware Feature Dependencies Properly</h1><hr></div> + +<p> + 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. +</p> + +<p> + So that you can distribute a single APK broadly across your full customer + base of phones and tablets, make sure that your app doesn't declare + requirements for hardware features that aren't commonly available on tablets. + Instead, properly declare the hardware features as <em>not required</em> in the app + manifest, as described below. +</p> + +<ul> +<li>In your app manifest, locate any <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a> +elements. In particular, look for hardware features that might not be +available on some tablets, such as: + +<ul> +<li><code>android.hardware.telephony</code></li> +<li><code>android.hardware.camera</code> (refers to back camera), or</li> +<li><code>android.hardware.camera.front</code></li> +</ul></li> + +<li>Declare the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a> +elements as <em>not required</em> by including the <code>android:required=”false”</code> +attribute. + +<p> + For example, here's the proper way to declare a dependency on + <code>android.hardware.telephony</code>, such that you can still + distribute the app broadly, even to devices that don't offer telephony: +</p> + +<pre><uses-feature android:name="android.hardware.telephony" android:required="false" /></pre></li> + +<li>Similarly, check the manifest for <a href="{@docRoot}guide/topics/manifest/permission-element.html"><code><permission></code></a> elements that +<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">imply hardware +feature requirements</a> that not be appropriate for tablets. If you find such +permissions, make sure to explicitly declare a corresponding +<code><uses-feature></code> element for the features and includes the +<code>android:required=”false”</code> attribute.</li> +</ul> + + +<p> + After declaring hardware features as <em>not required</em>, make sure to test + your app on a variety of devices. The app should function normally when the + hardware features it uses are not available, and it should offer "graceful + degradation" and alternative functionality where appropriate. +</p> + +<p> + For example, if an app normally uses GPS to set the location but GPS is not + supported on the device, the app could let the user set the location manually + instead. The app can check for device hardware capabilities at runtime and handle + as needed. +</p> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/hardware" + data-sortOrder="-timestamp" + data-cardSizes="9x3" + data-maxResults="6"></div> + +<div class="headerLine clearfloat"><h1 id="support-screens">10. Declare Support for Tablet Screens</h1><hr></div> + +<p>To ensure that you can distribute your app to a broad range of tablets, your app should +declare support for tablet screen sizes in its manifest file, as follows:</p> + +<ul> + <li>A + <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code><supports-screens></code></a> + element, if declared, must not specify <code>android:largeScreens="false"</code> + or <code>android:xlargeScreens="false"</code>.</li> + <li>For apps targeting <code>minSdkVersion</code> value less than 13, a + <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code><supports-screens></code></a> + element must be declared with both <code>android:largeScreens="true"</code> and + <code>android:xlargeScreens="true"</code>.</li> +</ul> + +<p>If the app declares a +<a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code><compatible-screens></code></a> +element in the manifest, the element should include attributes that specify +<em>all of the size and density combinations for tablet screens</em> that the +app supports. Note that, if possible, you should avoid using the +<a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code><compatible-screens></code></a> +element in your app.</p> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/tabletscreens" + data-sortOrder="-timestamp" + data-cardSizes="9x3,6x3,6x3" + data-maxResults="6"></div> + + +<div class="headerLine clearfloat"><h1 id="google-play">11. Showcase Your Tablet UI in Google Play</h1><hr></div> + +<p> + After you've done the work to create an rich, optimized UI for your tablet + app, make sure that you let your customers know about it! Here are some key + ways to promote your tablet app to users on Google Play. +</p> + +<div><img class="border-img" src="{@docRoot}images/gp-tablet-quality-4.jpg"></div> + + +<h4> + Upload screenshots of your tablet UI +</h4> + +<p> + Tablet users want to know what your app is like on a tablet device, not on a + phone. If you developed a tablet app, make sure to upload screenshots + of your tablet UI to the Google Play Developer Console. Here are some guidelines: + </p> + +<ul style="margin-top:0;"> + <li>Show the core functionality of your app, not a + startup or sign-in page. Wherever users will spend most of their time, that's + what you should show in your screenshots. + </li> + + <li>Add screenshots taken on both 7-inch and 10-inch tablets. + </li> + + <li>Add screenshots taken in both landscape and + portrait orientations, if possible. + </li> + + <li>Use screen captures if possible. Avoid showing actual device hardware in your + screenshots.</li> + + <li>The recommended resolution of your tablet screenshots is <strong>1280 x 720</strong> + or higher in each orientation. + </li> + + <li>Upload as many as 8 screenshots of your tablet UI for 7-inch tablets + and an additional 8 for 10-inch tablets. + </li> +</ul> + +<h4> + Update your app description and release notes +</h4> + +<ul> + <li>In your app description, make sure to highlight that your app offers + tablet-optimized UI and great features for tablet users. Add some + detail about how your tablet UI works and why users will like it. + </li> + + <li>Include information about tablet support in the app's release notes and + update information. + </li> +</ul> + +<h4> + Update your promotional video +</h4> + +<p> + Many users view an app's promotional video to get an idea of what the app is + like and whether they'll enjoy it. For tablet users, capitalize on this + interest by highlighting your app's tablet UI in your promotional video. Here + are some tips and guidelines: +</p> + +<ul> + <li>Add one or more shots of your app running on a tablet. To engage with + tablet users most effectively, it's recommended that you promote your tablet + UI in approximately equal proportion to your phone UI. + </li> + + <li>Show your tablet UI as early as possible in the video. Don't assume that + tablet users will wait patiently through a feature walkthrough on a phone UI. + Ideally, you should engage them immediately by showing the tablet UI within + the first 10 seconds, or at the same point that you introduce the phone UI. + </li> + + <li>To make it clear that you are showing a tablet UI, include shots of your + app running on a hand-held tablet device. + </li> + + <li>Highlight your app's tablet UI in the video's narrative or voiceover. + </li> +</ul> + +<h4> + Feature your tablet UI in your promotional campaigns +</h4> + +<p> + Make sure to let tablet users know about your tablet UI in your promotional + campaigns, web site, social posts, advertisements, and elsewhere. Here are + some suggestions: +</p> + +<ul> + <li>Plan a marketing or advertising campaign that highlights the use of your + app on tablets.</li> + + <li>Show your tablet app at its best in your promotional campaigns—use the <a href= + "{@docRoot}distribute/tools/promote/device-art.html">Device Art Generator</a> to + quickly generate a high-quality promotional image of your app running on a + 7-inch or 10-inch tablet, in the orientation of your choice, with or without + drop-shadow and screen glare. It's as simple as capture, drag, and drop. + </li> + + <li>Include a Google Play badge in your online promotions to let users link + directly to your app's store listing. You can generate a badge in a variety + of languages using the <a href= + "{@docRoot}distribute/tools/promote/badges.html">Badge Generator</a>. + </li> +</ul> + +<h3>Related resources</h3> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/showcase" + data-sortOrder="-timestamp" + data-cardSizes="9x3,9x3,9x3,9x3" + data-maxResults="6"></div> + +<div class="headerLine clearfloat"> + <h1 id="google-play-best-practices"> + 12. Follow Best Practices for Publishing in Google Play + </h1> + + <hr> +</div> + +<p> + Here are some best practices for delivering a successful tablet app on Google + Play. +</p> + +<div> + <img class="border-img" src="{@docRoot}images/gp-tablet-quality-5.jpg" style= + "1px solid #ddd"> +</div> + +<h4 id="google-play-optimization-tips"> + Check out your app's Optimization Tips +</h4> + +<p>The Google Play Developer Console now offers an Optimization Tips page that +lets you quickly check how your app is doing against basic guidelines for tablet app +distribution and quality. To visit the page, sign into the Developer Console, +load the app from All Applications, and click Optimization Tips in +the left navigation.</p> + +<div class="sidebox-wrapper"> +<div class="sidebox"> +<h2>How to send feedback</h2> + +<p>Please use the link below to send +feedback or request a manual review of your Optimization Tips.</p> + +<p>Make sure to read the relevant sections of the Tablet App Quality +Guidelines prior to sending feedback.</p> + +<p><strong><a href="https://support.google.com/googleplay/android-developer/contact/tabletq" +target="_googleplay" style="white-space:nowrap">Designed for Tablets Contact Form »</a></strong></p> +</div> +</div> + +<p>The Developer Console creates your app's Optimization Tips page +by running a series of checks to verify basic quality +criteria. If it finds any issues, it alerts you to them as "To Do" +items in the Optimization Tips page.</p> + +<p>If you've developed a tablet experience for your app, make sure +to visit the Optimization Tips page to see how your app is doing +against the basic checks. If there are any issues listed, we +recommend addressing them in your app and uploading a new binary for +distribution, if needed. </p> + +<p>If the Optimization Tips page lists "To Do" issues that you feel don't +apply to your app or affect its quality on tablets, please notify us +using the <a href="https://support.google.com/googleplay/android-developer/contact/tabletq" +target="_googleplay" style="white-space:nowrap">Designed for Tablets Contact Form »</a>. We +will review your app and update your Optimization Tips page as +appropriate.</p> + + +<h4>Confirm the app's filtering</h4> + +<p> + After you've uploaded the app to the <a href= + "https://play.google.com/apps/publish/">Developer Console</a>, check the + APK's Supported Devices list to make sure that the app is not filtered from + tablet devices that you want to target. +</p> + +<h4>Distribute as a single APK</h4> + +<p> + It's recommended that you publish your app as a single APK for all screen + sizes (phones and tablets), with a single Google Play listing. This approach + has several important advantages. +</p> + +<ul style="margin-top:.25em;"> + <li>Easier for users to find your app from search, browsing, or promotions + </li> + + <li>Easier for users to restore your app automatically if they get a new + device. + </li> + + <li>Your ratings and download stats are consolidated across all devices. + </li> + + <li>Publishing a tablet app in a second listing can dilute ratings for your + brand. + </li> +</ul> + +<p> + If necessary, you can alternatively choose to deliver your app using <a href= + "{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support</a>, + although in most cases using a single APK to reach all devices is strongly + recommended. +</p> + +<h3 class="clearfloat">Related resources</h3> +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines/googleplay" + data-sortOrder="-timestamp" + data-cardSizes="9x3" + data-maxResults="6"></div> + + +<div class="headerLine clearfloat"> + <h1 id="test-environment"> + Setting Up a Test Environment for Tablets + </h1> + + <hr> +</div> + +<p> + Assess the quality of your app on tablets — both for core app quality and + tablet app quality — with a suitable hardware or emulator environment + for testing. +</p> + +<p> + Compared to the <a href= + "{@docRoot}distribute/essentials/quality/core.html#test-environment">recommended + test environment</a> for testing against the core app quality criteria, + include mid-size tablets and tablets with more or fewer hardware/software + features. +</p> + +<p class="table-caption"><strong>Table 1</strong>. A typical tablet test environment might +include one or two devices from each row in the table below, with one of the +listed platform versions, screen configurations, and hardware feature configurations.</p> + +<table> +<tr> +<th>Type</th> +<th>Size</th> +<th>Density</th> +<th>Version</th> +<th>AVD Skin</th> +</tr> + +<tr> +<td>7-inch tablet</td> +<td><span style="white-space:nowrap"><code>large</code> or</span><br /><code>-sw600</code></td> +<td><code>hdpi</code>,<br /><code>tvdpi</code></td> +<td>Android 4.0+ (API level 14 and higher)</td> +<td>WXGA800-7in</td> +</tr> +<tr> +<td><span style="white-space:nowrap">10-inch</span> tablet</td> +<td><span style="white-space:nowrap"><code>xlarge</code> or</span><br /><code>-sw800</code></td> +<td><code>mdpi</code>,<br /><code>hdpi</code>,<br /><code>xhdpi</code></td> +<td>Android 3.2+ (API level 13 and higher)</td> +<td>WXGA800</td> +</tr> +</table> + +<div class="headerLine clearfloat"><h1 id="related-resources">Related Resources</h1><hr></div> + +<div class="resource-widget resource-flow-layout col-13" + data-query="collection:distribute/essentials/tabletguidelines" + data-sortOrder="-timestamp" + data-cardSizes="9x3" + data-maxResults="6"></div>
\ No newline at end of file |