带有 Google Play 服务的 Android Studio

Posted

技术标签:

【中文标题】带有 Google Play 服务的 Android Studio【英文标题】:Android Studio with Google Play Services 【发布时间】:2013-05-13 13:17:06 【问题描述】:

我正在尝试使用新的 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 服务类之后才会出现。 如果有人能解释这个问题背后的原因,我将不胜感激。

【问题讨论】:

任何人都可以帮助这个 compile 'com.google.android.gms:play-services:6.5.87' 添加到 android studio 中的依赖项部分。我们也可以添加罐子,但上面的行做了什么,因为我们没有添加罐子。 【参考方案1】:

我将播放库文件从 google-play-services_lib 复制到我的项目库目录:

google-play-services.jar google-play-services.jar.properties。

然后选择它们,右键单击,“添加为库”。

【讨论】:

感谢您的回答,但它对我不起作用 - 这与我之前尝试过的类似。 这个建议与我在别处读到的其他信息背道而驰。第一个答案中链接的答案已被弃用,因为它使用了这种方法。【参考方案2】:

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

附注:我玩了这么多,我需要做一个gradlew clean 才能让它成功运行

如果您已导入项目或正在使用位于 \extras\google\google_play_services\samples\maps 的 Sample Maps 应用程序工作,请查看本教程。

https://***.com/a/16598478/2414698

如果您是从头开始创建一个新项目,请注意 Xav 在同一篇文章中的 cmets。他描述了 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://***.com/a/16671865/2414698

【讨论】:

您链接到的文章现已弃用。不推荐使用此解决方案。【参考方案3】:

这些答案中的大多数仅解决编译时依赖关系,但您会在运行时发现大量 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 服务库项目。导入时它将检测库项目并将其作为模块导入。我只是在项目导入过程中接受了所有默认值。

【讨论】:

谢谢,但我不想使用 eclipse!【参考方案4】:

在执行以下操作后,我已经完成了这项工作:

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

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

【讨论】:

我得到同样的错误:R.java 和 BuildConfig.java 重复 你有这个模块作为编译依赖吗? 是的!唯一的解决方案是我之前提到的那个(不包括预览文件夹)【参考方案5】:

所有这些答案都是错误的,因为 gradle plugin v0.4.2 的发布在 android studio 下设置 google play 服务是直截了当的。您无需导入任何 jar 或添加任何项目库,也无需在 android studio 下添加任何新模块。您要做的就是将正确的依赖项添加到 build.gradle 文件中。请查看这些链接:Gradle plugin v0.4.2 update、New Build System 和 this sample

正确的方法如下:

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

重启 android studio 并打开 build gradle 文件。您必须修改您的 build.gradle 文件,使其在依赖项下如下所示:

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

最后同步您的项目(AVD 管理器左侧的按钮)。

从 6.5 版开始,您可以包含完整的库(非常大)或仅包含您需要的模块(最佳选项)。也就是说,如果您只需要 Google Maps and Analytics,您可以将前面的示例替换为以下示例:

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

可以找到完整的依赖列表here

一些旁注:

使用最新的播放服务库版本。如果是旧版本,android studio 会高亮显示。截至今天(2 月 5 日是 6.5.87),但您可以在Gradle Please 上查看最新版本

在对 Android Studio 进行重大更新后,按照@user123321 在 cmets 中建议的后续说明清理重建项目

cd 到你的项目文件夹 ./gradlew 清洁 ./gradlew 构建

【讨论】:

嘿,埃斯托尼诺。我也看到了这个更新,但我想知道 Android Studio(至少是 IDE 本身)如何获取依赖项?你是否让它只使用 Gradle 设置? 是的,它对我有用。 IDE 还能够解析新名称。谢谢。 抱歉回复晚了。当您按下同步按钮时,ide 会自动添加新的依赖项。管理 ide 行为的是构建系统,不鼓励以“旧”理念风格对项目进行更改(我的意思是更改模块和项目配置)。我很高兴它对你有用。 确保你 ./gradlew clean 然后 ./gradlew build 在 android studio 2.x 获取依赖之前。否则你会得到一个 NoClassDef 错误 截至今天,我得到的最新版本是 5.2.08【参考方案6】:

Android Studio 中的 Google Play 服务集成。

第 1 步:

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.+'

第 3 步:

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

第 4 步:

Sync project file with grandle.
wait for few minute.

第 5 步:

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

如果您需要帮助,请发表评论。 编码愉快。

【讨论】:

【参考方案7】:
    转到文件 -> 项目结构 选择“项目设置” 选择“依赖项”选项卡 点击“+”并选择“1.Library Dependencies” 搜索:com.google.android.gms:play-services 选择最新版本并点击“确定”

瞧!无需与 Gradle 斗争 :)

【讨论】:

这对我有用,而且非常简单。它已经知道最新的 play-services 版本号——你只需从列表中选择它,gradle 文件就会为你修改! 我可以用同样的方法导入排行榜的BaseGameUtils吗? 是的,艾哈迈德。这样你就可以导入任何Android库了。 简单、优雅的解决方案。感谢@IvoStoyanov,它将为像我这样的初学者节省大量时间。【参考方案8】:

上述解决方案都不适合我。不确定它是特定于我的设置还是新版本。

我使用的是 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 管理器添加“Froyo 的 Google Play 服务”,然后重复第一步。

没有正确理解原因,但这有效。

PS:我刚刚观察到,即使现在我搜索播放服务时也不会出现,但是当我直接滚动并查看列表时,它就在那里。

【讨论】:

【参考方案9】:

关注这篇文章->http://developer.android.com/google/play-services/setup.html

你应该选择Using Android Studio

示例 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

【讨论】:

【参考方案10】:

打开您的项目 build.gradle 文件并在依赖项模块下添加以下行。

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'

【讨论】:

【参考方案11】:

在我的情况下,google-play-services_lib 在我的项目中集成为 Google 地图和 GCM 的模块(外部库)。

现在,这些时间需要实现 Google Places Autocomplete API,但问题是代码是新的,我的库是旧的,所以找不到某些类:

按照这些步骤...

1> 将 Google play 服务 更新到 SDK 管理器中

2> 选择 google play 服务的新 .jar 文件 (Sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs) 替换为旧的

我成功了……!!!

【讨论】:

以上是关于带有 Google Play 服务的 Android Studio的主要内容,如果未能解决你的问题,请参考以下文章

带有活动切换的 Google Play 游戏服务多人游戏

带有 Unity 的 Google Play 服务 - 登录没有任何结果

带有 Google Play 服务位置的 Android 服务导致应用程序随机打开

带有 Room 数据库的 Google play 游戏服务

带有 Google Play 游戏服务和 IntentService 的回合制安卓游戏

带有 Google Play 服务的 Android Studio“仅限设备”位置不起作用