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="{@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">
<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>