| 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"> | |
| <h2 id="listen-to-your-users"> | |
| Listen to Your Users | |
| </h2> | |
| </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"> | |
| <h2> | |
| Measuring, Analyzing, and Responding to User Behavior | |
| </h2> | |
| </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"> | |
| <h2 id="improve-stability"> | |
| Improve Stability and Eliminate Bugs | |
| </h2> | |
| </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"> | |
| <h2 id="improve-ui"> | |
| Improve UI Responsiveness | |
| </h2> | |
| </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"> | |
| <h2 id="improve-usability"> | |
| Improve Usability | |
| </h2> | |
| </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"> | |
| <h2 id="professional-appearance"> | |
| Professional Appearance and Aesthetics | |
| </h2> | |
| </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"> | |
| <h2 id="deliver-features"> | |
| Deliver the Right Set of Features | |
| </h2> | |
| </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"> | |
| <h2 id="integrate"> | |
| Integrate with the System and Third-Party apps | |
| </h2> | |
| </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="https://material.google.com/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"> | |
| <h2 id="related-resources">Related Resources</h2> | |
| </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> | |