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

时间:2013-11-07 18:27:54

标签: android google-play-services

将我的项目升级到最新版本的Google Play服务(v4.0, released on Halloween 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" />

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

有什么想法吗?

26 个答案:

答案 0 :(得分:257)

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

  

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

然后,在你的项目上

  

控制点击 - &gt;属性 - &gt; android - &gt;库,添加 - &gt;选择刚刚导入的项目 - &gt;确定

答案 1 :(得分:78)

请注意,此修复程序可能仅适用于IntelliJ用户! (此帖子底部的更多信息应适用于所有人。)

修正了这个问题!我使用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,然后点击“确定!”

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

更多信息

我认为这个问题一开始的原因是因为我思考我已将整个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 :(得分:31)

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

答案 3 :(得分:24)

在Eclipse上,将google play库导入项目工作区后,我刚从

复制 version.xml 文件
google-play-services_lib/res/values/version.xml

MyProjectName/res/values/version.xml

答案 4 :(得分:20)

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

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

答案 5 :(得分: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将可用。

答案 6 :(得分:10)

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

答案 7 :(得分:7)

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

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

答案 8 :(得分:7)

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

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

enter image description here

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

答案 9 :(得分:6)

为Eclipse解决

按照后续步骤操作:

  1. 使用,将google-play-services_lib文件夹导入为项目 import-&gt;现有Android代码进入工作区
  2. 从项目属性中选择Android部分,在底部 库部分单击添加,然后选择google-play-services_lib并应用 点击链接http://i.stack.imgur.com/opSeJ.png查看屏幕截图

答案 10 :(得分:5)

Google的Android开发者网站提供了有关如何向您的项目添加Google Play服务的说明,以及它们与如何升级Play服务版本相关。甚至还有一个下拉菜单可以查看Eclipse,Android Studio或其他&#34;其他内容的说明。如果指令发生变化,这将是查看指令的最佳位置。页面在这里:

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

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

  1. 打开应用程序模块目录中的build.gradle文件。 注意:Android Studio项目包含每个模块的顶级build.gradle文件和build.gradle文件。请务必编辑应用程序模块的文件。
  2. 更新&#34;依赖关系&#34;下的构建规则引用您在开发计算机上下载的播放服务版本。
  3. 您可以在\ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services文件夹中找到已在开发计算机上下载的播放服务版本的版本号,如下所述:How do I match a Google Play Services revision with an install version?

答案 11 :(得分:4)

对于Eclipse,我刚刚在google-play-services_lib中添加了项目引用:

属性功能的Android 在“库”窗格(底部窗格)中,确保列出了google-play-services_lib。如果没有,请点击添加..按钮,然后选择google-play-services_lib。

答案 12 :(得分:3)

我遇到同样的问题,版本.xml文件不在google-play-services_lib中。 只需启动你的sdk经理并接受更新,特别是与“额外”相关的事情。

答案 13 :(得分:2)

导入google-play-services_lib时,请检查AndroidManifest.xml和version.xml中定义的版本代码。 我发现版本代码有所不同,并将其更改为 4242000 。进行更改后, @ integer / google_play_services_version 中不再出现编译错误。enter image description here

答案 14 :(得分:2)

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

dependencies {

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

} 

答案 15 :(得分:1)

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

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

答案 16 :(得分:1)

以下是在使用Google Play服务时避免很多错误的主要措施:

  1. 确保将lib项目复制到Eclipse项目工作区。
  2. 适用于Google Play服务lib项目的Target SDK应为“Google
  3. API“3-元数据应添加到清单文件中。
  4. 除非您完全使用,否则您的项目目标SDK应为17 更新到19,因为在某些情况下19不能正常工作。

答案 17 :(得分:1)

在我的情况下,我需要将google-play-services_lib文件夹复制到我的应用源代码的相同DRIVE中

  • F:\ Products \ Android \ APP * .java&lt; - 我的应用程序在这里,所以我复制到下面的文件夹
  • F:\产品\的Android \库\谷歌播放-services_lib

答案 18 :(得分:1)

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

使用&#39; android&#39;安装所有需求部件。命令。 然后在项目根目录中获得google-play-service_lib /的副本。 编辑project.properties以包含以下行:

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

答案 19 :(得分:0)

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

  • 1.将文件添加到同一工作区,然后删除库。
  • 2.Restart eclipse
  • 3.再次添加库项目
  • 4.清除

答案 20 :(得分:0)

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

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

  

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

答案 21 :(得分:0)

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

答案 22 :(得分:0)

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

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

答案 23 :(得分:0)

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

答案 24 :(得分:0)

Windows 10下的Android Studio 3.3.2

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

答案 25 :(得分: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'    
}