Google Play服务库更新和缺少符号@ integer/google_play_services_version

Cha*_*ere 186 android google-play-services

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

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
Run Code Online (Sandbox Code Playgroud)

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

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').
Run Code Online (Sandbox Code Playgroud)

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

<integer name="google_play_services_version">4030500</integer>
Run Code Online (Sandbox Code Playgroud)

然后将其插回我的AndroidManifest.xml:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />
Run Code Online (Sandbox Code Playgroud)

这样做非常好,我可以编译并运行项目和应用程序就好了.但它绝对是一个不可取的解决方案,具有明显的可升级性问题.

有任何想法吗?

PSc*_*tte 257

对于每个使用Eclipse的人来说,这就是你应该如何做到的.

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

然后,在您的项目上

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

  • 您需要导入的文件夹位于:extras\google\google_play_services\libproject (4认同)

Cha*_*ere 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%确定.

  • 不适合我.我没有在错误消息区域的对话框底部的"灯泡"来调出这个给出两个选择的小小弹出窗口" (2认同)
  • 在您的情况下,我可能会尝试从您的项目中完全删除Google Play服务,然后重新导入.由于这个缺失的整数问题只会在Google Play服务首次导入不当时发生,因此从头开始可能是个好主意. (2认同)
  • 除了这个答案(特定于IntelliJ)之外,如果您计划实际使用库方法/类,则必须转到文件>项目结构>选择google-play-services_lib模块>依赖项并选中"已导出" google-play-services.jar (2认同)
  • 简介:将libproject目录添加为模块,并使其成为主项目的依赖项,以从libproject目录中获取整数值 (2认同)

Atu*_*yal 31

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


小智 24

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

google-play-services_lib/res/values/version.xml
Run Code Online (Sandbox Code Playgroud)

MyProjectName/res/values/version.xml
Run Code Online (Sandbox Code Playgroud)

  • 这样做会有效,但问题是它使升级到更新版本的Google Play服务库更加烦人.您可能必须在每次升级时替换`version.xml`文件. (3认同)

Sof*_*LLC 20

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

compile 'com.google.android.gms:play-services:4.0.30'
Run Code Online (Sandbox Code Playgroud)


小智 11

  1. 从Android SDK Manager安装"Google Play服务"和"Google Repository".
  2. 将行添加compile 'com.google.android.gms:play-services:4.1.32@aar'到您的build.gradle.
  3. 结果资源@integer/google_play_services_version将可用.


Com*_*are 10

关闭袖口,感觉您的项目已连接到较旧版本的Play服务库项目.Google推荐的方法是让您在SDK中找到库项目并制作本地副本.但这确实意味着,只要您通过SDK Manager更新Play服务库项目,您还需要用新副本替换副本.


AG1*_*AG1 7

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

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


Jor*_*sys 7

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

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

在此输入图像描述

然后删除/bin/gen我的项目文件夹(类似于干净选项的东西),然后重新建立我的项目.


小智 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以查看屏幕截图


Eri*_*arr 5

Google的Android开发者网站提供了有关如何"向您的项目添加Google Play服务"的说明,并且还与如何升级Play服务版本相关.甚至还有一个下拉菜单可以查看Eclipse,Android Studio或"Something"的说明.如果指令发生变化,这将是查看指令的最佳位置.页面在这里:

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

但由于这里的大多数答案都是针对Eclipse的,因此这里是使用Android Studio升级Play服务的简短摘要

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

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