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