Google Play 服务库更新和丢失符号@int/Google _ Play _ Services _ version

在将我的项目升级到最新版本的 Google Play Services (2013年万圣节发布的 V4.0)时,现在应该在 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" />

这样做绝对可以,然后我可以编译和运行的项目和应用程序很好。但它肯定是一个不受欢迎的解决方案,存在明显的升级问题。

有什么想法吗?

218782 次浏览

即兴发挥,感觉就像您的项目连接到了 Play Services 库项目的旧版本。Google 推荐的方法是在 SDK 中找到库项目并进行本地复制。但是,这确实意味着,无论何时通过 SDK Manager 更新 Play Services 库项目,都需要用新的副本替换副本。

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

解决了这个问题!我使用 情报,结果发现我只是配置错误的方式,包括 google-play-services_lib模块作为一个依赖项。

当我完全通过图形用户界面(GUI)而不是编辑任何文件来修复这个问题时,下面是一些截图:

Step 1 - Initial Project Structure 所以我的项目结构开始看起来像这样..。

Step 2 - Removed google-play-services library 然后,我从依赖项列表中删除了 google-play-services库,方法是选择它,然后单击底部的减号按钮。注意对话框底部的错误,因为我的项目绝对需要这个库。不过别担心,我们很快会重新加入的!

Step 3 - Added google-play-services as a module dependency 接下来,我添加了 google-play-services_lib作为模块依赖项,而不是库依赖项。然后,我在底部按几次向上箭头按钮,将这个依赖项移动到列表的顶部。但是请注意底部的错误(我们还没有完成!)

Step 4 - Click the lightbulb to add the google-play-services library as a dependency 然后,我单击错误消息区域对话框底部的灯泡,打开这个小弹出窗口,提供两个选择(增加依赖性..。删除库)。单击 增加依赖性..。选项!

Step 5 - Add the library to the google-play-services_lib module 应该会弹出一个新的小对话框窗口。它给了我两个选择,一个是我的主项目(它的名字被模糊了) ,另一个是 google-play-services_lib项目。根据你的项目,你可能会有更多的东西(比如你可能会看到 actionbarsherlock,诸如此类的东西)。选择 google-play-services_lib,然后单击 OK!

最后,你完成了! 我希望这能帮到其他人!

更多信息

我相信这个问题发生的原因是因为我的 思考,我已经正确地包括了整个 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% 确定。

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

Eclipse-> import-> 现有的 android 代码-> 浏览-> 导航到 google-play-services _ lib FOLDER (android-sdk/excas/google/google _ play _ services/libproject)。

然后,在你的项目上

控件 click-> properties-> android-> library,add-> select the project you just import-> ok

我遇到了同样的问题,显然 Eclipse 在复制的时候把 version.xml文件留在了原来的 google-play-services_lib项目的/res/value 中。我把文件从原来的项目和粘贴到我的项目副本和问题是固定的。

对于 Eclipse,我只是在以下内容中添加了对 google-play-services _ lib 的项目引用:

属性-Android 在 Library 窗格(底部窗格)中,确保列出了 google-play-services _ lib。如果没有,请单击“添加”。.按钮并选择 google-play-services _ lib。

在 Eclipse 上,在将 google play 库导入到项目工作区之后,我只是从中复制了 Version.xml文件

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

MyProjectName/res/values/version.xml

我在试图使用 google _ play _ services _ Froyo 时也遇到了这个问题。

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

我也有同样的问题。问题是,“ google-play-services.jar”没有正确导入进入我的项目,即使它是 google _ play _ service _ lib 项目的一部分。如果您正在使用 Eclipse,请检查并查看是否可以在 Android 私有库部分中看到 play services jar 文件,以及这是否由库导出。

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

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

  1. 确保将 lib 项目复制到 Eclipse 项目工作区。
  2. Google Play 服务库项目的目标 SDK 应该是“ Google
  3. 应将元数据添加到清单文件中。
  4. 您的项目目标 SDK 应该是17,除非您已经完全 更新为19,因为在某些情况下19不能很好地工作。

我刚刚更新了谷歌播放服务下的额外文件夹在 Android SDK 管理器

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

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

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

  1. 从 Android SDK 管理器安装“ 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将是可用的。

我也有同样的问题,version.xml 文件不在 google-play-services _ lib 中。 只要启动您的 sdk 经理,并接受更新,特别是有关的事情“额外的”。

在导入 google-play-services _ lib 时,检查在 AndroidManifest.xml 和 version.xml 中定义的版本代码。 我发现了版本代码的不同,并将其改为 4242000。进行更改后,@ whole/google _ play _ services _ version中不再有编译错误。图片来源: http://i.stack.imgur.com/dXLEu.png“ alt =”在这里输入图片描述“ >

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

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

对我来说,问题是图书馆项目和使用游戏服务的项目在不同的目录中。所以:

  • 1. 将文件添加到相同的工作区,然后删除库。
  • 2. 重新开始日食
  • 3. 再次添加库项目
  • 4安全

在 Eclipse 中解决

按照以下步骤:

  1. 导入 google-play-services _ lib 文件夹作为项目,使用 Import-> 将现有 Android 代码导入工作区
  2. 从项目属性中选择 Android 部分,在 Library 部分单击 Add 并选择 google-play-services _ lib 和 Apply 请点击链接 http://i.stack.imgur.com/opSeJ.png查看截图

Google 的 Android 开发者网站上有关于如何“将 Google Play Services 添加到您的项目”的说明,这些说明也与如何升级 Play Services 版本有关。甚至还有一个下拉菜单,可以查看 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. 更新“依赖项”下的构建规则,以引用您在开发计算机上下载的 play-services 版本。

你可以在你的开发机器上找到你下载的 Play-services 的版本号,通过查看你的 sdk 附加功能 google m2仓库 com google android gms play-services 文件夹,如下所示: 如何将 Google Play Services 修订版与安装版进行匹配?

我在一个使用 Maven 和 IntelliJ 的项目中遇到了同样的问题。Google Play 服务是作为一个专家依赖项添加的。在命令行中,maven 构建工作得很好,但是 IntelliJ 抱怨这个缺少的符号 @integer/google_play_services_version

在我的情况下,我 强制更新 maven POM 文件和它解决了问题。

在最后一个版本更新之后,我的所有项目都遇到了这个问题,但是只要再次添加库参考就解决了:

如果您在 Eclipse 的工作区中没有这个库,那么您可以使用以下命令添加它: 浏览并导航到 google-play-services_lib项目 lib (android-sdk/extras/google/google_play_services/libproject)。

enter image description here

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

在我的例子中,我需要将 google-play-services _ lib FOLDER 复制到应用程序源代码的相同驱动器中

  • F: 产品 Android 应用程序 * . java <-我的应用程序在这里,所以我复制到下面的文件夹
  • 产品 Android libs google-play-services _ lib

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

使用“ android”命令安装所有需要的部件。 然后在你的项目根目录下有一个 google-play-service _ lib/的副本。 编辑 project.properties 以包括下面这行:

android.library.reference.1=./google-play-services_lib

固定通过添加谷歌播放服务到我的模块: 应用程序级别构建文件。文件还说,更新版本时,你更新 GMS。

dependencies {


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


}

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

Windows10下的 Android Studio 3.3.2

文件-> 无效缓存/重新启动 并选择 invalidate and Restart按钮在对话框中出现。

我也有同样的问题,在 build.gradle 中加入这两行,问题就可能解决了。 ;)

dependencies {
implementation 'com.google.android.gms:play-services:12.0.1'
implementation 'com.google.android.gms:play-services-vision:10.0.0'
}