安装带有Google Play服务的Android Studio。

95

我正在尝试使用新的Android Studio测试Google Play服务。 我的项目依赖于google_play_services.jar。 但是,当我尝试重建项目时,我会收到以下错误:

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

看起来有两个BuildConfig文件和两个R类。我该如何解决这个问题?

编辑:

我注意到编译器会编译两个R.java文件:一个在我的项目文件夹中,另一个在%USERPROFILE%.AndroidStudioPreview文件夹中。 因此,我尝试在编译器设置中排除这个“预览”文件夹,现在它可以正常工作了。 这个问题只发生在我开始在项目中使用Google Play服务类之后。 如果有人能够解释这个问题的原因,我将不胜感激。


有人能帮忙解释一下在Android Studio的依赖部分添加'com.google.android.gms:play-services:6.5.87'这行代码是干什么用的吗?我们也可以添加jar包,但既然不添加jar包,那上述代码又是做什么用的呢? - Android Killer
11个回答

244

所有那些答案都是错误的。自从gradle插件v0.4.2发布以来,用Android Studio设置Google Play服务非常简单。你不需要导入任何jar文件,也不需要添加任何项目库,也不需要在Android Studio下添加任何新模块。你所要做的就是将正确的依赖项添加到build.gradle文件中。请查看以下链接:Gradle插件v0.4.2更新新构建系统这个示例

以下是正确的操作方式:

首先,你必须启动SDK Manager并下载并安装位于“extras”下面的以下文件:Android支持存储库Google Play服务Google存储库

重新启动Android Studio并打开build.gradle文件。您必须修改build.gradle文件,使其在dependencies下看起来像这样:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

最后,在AVD管理器左侧找到同步项目的按钮并点击同步。

自版本6.5起,您可以包含完整库(非常大)或仅包括所需的模块(最佳选项)。例如,如果您只需要Google Maps和Analytics,则可以使用以下示例替换先前的示例:

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

你可以在这里找到完整的依赖列表。

一些注意事项:

  • 请使用最新的Play服务库版本。如果是旧版本,Android Studio会将其标记出来。截至今天(2月5日是6.5.87),但您可以在Gradle Please上查看最新版本。
  • 在Android Studio进行主要更新后,请按照@user123321在评论中建议的以下步骤清除并重建您的项目:

    cd到您的项目文件夹
    ./gradlew clean
    ./gradlew build


请查看我在答案中提供的链接。 - Imanol
5
请确保在使用Android Studio 2.x之前,先运行./gradlew clean和./gradlew build来获取依赖项。否则,您将会收到一个NoClassDef错误。 - user123321
我该如何查找最新版本的Google Play服务? - Sven Haiges
提示:确保您使用与您的Android Studio(JetBrain)安装捆绑在一起的好的Android SDK Manager。在我的Mac上,它在这里/Applications/Android Studio.app/sdk/tools/android - Maxence
2
截至今天,我得到的最新版本是5.2.08。 - chrisbjr
显示剩余11条评论

116
  1. 转到 文件-> 项目结构
  2. 选择“项目设置”
  3. 选择“依赖项”选项卡
  4. 点击“+”,并选择“1.库依赖项”
  5. 搜索:com.google.android.gms:play-services
  6. 选择最新版本,然后单击“确定”

完成!无需与Gradle抗争 :)


5
这个方法对我很有效,而且非常简单。它已经知道最新的play-services版本号,你只需从列表中选择它,gradle文件就会自动修改! - Nick Perkins
我可以使用相同的方法导入BaseGameUtils来实现排行榜吗? - eng.ahmed
是的,Ahmed。这样你就可以导入任何Android库。 - Ivo Stoyanov
简单、优雅的解决方案。感谢@IvoStoyanov,它将为像我这样的初学者节省很多时间。 - Manikandan S

5

编辑:这家伙真的把它带回家了,并且有个非常好的小教程 http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

一点注意事项:我玩了很多,所以需要执行gradlew clean才能成功运行

如果您已经导入了项目或正在从extras\google\google_play_services\samples\maps中的示例地图应用程序中工作,请查看此教程。

https://dev59.com/omQn5IYBdhLWcg3wvpUV#16598478

如果您要从头开始创建新项目,请注意Xav在同一篇文章中的评论。他描述了Android Studio使用不同的编译器,您必须手动修改build.gradle文件。我已经成功做到了这一点。我复制了

  • google-play-services.jar
  • google-play-services.jar.properties

到我的lib目录下,并将以下内容添加到我的build.gradle文件中

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

另外,如果这是一个新的项目,请也查看这篇文章。

https://dev59.com/qHLYa4cB1Zd3GeqPV0k0#16671865


7
您提供的链接文章已经过时,不建议使用此解决方案。 - RevNoah

4
大部分答案只涉及编译时依赖项,但是在运行时会出现许多NoClassDef异常。这是因为您需要的不仅是google-play-services.jar。它引用了库项目中的资源,如果只有jar,则这些资源未被正确包含。
对我而言,最好的方法是首先在eclipse中正确设置项目。按照此处描述的方式构建项目,包括您的应用程序和库:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup 然后从eclipse导出您的应用程序项目,并按照此处描述的方式导入Android Studio:http://developer.android.com/sdk/installing/migrate.html。确保导出您的应用程序项目和Google Play服务库项目。在导入时,它将检测到库项目并将其导入为模块。在项目导入过程中,我只接受了所有默认值。

2
谢谢,但我不想使用Eclipse! - androidtester

2
跟随本文 -> http://developer.android.com/google/play-services/setup.html 你应该选择使用Android Studio

enter image description here

示例Gradle文件:

注意:打开应用程序模块目录中的build.gradle文件。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "{applicationId}"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:6.1.+'
}

您可以在此处找到 Google Play 服务的最新版本:https://developer.android.com/google/play-services/index.html


2

以上解决方案都对我没用。不确定是因为我的设置特殊还是新版本的问题。

我正在使用Android Studio Beta 0.8.9,但按照以下指示操作时,在库列表中没有找到com.google.android.gms:play-service:

进入文件 -> 项目结构 -> 选择项目设置 -> 选择“依赖项”选项卡 点击“+” -> 1.库依赖项 -> 选择com.google.android.gms:play-services:+

我已经完成了以下操作:

首先,您必须启动sdk管理器并下载并安装位于“extras”下的以下文件:Android支持存储库,Google play服务,Google存储库。

解决方法是从SDK Manager中添加“面向Froyo的Google Play服务”,然后重复第一步。

不太明白原因,但这个方法有效。

PS:我刚刚观察到,即使现在搜索play-services也找不到它,但直接滚动查看列表时就在那里。


2
Google Play服务在Android Studio中的集成。
第一步:
SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

步骤2:
chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

第三步:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

第四步:

Sync project file with grandle.
wait for few minute.

步骤五:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

如果您需要帮助,请在下方留言。 祝您编程愉快。


1

在做了以下操作之后,我已经使它工作:

  • 将google-play-services-lib作为模块(请注意模块和项目的区别),然后将google-play-services.jar添加到您的模型“libs”目录中。
  • 之后,通过创建一个库或将jar添加到另一个库来将jar添加到构建路径中。我通常有一个单独的IDEA库,将所有我的/libs/*.jar文件添加到其中。
  • 通过模块设置(F4)将库添加到模块的构建路径中。
  • 将google-play-services-lib作为模块依赖项添加到您的项目中。
  • 完成!

注意:这也不会给我带来运行时异常,它可以正常工作。


我遇到了相同的错误:R.java 和 BuildConfig.java 重复了。 - androidtester
你是否将该模块作为编译依赖项? - Johan S
是的!唯一的解决方案就是我之前提到的那个(排除预览文件夹)。 - androidtester

0
打开你的项目 build.gradle 文件,在 dependencies 模块下添加以下行。
dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

以下内容将添加Google AnalyticsMaps,如果您不想集成完整库。
dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}

0
在我的项目中,google-play-services_lib 被作为模块(外部库)集成到了 Google 地图 & GCM 中。
现在,需要实现 Google Places Autocomplete API,但问题是这段代码是新的,而我的库是旧的,所以会出现一些类找不到的情况:
按照以下步骤进行操作...
1> 在 SDK 管理器中更新 Google Play 服务 2> 选择新的 Google Play 服务 .jar 文件(Sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs),替换旧的文件
我成功了...!!!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接