and delete all HR tags then delete all clearflots, because they add useless whitespace once the "headerLine" class is obsolete THEN, cleanup some HTML to fix float clearance issues. Change-Id: I023fdd70a7071cbb7a8dfde853f1393eb6c59fa0
518 lines
19 KiB
Plaintext
518 lines
19 KiB
Plaintext
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>
|
||
|