在 Android Studio 中导入 Google Play Services 库

Posted

技术标签:

【中文标题】在 Android Studio 中导入 Google Play Services 库【英文标题】:Import Google Play Services library in Android Studio 【发布时间】:2014-01-31 15:02:38 【问题描述】:

我有一个完全在 android Studio 中开发的 Android 项目(当前版本为 4.2,gradle 版本为 1.9-all)。我想从 Google Play 服务中添加功能。

项目无法解析GooglePlayServicesUtil,当我手动输入导入时(如下所示),我得到Cannot resolve symbol 'common'

import com.google.android.gms.common.GooglePlayServicesUtil;

知道我需要做什么才能让GooglePlayServicesUtil 解决吗?

我的尝试

从 Google Play Services Setup 看来,我只需将 com.google.android.gms:play-services:4.+ 依赖项添加到我的 build.gradle 文件(并使用 gradle 重新同步项目文件)即可使 SDK 可用于我的项目。我确实在ProjectName/module/build/exploded-bundles 中得到了一个“爆炸包”,但这似乎并不奏效。

我已经从 SDK 管理器安装了 Google Play Services、Android Support Repository 和 Google Repository。我也多次删除并重新安装它们:)

编辑:

我是否需要手动将 google_play_services 添加为项目/全局库?我试过了,没有成功。

我正在尝试验证我是否正在使用 Google 服务针对 Platform API 进行开发(如果这可能的话),但我不确定情况是否如此。我所做的任何更改似乎都不起作用。

我项目的外部库显示:

joda-time-2.3 support-v4-13.0.0

源代码

这是我的 ProjectName/module/build.gradle 文件:

buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:0.7.+'
    


apply plugin: 'android'

repositories 
    mavenCentral()


android 
    compileSdkVersion 19
    buildToolsVersion '19.0.1'
    defaultConfig 
        minSdkVersion 17
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    
    buildTypes 
        release 
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        
    
    signingConfigs 
    
    productFlavors 
    


dependencies 
    compile 'com.google.android.gms:play-services:4.+'
    compile 'joda-time:joda-time:2.3@jar'

com.google.android.gms.version 号码在我的清单中解析得很好。这是我的 ProjectName/module/src/main/AndroidManifest.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android" >

    <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.android.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondActivity"/>

        <meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <provider
            android:name=".DataProvider"
            android:authorities="com.example.android.provider" >
        </provider>

        <receiver android:name=".WidgetProvider" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider"
                   android:resource="@xml/widget_info" />
        </receiver>

        <service android:name=".DatabaseService" />
        <service android:name=".WidgetProvider$UpdateService" />
    </application>

</manifest>

这是我的 MainActivity,我正在尝试检查 GooglePlayServices 是否可用:

package com.example.android;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.google.android.gms.common.GooglePlayServicesUtil;

public class MainActivity extends Activity 
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    

    @Override
    public void onResume() 
        Log.i(TAG, "onResume");
        GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
    

【问题讨论】:

您还有问题吗?如果是这样,是否有助于进行干净的构建?我们正在查看您可能遇到的错误 code.google.com/p/android/issues/detail?id=64508。 我现在已经可以正常工作了(感谢@pyus13),但是您提到的错误听起来与我的问题相符。我仍然可以在新项目上重新创建它,所以当 Android Studio 4.3 发布时我会密切关注。感谢您的提醒。 如果其他人遇到此问题寻求帮助,请尝试***.com/questions/21100688/… 看看是否适合您。 我遇到了同样的问题,但用这个解决了:***.com/a/42063112/4531507 【参考方案1】:

尝试一次,确保您在项目结构中没有收到任何错误提示“未添加 ComGoogleAndroidGmsPlay”

打开File &gt; Project Structure 并检查以下所有内容。如果显示错误,请单击标记的红色灯泡,然后单击“添加到依赖项”。

这是 Android Studio 中的一个错误,已在下一个版本 (0.4.3) 中修复

【讨论】:

我的项目结构窗口底部确实出现错误,但我的显示为 Library 'Gradle:ComGoogleAndroidGmsPlayServices4030.aar' is not used。无论如何,当我点击红色灯泡并点击“添加到依赖项”,然后选择我正在使用的模块,然后点击应用,它就可以了! 我的build.gradle 看起来根本没有改变。任何想法为什么会这样,以及我将来可以做些什么来避免再次执行这个额外的步骤? 哦,这些错误几乎完全是假的。我有一个错误打开来压制它们。 @ScottBarta 如果没有这些错误,我不知道如何进入屏幕截图中显示的屏幕(项目库设置?)。到达那里的正确方法是什么? 没有正确的方法可以到达那里;我们根本不打算让用户使用那个特定的 UI,因为它只会更新 IntelliJ 对事物的内部表示,并且不会修改 Gradle 构建文件,这是最终的事实来源。然而,让用户感到沮丧的是,即使 Gradle 构建文件正确,IntelliJ 的内部表示也会出现问题。这是由于我们试图消除的错误造成的。【参考方案2】:

我有类似的问题无法解决 com.google.android.gms.common。

我按照设置指南 http://developer.android.com/google/play-services/setup.html 操作,它可以工作!

总结:

    从 SDK 管理器安装/更新了 Google Play 服务和 Google 存储库 在 build.gradle 中添加了依赖项:compile 'com.google.android.gms:play-services:4.0.30' 将 AndroidManifest.xml 更新为 &lt;meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /&gt;

【讨论】:

该错误与 Android Studio 0.4.2 有关。如果您使用的是 Android Studio 0.4.3 或更高版本,则依赖项解析应该像您描述的那样工作。 发生此问题时,我使用的是 Android Studio 0.4.3。 我的安卓0.4.4也出现了这个问题。 这在 1.3 中仍未修复,看起来像:D【参考方案3】:

我通过在 sdk manager 中安装 google play services 包解决了这个问题。

在它之后,创建一个新的应用程序并在 build.gradle 中添加这个

compile 'com.google.android.gms:play-services:4.3.+'

像这样

dependencies 
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.3.+'

【讨论】:

我认为PlayServicesUtil 不需要整个 play-services 库。 play-services-gcm 之类的东西就足够了。【参考方案4】:

在遇到相同问题数小时后,请注意,如果您的 jar 在 libs 文件夹中,一旦您将其设置在“依赖项”上就会导致问题,所以我只是注释文件树依赖项并使用

依赖关系

//compile fileTree(dir: 'libs', include: ['*.jar'])  <-------- commented one 
compile 'com.google.android.gms:play-services:8.1.0'
compile 'com.android.support:appcompat-v7:22.2.1'

问题就解决了。

【讨论】:

【参考方案5】:

我刚刚试用了您的build.gradle,我可以正常导入 GMS,所以这不是问题。

这是Google Play services (rev 13)Google Repository (rev 4)。看看那些已经安装了一次:)

【讨论】:

这些是我拥有的版本(只是仔细检查过)。当 play-services 作为依赖项正确下载时会发生什么变化?是否将某些内容添加到项目“外部库”部分?它会出现在其他地方吗?【参考方案6】:

我遇到了同样的问题。我只是尝试重建、清理和重新启动,但没有运气。然后我只是删除

compile 'com.google.android.gms:play-services:8.3.0'

来自 build.gradle 并重新同步。之后,我再次放置并重新同步。接下来,我清理了项目,问题就消失了!!

我希望它会帮助你们中的任何人面临同样的问题。

【讨论】:

【参考方案7】:

//gradle.properties

systemProp.http.proxyHost=www.somehost.org

systemProp.http.proxyPort=8080

systemProp.http.proxyUser=userid

systemProp.http.proxyPassword=密码

systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost

【讨论】:

以上是关于在 Android Studio 中导入 Google Play Services 库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse 中导入 Android Studio 项目?

在 Android Studio 中导入 ActionBarsherlock 时 Gradle 位置不正确错误

在android Studio中导入.aar [重复]

在 Android Studio 中导入 Google Play Services 库

如何在 Android Studio 中导入现有项目时设置 gradle home

在 Android Studio 中导入 Urban Airship 会产生编译问题?