在 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 > 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 更新为 <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
【讨论】:
该错误与 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 中导入 Google Play Services 库