186

将我的项目升级到最新版本的 Google Play 服务(v4.0,于 2013 年万圣节发布)时,您现在应该在AndroidManifest.xml文件中添加一个新标签。

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

不幸的是,当我尝试这样做时,我得到了这个编译错误:

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

然后我可以导航到文件google-play-services_lib/res/values/version.xml并查看该符号的原始整数:

<integer name="google_play_services_version">4030500</integer>

然后将其插入我的AndroidManifest.xml

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

这样做绝对没问题,然后我可以编译并运行项目和应用程序就好了。但这绝对是一个不受欢迎的解决方案,具有明显的可升级性问题。

有任何想法吗?

4

26 回答 26

256

对于使用 Eclipse 的每个人来说,这就是您应该这样做的方式。

Eclipse -> 导入 -> 现有的 android 代码 -> 浏览 -> 导航到 google-play-services_lib 文件夹(android-sdk/extras/google/google_play_services/libproject)。

然后,在你的项目上

控制点击 -> 属性 -> android -> 库,添加 -> 选择刚刚导入的项目 -> ok

于 2013-11-14T23:01:13.710 回答
78

请注意,此修复可能仅适用于 IntelliJ 用户!!(这篇文章底部的更多信息应该适用于所有人。)

修复了这个问题!我使用IntelliJ,结果发现我只是错误地配置了将google-play-services_lib模块包含为依赖项的方式。

由于我完全通过 GUI 解决了这个问题,而不是通过编辑任何文件,这里有几个屏幕截图:

第 1 步 - 初始项目结构 所以我的项目结构开始看起来像这样......

第 2 步 - 删除了 google-play-services 库 然后我google-play-services通过选择它然后单击底部的减号按钮从我的依赖项列表中删除了该库。注意对话框底部的错误,因为我的项目确实需要这个库。但别担心,我们很快就会重新添加它!

第 3 步 - 添加 google-play-services 作为模块依赖项 接下来我添加google-play-services_lib为模块依赖项而不是库依赖项。然后我点击底部的向上箭头按钮几次,将此依赖项移至列表顶部。但请注意底部的错误(我们还没有完成!)

第 4 步 - 单击灯泡以将 google-play-services 库添加为依赖项 然后,我单击错误消息区域对话框底部的灯泡,弹出这个小弹出窗口,提供两个选择(添加到依赖项...删除库)。单击添加到依赖项...选项!

第 5 步 - 将库添加到 google-play-services_lib 模块 应该会弹出一个新的小对话框窗口。它给了我两种选择,一种用于我的主要项目(它的名称已模糊),然后另一种用于google-play-services_lib项目。根据您的项目,您的可能会有更多(就像您可能看到actionbarsherlock的那样)。选择google-play-services_lib并单击确定!

最后,你完成了!我希望这对其他人有帮助!

更多信息

我相信这个问题开始发生的原因是因为我认为我已经将整个项目正确地包含在google-play-services_lib我的整个项目中......但我实际上没有,而是只正确地包含了它的 jar 文件(google-play-services_lib/libs/google-play-services.jar)。该 jar 文件仅包含代码,而不包含 Android 资源值,因此该@integer/google_play_services_version值从未真正存在于我的项目中。但是代码能够在我的项目中使用,所以看起来一切都很好。

附带说明一下,解决这个问题似乎也解决了GooglePlayServicesUtil.getErrorDialog(...).show()我曾经遇到的崩溃问题。但这也可以通过更新修复,并不是 100% 确定。

于 2013-11-07T19:10:03.517 回答
31

我遇到了同样的问题,显然 Eclipse在制作副本时以某种方式将version.xml文件留在了原始项目的 /res/values 中。google-play-services_lib我从原始项目中提取文件并将其粘贴到我的项目副本中,问题已解决。

于 2013-11-18T10:39:57.853 回答
24

在 Eclipse 上,将 google play 库导入到项目工作区后,我刚刚复制了version.xml文件

google-play-services_lib/res/values/version.xml

MyProjectName/res/values/version.xml
于 2013-12-05T20:54:42.143 回答
20

对于使用 gradle 的任何人:不要包含项目源代码,而是使用 SDK 管理器下载它并将这一行添加到依赖项中:

compile 'com.google.android.gms:play-services:4.0.30'
于 2014-03-19T06:07:32.207 回答
12
  1. 从 Android SDK Manager 安装“Google Play Services”和“Google Repository”。
  2. 将该行添加compile 'com.google.android.gms:play-services:4.1.32@aar'到您的build.gradle.
  3. 结果,资源@integer/google_play_services_version将可用。
于 2014-02-11T13:02:41.660 回答
10

即兴发挥,感觉就像您的项目已连接到旧版本的 Play Services 库项目。Google 推荐的方法是让您在 SDK 中找到库项目并制作本地副本。但是,这确实意味着,每当您通过 SDK 管理器更新 Play Services 库项目时,您还需要用新副本替换您的副本。

于 2013-11-07T18:53:42.730 回答
7

更新到最后一个版本后,我的所有项目都遇到了这个问题,但只需再次添加库引用即可解决:

如果您在 Eclipse 中的工作区中没有该库,您可以使用以下命令添加它: File-> Import-> Existing Android Code Into Workspace-> 浏览并导航到google-play-services_lib项目库 ( android-sdk/extras/google/google_play_services/libproject)。

在此处输入图像描述

/bin然后删除/gen我的项目的文件夹(类似于 clean 选项)并再次构建我的项目。

于 2015-02-27T22:41:53.367 回答
7

我在尝试使用 google_play_services_froyo 时也遇到了这个问题。

我提交了这个错误:https ://code.google.com/p/google-plus-platform/issues/detail?id=734

于 2013-12-16T05:35:36.507 回答
6

已解决 Eclipse

请按照以下步骤操作:

  1. 使用 import->Existing Android Code Into Workspace 将 google-play-services_lib 文件夹作为项目导入
  2. 从项目属性中选择 Android 部分,在底部的库部分中单击添加并选择 google-play-services_lib 并应用按照链接http://i.stack.imgur.com/opSeJ.png查看屏幕截图
于 2014-09-12T19:28:45.790 回答
5

Google 的 Android 开发者网站上有关于如何“将 Google Play 服务添加到您的项目”的说明,它们也与如何升级 Play 服务版本有关。甚至还有一个下拉菜单可以查看 Eclipse、Android Studio 或“其他”的说明。如果指令发生变化,那将是查看指令的最佳位置。页面在这里:

http://developer.android.com/google/play-services/setup.html

但是由于这里的大部分答案都是针对 Eclipse 的,这里简单总结一下使用 Android Studio 升级 Play Services

  1. 打开应用程序模块目录中的 build.gradle 文件。注意:Android Studio 项目包含一个顶级 build.gradle 文件和每个模块的 build.gradle 文件。请务必为您的应用程序模块编辑文件。
  2. 更新“依赖项”下的构建规则以引用您在开发计算机上下载的播放服务版本。

您可以通过查看您的 \sdk\extras\google\m2repository\com\google\android\gms\play-services 文件夹找到您在开发机器上下载的播放服务版本的版本号,如此处所述:如何将 Google Play 服务修订版与安装版本匹配?

于 2014-11-30T21:20:43.463 回答
4

对于 Eclipse,我只是在以下位置添加了对 google-play-services_lib 的项目引用:

Properties-Android 在 Library 窗格(底部窗格)中,确保列出了 google-play-services_lib。如果没有,请单击 Add.. 按钮并选择 google-play-services_lib。

于 2013-11-22T05:30:13.130 回答
3

我有同样的问题,version.xml 文件不在 google-play-services_lib 中。只需启动您的 sdk 管理器并接受更新,尤其是与“附加”相关的内容。

于 2014-02-15T03:31:09.793 回答
2

导入 google-play-services_lib 时,检查 AndroidManifest.xml 和 version.xml 中定义的版本代码。我发现版本代码的差异并将其更改为4242000进行更改后, @integer/google_play_services_version中不再有编译错误。在此处输入图像描述

于 2014-03-05T14:32:15.337 回答
2

通过将 Google Play 服务添加到我的 Module:app gradle 构建文件来修复。文档还说在更新 GMS 时更新版本。

dependencies {

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

} 
于 2016-10-12T05:50:29.000 回答
1

就我而言,我需要将 google-play-services_lib 文件夹复制到我的应用程序源代码的同一驱动器中

  • F:\Products\Android\APP*.java <- 我的应用程序在这里所以我复制到下面的文件夹
  • F:\Products\Android\libs\google-play-services_lib
于 2015-03-28T05:00:43.613 回答
1

以下是在使用 Google play 服务库时可以避免很多错误的主要操作:

  1. 确保将 lib 项目复制到 Eclipse 项目工作区。
  2. Google play 服务库项目的目标 SDK 应为“Google
  3. API" 3- 应将元数据添加到清单文件中。
  4. 你的项目目标 SDK 应该是 17,除非你已经完全更新到 19,因为在某些情况下 19 不能正常工作。
于 2014-01-01T22:42:49.003 回答
1

我在使用 Maven 和 IntelliJ 的项目中遇到了同样的问题。Google Play 服务被添加为 Maven 依赖项。maven 构建从命令行运行良好,但 IntelliJ 抱怨这个丢失的符号@integer/google_play_services_version

就我而言,我强制更新了 maven POM 文件,它解决了问题。

于 2015-01-20T13:25:03.227 回答
1

当不使用 IDE 而是使用命令行构建(使用 ant 和 ndk-build)时,解决方法如下:

使用“android”命令安装所有需要的部件。然后在您的项目根目录中拥有一份 google-play-service_lib/ 的副本。编辑 project.properties 以包含此行:

android.library.reference.1=./google-play-services_lib
于 2015-06-07T04:13:05.860 回答
0

我刚刚在 Android SDK Manager 的 Extras 文件夹下更新了 Google Play 服务

于 2014-01-06T06:13:28.297 回答
0

我遇到过同样的问题。问题是“google-play-services.jar”没有正确导入到我的项目中,即使它是 google_play_service_lib 项目的一部分。如果您使用的是 Eclipse,请检查您是否可以在 Android Private Libraries 部分中看到播放服务 jar 文件,以及该文件是否由库导出。

我正在使用 Android SDK 平台工具版本 17(不是 19)和 Android SDK 工具版本 22.0.1

于 2013-12-31T15:13:57.533 回答
0

我的问题是图书馆项目和使用播放服务的项目位于不同的目录中。所以就:

  • 1.将文件添加到同一个工作区,然后删除库。
  • 2.重启eclipse
  • 3.再次添加库项目
  • 4.清除
于 2014-05-28T13:04:37.723 回答
0

Google 建议您不要直接从 SDK 目录创建项目。最好将 lib 项目复制到您的应用所在的位置,然后从那里导入。否则下次您为另一个应用程序导入项目时,它已经在使用中了。

https://developer.android.com/google/play-services/setup.html

注意:您应该引用复制到开发工作区的库的副本——您不应该直接从 Android SDK 目录引用该库。

于 2014-01-18T18:32:34.417 回答
0

Windows 10 下的 Android Studio 3.3.2

File -> Invalidate Caches/Restart 并在出现的对话框中选择invalidate and Restart按钮。

于 2019-04-09T04:58:54.690 回答
0

2017年的任何人,10.0.1版本的播放服务需要导入play-services-basement(使用在play-services-base)。

于 2017-03-24T12:24:23.537 回答
0

我有同样的问题,在你的 build.gradle 中添加这 2 行,问题可能会得到解决。;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
于 2019-10-23T11:12:07.803 回答