【问题标题】:Android Studio with Google Play Services带有 Google Play 服务的 Android Studio
【发布时间】: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 中的依赖项部分。我们也可以添加罐子,但上面的行做了什么,因为我们没有添加罐子。

标签: android google-play-services 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://stackoverflow.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://stackoverflow.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 updateNew Build Systemthis 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. 转到文件 -> 项目结构
    2. 选择“项目设置”
    3. 选择“依赖项”选项卡
    4. 点击“+”并选择“1.Library Dependencies”
    5. 搜索:com.google.android.gms:play-services
    6. 选择最新版本并点击“确定”

    瞧!无需与 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) 替换为旧的

          我成功了……!!!

          【讨论】:

            猜你喜欢
            • 2014-10-31
            • 2013-05-31
            • 1970-01-01
            • 2016-10-10
            • 1970-01-01
            • 2014-02-05
            • 2015-08-02
            • 1970-01-01
            • 2015-01-23
            相关资源
            最近更新 更多