1page.title=Optimize Your App
2page.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.
3page.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>you’ll 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 you’re
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, don’t 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 don’t 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 there’s 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 you’ve published your app, Google Play makes it easy to see how it’s
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 app’s 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, it’s particularly important when you’re running any form
241  of marketing campaign, to make sure you’re 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
258marketing success and improvement ROI if you wish. There are also third parties
259who 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 you’re 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="{@docRoot}design/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