blob: 5df26291948a26f52c2637cb6e26fd74a631eca8 [file] [log] [blame]
page.title=Set Up Google Play Services SDK
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<ol>
<li><a href="#Install">Install the Google Play Services SDK</a></li>
<li><a href="#Setup">Set Up a Project that Uses Google Play Services</a></li>
<li><a href="#Proguard">Create a Proguard Exception</a></li>
<li><a href="#ensure">Ensure Devices Have the Google Play services APK</a></li>
</ol>
</div>
</div>
<p>To develop an app using the <a href="{@docRoot}reference/gms-packages.html">Google
Play services APIs</a>, you must download the Google Play services SDK
from the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.
The download includes the client library and code samples.</p>
<p>To test your app when using the Google Play services SDK, you must use either:</p>
<ul>
<li>A compatible Android
device that runs Android 2.3 or higher and includes Google Play Store.</li>
<li>The Android emulator with an <a href="{@docRoot}tools/devices/index.html">AVD</a>
that runs the Google APIs platform based on Android 4.2.2 or higher.</li>
</ul>
<p>Ideally, you should develop and test your app on a variety of devices, including
both phones and tablets.</p>
<h2 id="Install">Install the Google Play Services SDK</h2>
<p>To install the Google Play services SDK for development:</p>
<ol>
<li>Launch the SDK Manager in one of the following ways:
<ul>
<li>In Android Studio, click <strong>SDK Manager</strong>
<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:19px" />
in the toolbar.</li>
<li>In Eclipse (with <a href="{@docRoot}tools/help/adt.html">ADT</a>),
select <strong>Window</strong> &gt; <strong>Android SDK Manager</strong>.</li>
<li>On Windows, double-click the <code>SDK Manager.exe</code> file at the root of the Android
SDK directory.</li>
<li>On Mac or Linux, open a terminal and navigate to the <code>tools/</code> directory in the
Android SDK, then execute <code>android sdk</code>.</li>
</ul>
</li>
<li>Install the Google Play services SDK.
<p>Scroll to the bottom of the package list, expand <b>Extras</b>, select
<b>Google Play services</b>, and install it. If you're using Android Studio, also install
<b>Google Repository</b> (it provides the Maven repository used for Gradle builds).</p>
<p>The Google Play services SDK is saved in your Android SDK environment at
<code>&lt;android-sdk&gt;/extras/google/google_play_services/</code>.</p>
<p class="note"><strong>Note:</strong> Google Play services 4.0.30 (released
November 2013) and newer versions require Android 2.3 or higher. If your app supports Android 2.2,
you can continue development with the Google Play services SDK, but must instead install
<b>Google Play services for Froyo</b> from the SDK Manager.</p>
</li>
<li>Install a compatible version of the Google APIs platform.
<p>If you want to test your app on the emulator, expand the directory for <b>Android 4.2.2
(API 17)</b> or a higher version, select <b>Google APIs</b>, and install it. Then create a
new <a href="{@docRoot}tools/devices/index.html">AVD</a> with Google APIs as
the platform target.</p>
</li>
<li>Make a copy of the Google Play services library project.
<p class="note"><strong>Note:</strong> If you are using Android Studio, skip this step.</p>
<p>Copy the library project at
<code>&lt;android-sdk&gt;/extras/google/google_play_services/libproject/google-play-services_lib/</code>
to the location where you maintain your Android app projects.
<p>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.</p>
</li>
</ol>
<h2 id="Setup">Set Up a Project that Uses Google Play Services</h2>
<p><b>Using Android Studio:</b></p>
<ol>
<li>Open the <code>build.gradle</code> file inside your application module directory.
<p class="note"><strong>Note:</strong> Android Studio projects contain a top-level
<code>build.gradle</code> file and a <code>build.gradle</code> file for each module.
Be sure to edit the file for your application module.</p></li>
<li>Add a new build rule under <code>dependencies</code> for the latest version of
<code>play-services</code>. For example:
<pre class="no-pretty-print">
apply plugin: 'android'
...
dependencies {
compile 'com.android.support:appcompat-v7:+'
<strong>compile 'com.google.android.gms:play-services:4.3.23'</strong>
}
</pre>
<p>Be sure you update this version number each time Google Play services is updated.</p>
</li>
<li>Save the changes and click <strong>Sync Project with Gradle Files</strong>
<img src="{@docRoot}images/tools/sync-project.png" style="vertical-align:bottom;margin:0;height:19px" />
in the toolbar.
</li>
<li>Open your app's manifest file and add the following tag as a child of the <a
href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application>}</a>
element:
<pre>
&lt;meta-data android:name="com.google.android.gms.version"
android:value="&#64;integer/google_play_services_version" />
</pre>
</li>
</ol>
<p>You can now begin developing features with the
<a href="{@docRoot}reference/gms-packages.html">Google Play services APIs</a>.</p>
<p><b>Using Eclipse or another IDE:</b></p>
<p>To make the Google Play services APIs available to your app, you must reference the library
project you created in step 4 of the <a href="#Install">installation instructions</a>.</p>
<p>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.</p>
<p class="note"><strong>Note:</strong>
You should be referencing a copy of the library that you copied to your development
workspace&mdash;you should not reference the library directly from the Android SDK directory.</p>
<p>After you've added the Google Play services library as a dependency for your app project,
open your app's manifest file and add the following tag as a child of the <a
href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application>}</a>
element:
<pre>
&lt;meta-data android:name="com.google.android.gms.version"
android:value="&#64;integer/google_play_services_version" />
</pre>
<p>Once you've set up your project to reference the library project,
you can begin developing features with the
<a href="{@docRoot}reference/gms-packages.html">Google Play services APIs</a>.</p>
<h2 id="Proguard">Create a Proguard Exception</h2>
<p>To prevent <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> from stripping away
required classes, add the following lines in the
<code>&lt;project_directory&gt;/proguard-project.txt</code> file:
<pre>
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames &#64;com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
&#64;com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
</pre>
<p class="note"><strong>Note:</strong> When using Android Studio, you must add Proguard
to your <code>gradle.build</code> file's build types. For more information, see the
<a href="http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard"
>Gradle Plugin User Guide</a>.
</ol>
<h2 id="ensure">Ensure Devices Have the Google Play services APK</h2>
<p>As described in the <a href="{@docRoot}google/play-services/index.html">Google Play services
introduction</a>, Google Play delivers service updates for users on
Android 2.3 and higher through the Google Play Store app. However, updates might not reach
all users immediately, so your app should verify the version available before attempting to
perform API transactions.</p>
<p class="caution">
<strong>Important:</strong>
Because it is hard to anticipate the state of each device, you must <em>always</em> check for a
compatible Google Play services APK before you access Google Play services
features. For many apps, the best time to check is during the
{@link android.app.Activity#onResume onResume()} method of the main activity.
</p>
<p>The Google Play services library includes utility methods that help you determine whether or not
the Google Play services version on the device supports the version of the client library you are
using. If the version on the device is too old, the system will take the user to Google Play Store
in order to install the recent version of the Google Play services.</p>
<p>Because each app uses Google Play services differently, it's up to you decide the appropriate
place in your app to check verify the Google Play services version. For example, if Google Play
services is required for your app at all times, 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 check
the version only once the user navigates to that portion of your app.</p>
<p>To verify the Google Play services version, call <a href="{@docRoot}reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)"
>{@code isGooglePlayServicesAvailable()}</a>. If the result code is
<a href="{@docRoot}reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS"
>{@code SUCCESS}</a>,
then the Google Play services APK is up-to-date and you can continue to make a connection.
If, however, the result code is
<a href="{@docRoot}reference/com/google/android/gms/common/ConnectionResult.html#SERVICE_MISSING"
>{@code SERVICE_MISSING}</a>,
<a href="{@docRoot}reference/com/google/android/gms/common/ConnectionResult.html#SERVICE_VERSION_UPDATE_REQUIRED"
>{@code SERVICE_VERSION_UPDATE_REQUIRED}</a>,
or
<a href="{@docRoot}reference/com/google/android/gms/common/ConnectionResult.html#SERVICE_DISABLED"
>{@code SERVICE_DISABLED}</a>, then the user needs to install an update. So,
call <a href="{@docRoot}reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int)"
>{@code GooglePlayServicesUtil.getErrorDialog()}</a> and pass it the result error code.
This returns a {@link android.app.Dialog} you should show, which provides an appropriate message
about the error and provides an action
that takes the user to Google Play Store to install the update.</p>
<p>To then begin a connection to Google Play services, read <a
href="{@docRoot}google/auth/api-client.html">Accessing Google Play Services APIs</a>.</p>