Google Play服务库更新并丢失符号@ integer / google_play_services_version

当我的项目升级到最新版本的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" /> 

这样做的工作绝对好,我可以编译和运行项目和应用程序就好了。 但这显然是一个不可取的解决scheme,具有明显的可升级性问题。

有任何想法吗?

所以对于每个使用eclipse的人来说,这是如何完成的:

Eclipse – >导入 – >现有的Android代码 – >浏览 – >导航到谷歌播放服务_lib文件夹(Android SDK /额外/谷歌/谷歌播放服务/ libproject)。

然后,在你的项目上,控制点击 – >属性 – > android – >库,添加 – >select刚刚导入的项目 – >确定

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

解决了这个问题! 我使用IntelliJ ,结果我刚刚configuration错误,包括google-play-services_lib模块作为依赖项。

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

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

第2步 - 删除谷歌播放服务库 然后,通过select它,然后单击底部的减号button,从我的依赖关系列表中删除了google-play-services库。 注意对话框底部的错误,因为我的项目绝对需要这个库。 不过别担心,我们很快就会重新join!

第3步 - 添加谷歌播放服务作为模块依赖 接下来,我将google-play-services_lib添加为模块依赖项,而不是库依赖项。 然后我点击底部的向上箭头button,将这个依赖关系移动到列表顶部。 但要注意底部的错误(我们还没有完成!)

第4步 - 点击灯泡添加谷歌播放服务库作为依赖 然后,我点击错误消息区域对话框底部的灯泡,popup一个小小的popup窗口,提供两个select( 添加到依赖关系…删除库 )。 点击Add to dependencies …选项!

第5步 - 将库添加到google-play-services_lib模块 一个新的小对话窗口应该popup。 它给了我两个select,一个用于我的主项目(名称模糊不清),另一个用于google-play-services_lib项目。 你可能有更多的取决于你的项目(如你可能会看到actionbarsherlock ,类似的东西)。 selectgoogle-play-services_lib _lib,然后点击好吧!

最后,你完成了! 我希望这可以帮助别人!

更多信息

我相信这个问题发生的起因是因为我认为我已经把整个google-play-services_lib项目包括进了我的整个项目中,但实际上我并没有这样做, ( google-play-services_lib/libs/google-play-services.jar )。 该jar文件只包含代码,而不是Android资源值,所以@integer/google_play_services_version值从来没有真正在我的项目中。 但代码能够在我的项目中使用,所以看起来好像一切都好。

作为一个方面说明,解决这个问题似乎也修复了我曾经有过的GooglePlayServicesUtil.getErrorDialog(...).show()崩溃。 但是这也可以通过更新来解决,而不是真的100%确定。

我遇到了同样的问题,显然,Eclipse在创build副本时,将原始的google-play-services_lib项目中的version.xml文件保留在/ res / values中。 我从原始项目中拉出文件,并将其粘贴到项目的副本中,问题得到解决。

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

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

 MyProjectName/res/values/version.xml 

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

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

感觉就像你的项目已经连接到一个老版本的Play Services库项目。 Google推荐的方法是让您在SDK中find库项目并制作本地副本。 但是,这确实意味着,只要您通过SDKpipe理器更新Play服务库项目,就需要用新的副本来replace您的副本。

  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将可用。

在更新到最后的版本之后,我的所有项目都遇到了这个问题,但解决方法是再次添加库引用:

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

在这里输入图像描述

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

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

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

解决了Eclipse

遵循以下步骤:

  1. 导入google-play-services_lib文件夹作为项目,使用import->现有的Android代码进入工作区
  2. 从项目属性中selectAndroid部分,在底部的“库”部分中,单击“添加”,然后selectgoogle-play-services_lib并按照链接http://i.stack.imgur.com/opSeJ.png查看截图;

对于Eclipse,我只是将项目引用添加到了google-play-services_lib:

属性-Android在“库”窗格(底部窗格)中,确保列出了google-play-services_lib。 如果没有,请点击添加button,然后selectgoogle-play-services_lib。

Google的Android开发者网站提供了有关如何“将Google Play服务添加到您的项目”的说明,同时也与如何升级Play服务版本相关。 甚至有一个下拉菜单来查看Eclipse,Android Studio或“其他”的说明。 这将是最好的地方查看说明,如果他们改变。 页面在这里:

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

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

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

您可以在\ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services文件夹中查找您在开发计算机上下载的play-services版本的版本号,如此处所述: 如何将Google Play服务版本与安装版本相匹配?

我有同样的问题,version.xml文件不是在google-play-services_lib。 刚开始您的SDK经理,接受更新,尤其是与“额外”相关的事情。

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

以下是在使用Google Play服务Lib时避免大量错误的主要操作:

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

在我的情况下,我需要将google-play-services_lib文件夹复制到我的应用程序源代码的同一个驱动器中

  • F:\ Products \ Android \ APP * .java < – 我的应用程序在这里,所以我复制到下面的文件夹
  • F:\产品\的Android \库\的Google Play-services_lib

当不使用IDE,但使用命令行构build(使用ant和ndk-build),这是如何解决它:

用'android'命令安装所有需要的部分。 然后在您的项目根目录中有一个google-play-service_lib /的副本。 编辑project.properties以包含这一行:

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

通过将Google Play服务添加到我的模块:应用程序gradle构build文件来修复。 文档还说,当你更新GMS时更新版本。

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

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

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

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

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

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

我和使用Maven和IntelliJ的项目有同样的问题。 Google Play服务被添加为maven依赖项。 Maven构build在命令行中工作正常,但IntelliJ抱怨这个缺失的符号@integer/google_play_services_version

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

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

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

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

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