1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
|
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">
<h1 id="listen-to-your-users">
Listen to Your Users
</h1>
<hr>
</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">
<h1>
Measuring, Analyzing, and Responding to User Behavior
</h1>
<hr>
</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">
<h1 id="improve-stability">
Improve Stability and Eliminate Bugs
</h1>
<hr>
</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">
<h1 id="improve-ui">
Improve UI Responsiveness
</h1>
<hr>
</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">
<h1 id="improve-usability">
Improve Usability
</h1>
<hr>
</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">
<h1 id="professional-appearance">
Professional Appearance and Aesthetics
</h1>
<hr>
</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">
<h1 id="deliver-features">
Deliver the Right Set of Features
</h1>
<hr>
</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">
<h1 id="integrate">
Integrate with the System and Third-Party apps
</h1>
<hr>
</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">
<h1 id="related-resources">Related Resources</h1><hr>
</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>
|