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>

