summaryrefslogtreecommitdiffstats
path: root/docs/html/google/play-services/setup.jd
blob: eb3618b498a29db90b09563ae494a21f54c52750 (plain)
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
page.title=Setup
@jd:body

<div id="qv-wrapper">
  <div id="qv">    
    <h2>In this document</h2>
    <ol>
    <li><a href="#ensure">Ensuring Devices Have the Google Play services APK</a></li>
    </ol>
  </div>
</div>


<p>
    The Google Play services SDK is an extension to the Android SDK and is available to you as a
    downloadable SDK component. This download includes the client library and code samples.
</p>

<p>
    Before you get started developing, make sure that you have an updated version of the Android SDK
    installed on your computer, including the SDK Tools component. If you don't have the SDK,
    visit the <a href="{@docRoot}sdk/index.html">SDK Download page</a>
    on the Android Developers site.
</p>

<p>
    To set up the Google Play services SDK:
</p>

<ol>
    <li>
        Launch Eclipse and select <b>Window &gt; Android SDK Manager</b> or run <code>android</code>
        at the command line.
    </li>
    <li>
        Scroll to the bottom of the package list and select <b>Extras &gt; Google Play services</b>.
        The Google Play services SDK is downloaded to your computer and installed in your Android SDK environment at
        <code>&lt;android-sdk-folder&gt;/extras/google/google_play_services/</code>.
    </li>
    <li>Copy the <code>&lt;android-sdk-folder&gt;/extras/google/google_play_services/libproject/google-play-services_lib</code>        
        library project to a location in your project's source tree.</li>
    <li>If you are using Eclipse, import the library project into your workspace. Click <b>File > Import...</b>, select <b>Android > Existing
    Android Code into Workspace</b>, and browse to the copy of the library project to import it.</li>
    </li>
    <li>Reference the library project in your Android project. See the 
        <a href="{@docRoot}tools/projects/projects-eclipse.html#ReferencingLibraryProject">Referencing a Library Project for Eclipse</a>
        or <a href="{@docRoot}tools/projects/projects-cmdline.html#ReferencingLibraryProject">Referencing a Library Project on the Command Line</a>
        for more information on how to do this.
    </li>
    <li>If you are using <a href="{@docRoot}tools/help/proguard.html">ProGuard</a>, add the following
        lines in the <code>&lt;project_directory&gt;/proguard-project.txt</code> file
        to prevent ProGuard from stripping away required classes:
<pre>
-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}
</pre>
</ol>

<h2 id="ensure">Ensuring Devices Have the Google Play services APK</h2>
<p>
    Google Play delivers updates to the majority of the devices that support Google Play services
    (Android 2.2 devices with the Google Play Store app installed). However, updates might not reach
    supported devices in a timely manner, which are desribed in the following four scenarios:
<p class="note">
<strong>Important:</strong>
<span>
    Because it is hard to anticipate the state devices are in, you must <em>always</em> check for a
    compatible Google Play services APK in your app when you are accessing Google Play services
    features.  For many apps, this is each time in the
    {@link android.app.Activity#onResume onResume()} method of the main activity.
</span>
</p>
<ol>
    <li>
        A recent version of the Google Play Store app is installed, and the most recent Google Play
        services APK has been downloaded.
    </li>
    <li>
        A recent version of the Google Play Store app is installed, but the most recent Google Play
        services APK has <em>not</em> been downloaded.
    </li>
    <li>
        An old version of the Google Play Store app, which does not proactively download Google Play
        services updates, is present.
    </li>
    <li>
        The Google Play services APK is missing or disabled on the device, which might happen if the
        user explicitly uninstalls or disables it.
    </li>
</ol>
<p>
    Case 1 is the success scenario and is the most common. However, because the other scenarios can
    still happen, you must handle them every time your app connects to a Google Play service to
    ensure that the Google Play services APK is present, up-to-date, and enabled.
</p>
<p>
    To help you, the Google Play services client library has utility methods to assist in
    determining whether or not the Google Play services APK is recent enough to support the
    version of the client library that you are using.  If not, the client library sends users to the
    Google Play Store to download a recent version of the Google Play services APK.
</p>

<p class="note">
<b>Note:</b>
<span>
    The Google Play services APK is not visible by searching the Google Play Store. The client
    library provides a deep link into the Google Play Store when it detects that the device has a
    missing or incompatible Google Play services APK.
</span>
</p>

<p>
    It is up to you choose the appropriate place in your app to do the following steps to check for
    a valid Google Play services APK. For example, if Google Play services is required for your app,
    you might want to do it when your app first launches. On the other hand, if Google Play services
    is an optional part of your app, you can do these checks if the user navigates to that portion
    of your app:
</p>

<ol>
    <li>
        Query for the status of Google Play services on the device with the
<a href="{@docRoot}google/play-services/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable()</a>
        method, which returns a result code.
    </li>
    <li>
        If the result code is
<a href="{@docRoot}google/play-services/reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS">SUCCESS</a>,
        then the Google Play services APK is up-to-date, and you can proceed as normal.
    </li>
    <li>
        If the result is
<a href="{@docRoot}google/play-services/reference/com/google/android/gms/common/ConnectionResult.html#SERVICE_MISSING">SERVICE_MISSING</a>,
<a href="{@docRoot}google/play-services/reference/com/google/android/gms/common/ConnectionResult.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a>,
        or
<a href="{@docRoot}google/play-services/reference/com/google/android/gms/common/ConnectionResult.html#SERVICE_DISABLED">SERVICE_DISABLED</a>,
        call <a href="{@docRoot}google/play-services/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int)">getErrorDialog()</a>
        to display an error message to the user, which will then allow the user to download the APK
        from the Google Play Store or enable it in the device's system settings.
    </li>
</ol>