Home | History | Annotate | Download | only in essentials
      1 page.title=Optimize Your App
      2 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.
      3 page.image=/distribute/images/gp-optimize-card.jpg
      4 
      5 @jd:body
      6 
      7 <div id="qv-wrapper">
      8   <div id="qv">
      9     <h2>Strategies</h2>
     10     <ol>
     11       <li><a href="#listen-to-your-users">Listen to Your Users</a></li>
     12       <li><a href="#measuring-analyzing-responding">Measuring, Analyzing, and Responding to User Behavior</a></li>
     13       <li><a href="#improve-stability">Improve Stability and Eliminate Bugs</a></li>
     14       <li><a href="#improve-ui">Improve UI Responsiveness</a></li>
     15       <li><a href="#improve-usability">Improve Usability</a></li>
     16       <li><a href="#professional-appearance">Professional Appearance and Aesthetics</a></li>
     17       <li><a href="#deliver-features">Deliver the Right Set of Features</a></li>
     18       <li><a href="#integrate">Integrate with the System and Third-Party Apps</a></li>
     19       <li><a href="#related-resources">Related Resources</a></li>
     20     </ol>
     21   </div>
     22 </div>
     23 
     24 <div class="top-right-float">
     25   <img src="{@docRoot}images/gp-optimize.png" class="quality-top-image" style=
     26   "width:239px;padding-left:1.5em;">
     27 </div>
     28 
     29 <p>
     30   With thousands of new apps being published in Google Play every week, it's
     31   important to look for ways to get the most visibility and the highest ratings
     32   possible. Optimizing the quality of your apps is a key strategy.
     33 </p>
     34 
     35 <p>
     36   A higher quality app can translate to higher user ratings, generally better
     37   rankings, more downloads, and higher retention (longer install periods).
     38   High-quality apps are much more likely to get positive publicity, such as
     39   being featured in Google Play or generating social media buzz.
     40 </p>
     41 
     42 <p>
     43   The quality of your apps is something you should consider addressing both
     44   before and after launch. Gaining users after the launch of a poor quality app
     45   can be hard and recovering costly. On the other hand, maintaining the ranking
     46   of high-quality apps is made easier if there are continual improvements, a
     47   practice that also fuels the impression-install-ranking cycle.
     48 </p>
     49 
     50 <p>
     51   On this page you can find advice on a number of ways in which you can drive
     52   improvements to your apps quality.
     53 </p>
     54 
     55 <div class="headerLine">
     56   <h2 id="listen-to-your-users">
     57     Listen to Your Users
     58   </h2>
     59 
     60 
     61 </div>
     62 
     63 <div class="figure">
     64   <img src="{@docRoot}images/gp-optimizing-chat-bubbles.png">
     65 </div>
     66 
     67 <p>
     68   Listening and hearing your users can be one of your best tools for success.
     69   Start listening to your users before launching your apps and continue to
     70   listen after launch.
     71 </p>
     72 
     73 <h3>
     74   <strong>Listening before you launch</strong>
     75 </h3>
     76 
     77 <p>
     78   You can listen to your users during the development of your apps. This
     79   process can start with focus groups to review app features, continue into
     80   user experience workshops, and onto alpha and beta releases. Listening at
     81   these stages has two main benefits: <strong>youll build apps with features
     82   users want</strong> and <strong>any issues they identify will be cheaper and
     83   quicker to fix</strong> than they would be once the app is launched fully.
     84 </p>
     85 
     86 <p>
     87   If the practicalities of focus groups and user workshops seem excessive in
     88   relation to the development of a particular app, drawing on the feedback of
     89   colleagues, friends, and family can be much more useful than getting no
     90   feedback at all.
     91 </p>
     92 
     93 <p>
     94   It's crucial to conduct user testing before releasing your apps to Google
     95   Play. If you can only engage with colleagues, friends, and family youre
     96   already making a good start. For more extensive testing consider a public
     97   alpha/beta test or creating your own trusted tester program. You can manage
     98   app distribution yourself through email or your own website, or you can use
     99   <a href=
    100   "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">beta-testing</a>
    101   and <a href=
    102   "{@docRoot}distribute/googleplay/developer-console.html#staged-rollouts">staged
    103   rollouts</a> in conjunction with <a href=
    104   "http://www.google.com/+/business/">Google+</a> or <a href=
    105   "https://groups.google.com/forum/#!overview">Google Groups</a> to distribute
    106   software and gather feedback to a subset of users. <strong>Users on alpha or
    107   beta versions cannot leave reviews or ratings</strong>, so there is
    108   <strong>no risk to your rating</strong> on Google Play.
    109 </p>
    110 
    111 <p>
    112   Unless you have to, dont restrict the users you involve in these stages in
    113   the information they can share through their social networks and blogs -
    114   users engaged in these early stages (and listened too) are likely to be great
    115   ambassadors for your apps and will help create great social media buzz.
    116 </p>
    117 
    118 <h3>
    119   Listening after launch
    120 </h3>
    121 
    122 <p>
    123   Once you have launched, the most obvious way to listen to users is by reading
    124   and addressing comments on Google Play. Although the comments aren't always
    125   productive or constructive, some will provide valuable insight on aspects of
    126   your apps. It's important to remember that users have the opportunity to
    127   change their ratings and comments as much as they like.
    128 </p>
    129 
    130 <p>
    131   There are more interactive ways you can reach users, help them address their
    132   concerns, and gather more detailed feedback: by setting up support and
    133   discussion forums. There are some great support tools out there that can put
    134   you in touch with your users directly, from forums such as <a href=
    135   "http://groups.google.com/">Google Groups</a> to comprehensive customer
    136   support products and tools like UserVoice. Once you get set up with such a
    137   tool, make sure to fill in the support link in your Google Play product
    138   details page  users do click through to these.
    139 </p>
    140 
    141 <p>
    142   Also dont forget to use the <a href=
    143   "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">beta-testing</a>
    144   and <a href=
    145   "{@docRoot}distribute/googleplay/developer-console.html#staged-rollouts">staged
    146   rollout</a> features of Google Play with app updates.
    147 </p>
    148 
    149 <div class="headerLine" id="measuring-analyzing-responding">
    150   <h2>
    151     Measuring, Analyzing, and Responding to User Behavior
    152   </h2>
    153 
    154 
    155 </div>
    156 
    157 <div class="figure">
    158   <img src="{@docRoot}images/gp-optimize-analytics.png">
    159 </div>
    160 
    161 <p>
    162   One of the best ways to spot issues to resolve is by measuring user behavior.
    163   Optimizing your app becomes much easier when you analyze performance before
    164   and after you launch. Drop off points, low ratings, and high percent of
    165   uninstalls can be indicative that theres a problem. Measuring and responding
    166   to user-related metrics such as download sources, retention rates, and in-app
    167   behavior regularly is critical to keeping and bringing back your hard earned
    168   user base.
    169 </p>
    170 
    171 <p>
    172   You can get data from tools in Google Play or third-parties to analyze user
    173   behavior. You can identify details such as:
    174 </p>
    175 
    176 <ul>
    177   <li>
    178     <p>
    179       Where installs are coming from.
    180     </p>
    181   </li>
    182 
    183   <li>
    184     <p>
    185       The types of users you are acquiring.
    186     </p>
    187   </li>
    188 
    189   <li>
    190     <p>
    191       What is causing user churn and how to reduce it.
    192     </p>
    193   </li>
    194 </ul>
    195 
    196 <h3>
    197   Statistics for analyzing installs and ratings
    198 </h3>
    199 
    200 <p>
    201   Once youve published your app, Google Play makes it easy to see how its
    202   doing. The <a href="https://play.google.com/apps/publish/">Developer
    203   Console</a> gives you access to a variety of anonymized statistics and custom
    204   charts that show you the app's installation performance and ratings.
    205 </p>
    206 
    207 <p>
    208   You can view data and charts for active, daily, and total installs per unique
    209   devices or users, as well as upgrades and uninstalls. You can also view the
    210   app's daily average user rating and its cumulative user rating. To help you
    211   analyze the data, you can view install and ratings statistics across a
    212   variety of different dimensions such as Android version, device, country, app
    213   version, and carrier.
    214 </p>
    215 
    216 <div>
    217   <img class="border-img" src="{@docRoot}images/gp-dc-stats-mini.png">
    218 </div>
    219 
    220 <p>
    221   You can see your app statistics on timeline charts, for all metrics and
    222   dimensions. At a glance, the charts highlight your apps installation and
    223   ratings peaks and longer-term trends, which you can correlate to promotions,
    224   app improvements, or other factors. You can even focus in on data inside a
    225   dimension by highlighting specific data points (such as individual platform
    226   versions or languages) on the timeline.
    227 </p>
    228 
    229 <p>
    230   You can download all of your installation data as a CSV file for viewing in
    231   the business program of your choice.
    232 </p>
    233 
    234 <h3>
    235   Tracking and analyzing Marketing campaigns
    236 </h3>
    237 
    238 <p>
    239   While you should consider monitoring user behavior data as a part of your
    240   normal activities, its particularly important when youre running any form
    241   of marketing campaign, to make sure youre getting the right users at the
    242   lowest cost possible.
    243 </p>
    244 
    245 <p>
    246   One way to track your marketing campaigns is to link <a href=
    247   "http://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html">
    248   Google Analytics with your Google Play account</a> to analyze activity from
    249   source to install.
    250 </p>
    251 
    252 <div style="margin-top:1em;">
    253   <img src="{@docRoot}images/gp-optimizing-image-4.jpg" class="border-img">
    254 </div>
    255 
    256 <p>
    257   You can also use any of the variety of tools on the market to help track your
    258 marketing success and improvement ROI if you wish. There are also third parties
    259 who can help automate, measure, and optimize your mobile marketing.
    260 </p>
    261 
    262 <div class="headerLine">
    263   <h2 id="improve-stability">
    264     Improve Stability and Eliminate Bugs
    265   </h2>
    266 
    267 
    268 </div>
    269 
    270 <p>
    271   There are many tools and techniques for testing and profiling your app on
    272   different devices and user scenarios.
    273 </p>
    274 
    275 <p>
    276   One noteworthy and yet relatively underused tool for catching stability
    277   issues such as crashes is the <a href=
    278   "{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a>
    279   (Monkey). Monkey will send random UI events to your app's activities,
    280   allowing you to trigger user flows that can uncover stability problems.
    281 </p>
    282 
    283 <p>
    284   Also, with the Google error-reporting features built into most Android
    285   devices, users have a way to report application crashes to you. The error
    286   reports show up in aggregate in the Google Play Developer Console. Make sure
    287   to read these reports often and act on them appropriately.
    288 </p>
    289 
    290 <p>
    291   Last, keep an external bug and feature request tracker and let users know how
    292   to find it. This will enable them to engage with the app at a closer level,
    293   by following features and bugs that affect them. User frustration with app
    294   problems can be effectively managed with diligent issue tracking and
    295   communication. Several community support tools offer issue tracking features,
    296   and if your project is open source, most popular repository hosting sites
    297   offer this as well.
    298 </p>
    299 
    300 <div class="headerLine">
    301   <h2 id="improve-ui">
    302     Improve UI Responsiveness
    303   </h2>
    304 
    305 
    306 </div>
    307 
    308 <div class="figure">
    309   <img src="{@docRoot}images/gp-optimize-speed.png">
    310 </div>
    311 
    312 <p>
    313   One sure-fire way to lose your users is to give them a slow, unresponsive UI.
    314   Research has shown that <a href=
    315   "http://googleresearch.blogspot.com/2009/06/speed-matters.html">speed
    316   matters</a>, for any interface, on mobile, web, or desktop. In fact, the
    317   importance of speed is amplified on mobile devices since users often need
    318   their information on the go and in a hurry.
    319 </p>
    320 
    321 <p>
    322   You can improve your apps' UI responsiveness by moving long-running
    323   operations off the main thread to worker threads. Android offers built-in
    324   debugging facilities such as StrictMode for analyzing your app's performance
    325   and activities on the main thread. See more recommendations in <a href=
    326   "http://www.youtube.com/watch?v=c4znvD-7VDA">Writing Zippy Android Apps</a>,
    327   a developer session from Google I/O 2010.
    328 </p>
    329 
    330 <p>
    331   A great way to improve UI performance is to minimize the complexity of your
    332   layouts. If you open up <a href=
    333   "{@docRoot}tools/help/hierarchy-viewer.html">hierarchyviewer</a> and see that
    334   your layouts are more than 5 levels deep, it may be time to simplify your
    335   layout. Consider refactoring those deeply nested <a href=
    336   "{@docRoot}reference/android/widget/LinearLayout.html">LinearLayouts</a> into
    337   <a href="{@docRoot}guide/topics/ui/layout/relative.html">RelativeLayout</a>.
    338   The impact of View objects is cumulative  each one costs about 1 to 2 KB of
    339   memory, so large view hierarchies can be a recipe for disaster, causing
    340   frequent VM garbage collection passes which block the main (UI) thread. You
    341   can learn more from the Google I/O session <a href=
    342   "http://www.youtube.com/watch?v=wDBM6wVEO70">World of ListView</a>.
    343 </p>
    344 
    345 <p>
    346   Lastly, as pointed out in the blog post <a href=
    347   "http://android-developers.blogspot.com/2010/10/traceview-war-story.html">Traceview
    348   War Story</a>, tools like <a href=
    349   "{@docRoot}tools/help/traceview.html">traceview and ddms</a> can be your best
    350   friends in improving your app by profiling method calls and monitoring VM
    351   memory allocations, respectively.
    352 </p>
    353 
    354 <div class="headerLine">
    355   <h2 id="improve-usability">
    356     Improve Usability
    357   </h2>
    358 
    359 
    360 </div>
    361 
    362 <div class="sidebox-wrapper" style="float:right;">
    363   <div class="sidebox">
    364     <p>
    365       <strong>Tip:</strong> As youre designing or evaluating your app's UI,
    366       make sure to read and become familiar with the <a href=
    367       "{@docRoot}design/index.html">Android Design</a> guidelines. Included are
    368       many examples of UI patterns, styles, and building blocks, as well as
    369       tools for the design process.
    370     </p>
    371   </div>
    372 </div>
    373 
    374 <p>
    375   In usability and in app design too, you should listen carefully to your
    376   users. Ask a handful of real Android device users (friends, family, etc.) to
    377   try out your app and observe them as they interact with it. Look for cases
    378   where they get confused, are unsure of how to proceed, or are surprised by
    379   certain behaviors. Minimize these cases by rethinking some of the
    380   interactions in your app. See the <a href=
    381   "{@docRoot}design/patterns/index.html">Patterns section</a> for tips to
    382   improve your design.
    383 </p>
    384 
    385 <p>
    386   In the same vein, two problems that can plague some Android user interfaces
    387   are small tap targets and excessively small font sizes. These are generally
    388   easy to fix and can make a big impact on usability and user satisfaction. As
    389   a general rule, optimize for ease of use and legibility, while minimizing, or
    390   at least carefully balancing, information density.
    391 </p>
    392 
    393 <p>
    394   Another way to incrementally improve usability, based on real-world data, is
    395   to implement <a href=
    396   "http://code.google.com/mobile/analytics/docs/">Analytics</a> throughout your
    397   app to log the use of particular sections. Consider demoting infrequently
    398   used sections to the overflow menu in the <a href=
    399   "{@docRoot}design/patterns/actionbar.html">Action bar</a>, or removing them
    400   altogether. For often-used sections and UI elements, make sure they're
    401   immediately obvious and easily accessible in your app's UI so that users can
    402   get to them quickly.
    403 </p>
    404 
    405 <div class="headerLine">
    406   <h2 id="professional-appearance">
    407     Professional Appearance and Aesthetics
    408   </h2>
    409 
    410 
    411 </div>
    412 
    413 <p>
    414   There's no substitute for a real user interface designer  ideally one who's
    415   well-versed in mobile and Android, and handy with both interaction and visual
    416   design. One popular venue to post openings for designers is <a href=
    417   "http://jobs.smashingmagazine.com/">jobs.smashingmagazine.com</a>, and
    418   leveraging social networks can also surface great talent.
    419 </p>
    420 
    421 <p>
    422   If you don't have the luxury of working with a UI designer, there are some
    423   ways in which you can improve your app's appearance yourself. You can use
    424   Adobe Photoshop, Adobe Fireworks, GIMP, Inkscape or other image editing
    425   tools. Mastering the art of the pixel in these apps takes time, but honing
    426   this skill can help build polish across your interface designs. Also, master
    427   the resources framework by studying the framework UI assets and layouts and
    428   reading through the <a href=
    429   "{@docRoot}guide/topics/resources/index.html">resources documentation</a>.
    430   Techniques such as 9-patches and resource directory qualifiers are somewhat
    431   unique to Android, and are crucial in building flexible yet aesthetic UIs.
    432 </p>
    433 
    434 <p>
    435   Before you get too far in designing your app and writing the code, make sure
    436   to visit the <a href="{@docRoot}design/index.html">Android Design section</a>
    437   and learn about the vision, the building blocks, and the tools of designing
    438   beautiful and inspiring user interfaces.
    439 </p>
    440 
    441 <div class="headerLine">
    442   <h2 id="deliver-features">
    443     Deliver the Right Set of Features
    444   </h2>
    445 
    446 
    447 </div>
    448 
    449 <p>
    450   Having the <em>right</em> set of features in your app is important. It's
    451   often easy to fall into the trap of feature-creep, building as much
    452   functionality into your app as possible. Providing instant gratification by
    453   immediately showing the most important or relevant information is crucial on
    454   mobile devices. Providing too much information can be as frustrating (or even
    455   more so) than not providing enough of it.
    456 </p>
    457 
    458 <p>
    459   Again, listen to your users by collecting and responding to feature requests.
    460   Be careful, though, to take feature requests with a grain of salt. Requests
    461   can be very useful in aggregate, to get a sense of what kinds of
    462   functionality you should be working on, but not every feature request needs
    463   to be implemented.
    464 </p>
    465 
    466 <div class="headerLine">
    467   <h2 id="integrate">
    468     Integrate with the System and Third-Party apps
    469   </h2>
    470 
    471 
    472 </div>
    473 
    474 <p>
    475   A great way to deliver a delightful user experience is to integrate tightly
    476   with the operating system. Features like <a href=
    477   "{@docRoot}guide/topics/appwidgets/index.html">Home screen widgets</a>,
    478   <a href="https://material.google.com/patterns/notifications.html">rich
    479   notifications</a>, <a href="{@docRoot}guide/topics/search/index.html">global
    480   search integration</a>, and <a href=
    481   "{@docRoot}reference/android/widget/QuickContactBadge.html">Quick
    482   Contacts</a> are fairly low-hanging fruit in this regard.
    483 </p>
    484 
    485 <p>
    486   For some app categories, basic features like home screen widgets are
    487   expected. Not including them is a sure-fire way to tarnish an otherwise
    488   positive user experience. Some apps can achieve even tighter OS integration
    489   with Android's contacts, accounts, and sync APIs.
    490 </p>
    491 
    492 <p>
    493   Third-party integrations can provide even more user delight and give the user
    494   a feeling of device cohesiveness. It's also a really nice way of adding
    495   functionality to your app without writing any extra code (by leveraging other
    496   apps' functionality). For example, if you're creating a camera app, you can
    497   allow users to edit their photos in another app before saving them to their
    498   collection, if they have that third-party application installed. More
    499   information on this subject is available in the Android Training class
    500   <a href="{@docRoot}training/basics/intents/index.html">Interacting with Other
    501   Apps</a>.
    502 </p>
    503 
    504 <div class="headerLine">
    505 <h2 id="related-resources">Related Resources</h2>
    506 </div>
    507 <div class="resource-widget resource-flow-layout col-13"
    508   data-query="collection:distribute/essentials/optimizing, tag:addia"
    509   data-sortOrder="-timestamp"
    510   data-cardSizes="6x3"
    511   data-maxResults="3"></div>
    512 <div class="resource-widget resource-flow-layout col-13"
    513   data-query="tag:adia"
    514   data-sortOrder="-timestamp"
    515   data-cardSizes="6x3"
    516   data-maxResults="3"></div>
    517 
    518