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


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" />

这样做绝对可以,然后我就可以编译并运行项目和应用程序了。但这绝对是具有明显可升级性问题的​​不受欢迎的修复程序。

有任何想法吗?


现在有完全相同的问题-但找不到整数。
比约恩·霍尔斯特罗姆(BjörnHallström),

Answers:


256

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

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

然后,在您的项目中

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


我已经尝试过了(按照另一个问题的说明来找到文件夹),但是Eclipse表示它无法.project在指定的google-play-services_lib目录中写入文件。显然,直接的原因是Eclipse无法在SDK所在的Program Files目录中写入,但是更具体的问题是为什么有必要修改.project文件(显然属于SDK,因此应该是“正确的”)首先。
OR Mapper 2014年

我之前从未见过此消息,因此我不知道确切的解决方法。请记住,除非已明确修改,否则我认为该文件夹中不存在错误。可能它已经过时并且需要重新下载(这不太可能也是问题,但您永远不会知道)。
PSchuette 2014年

尝试添加库或导入项目时是否遇到此错误?
PSchuette

谢谢-在Eclipse上为我工作。我以为我做对了,但重新做了一下,就解决了编译器问题。
Anna Billstrom 2014年

4
您需要导入的文件夹在这里:extras \ google \ google_play_services \ libproject
Kamil Szot 2014年

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
不为我工作。我没有“错误消息区域中对话框底部的灯泡来显示此小小的弹出窗口,该弹出窗口提供了两种选择”
Vadorequest 2013年

2
就您而言,我可能会尝试从您的项目中完全删除Google Play服务,然后重新导入。由于此缺失的整数问题仅在Google Play服务最初导入不正确的情况下才会发生,因此从头开始可能是一个好主意。
Charles Madere

1
@Vadorequest,您还可以选择google-play-services-lib模块,并将google-play-services.jar文件添加为模块依赖项(!到google-play-services-lib模块!)
Su-Au Hwang

2
除了此答案(特定于IntelliJ)之外,如果您打算实际使用库的方法/类,则还必须转到文件>项目结构>选择google-play-services_lib模块>依赖项,并检查“已导出” google-play-services.jar
黄Su-Au

2
摘要:将libproject目录添加为模块并使其与您的主项目相关,以从libproject目录中获取整数值
John61590

31

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


这也是解决我的问题,如果您问我,这是Google不可思议的疏忽。
Henrique de Sousa 2013年

谢谢队友,这解决了我的问题
Fabii 2014年

1
这解决了我的问题。为什么eclipse导入会跳过此文件?有什么线索吗?
nizam.sp 2014年

24

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

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

MyProjectName/res/values/version.xml

3
这样做是可行的,但问题是,这会使升级到Google Play服务库的较新版本更加麻烦。您可能必须在version.xml每次升级时替换该文件。
Charles Madere

20

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

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

只是找不到它:错误:配置项目':app'时发生问题。>无法解析配置':app:_debugCompile'的所有依赖项。>找不到与com.google.android.gms:play-services:6.1。+匹配的任何版本。在以下位置搜索: jcenter.bintray.com/com/google/android/gms/play-services/…jcenter.bintray.com/com/google/android/gms/play-services
matteo

文件:/home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml文件:/ home / teo / Documents / programmi / android-studio-new / sdk / extras / android / m2repository / com / google / android / gms / play-services /必需:xxxxxxx:app:unspecified
matteo 2014年

它查找库的路径似乎与sdk管理器实际下载该库的位置不匹配,但是即使在创建符号链接之后,该问题仍未解决。我想我无法弄清楚它到底需要找到什么文件或文件夹。任何想法?
matteo 2014年

1
要查看您使用的版本:“ ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services”。要获得较新的版本,请运行SDK管理器并更新所需的组件。不要弄乱符号链接。
Sofi Software LLC 2014年

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

1
我加入这个编译“com.google.android.gms:播放服务:52年4月4日”
powder366

这为我做到了。没有人发布build.gradle中的dependencies部分的最终结果是什么样的……那将是有帮助的
snowking16

10

袖手旁观,感觉您的项目已连接到旧版本的Play Services库项目。Google推荐的方法是,您可以在SDK中找到库项目并进行本地复制。不过,这确实意味着,每次通过SDK Manager更新Play Services库项目时,您还需要用新副本替换副本。


是的,我确实通过将使用Android SDK Manager下载的文件的副本放入我的工作目录中,将该库集成到了我的项目中。我也通过做同样的事情将库更新到了这个新版本(从Android SDK目录中复制了文件,并覆盖了项目中现有的文件)。
查尔斯·马德雷


7

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

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

在此处输入图片说明

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


但这会使apk重
Siddharth

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

google-play-services_libF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti 2015年

5

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. 更新“依赖项”下的构建规则,以引用您已下载到开发计算机上的播放服务的版本。

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


对于Android初学者来说,这是一个很好的明确答案。这个答案应该放在更高的位置。
耶尔(Jelle)

4

对于Eclipse,我刚刚在以下位置将项目引用添加到google-play-services_lib:

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


3

我遇到了同样的问题,version.xml文件不在google-play-services_lib中。只需启动您的sdk管理员,并接受更新,尤其是与“ extras”相关的内容即可。


2

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


2
这不是一个好方法。每次更新Google Play服务时,您都需要手动更新。
PSchuette

2

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

dependencies {

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

} 

1

使用Google Play服务Lib时,以下主要操作可以避免很多错误:

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

1

使用Maven和IntelliJ的项目遇到相同的问题。Google Play服务被添加为Maven依赖项。Maven构建可以从命令行正常运行,但是IntelliJ抱怨此缺少符号@integer/google_play_services_version

以我为例,我强制更新了Maven POM文件,它解决了问题。


1

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

  • F:\ Products \ Android \ APP * .java <-我的应用程序在这里,所以我复制到下面的文件夹
  • F:\ Products \ Android \ libs \ google-play-services_lib

1

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

使用“ android”命令安装所有必需的零件。然后在项目根目录中拥有google-play-service_lib /的副本。编辑project.properties以包括以下行:

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

但是,你需要android update project -p . -t android-22google-play-services_lib第一。等效地,添加<property name="android.library.reference.1" value="./google-play-services_lib"/>到您的build.xml(我最小化了我build.xml并放弃了.properties)。
Ciro Santilli郝海东冠状病六四事件法轮功

0

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

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



0

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

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

0

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

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

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


0

展望2017年的任何人,Play服务的10.0.1版本都需要导入play-services-basement(以前位于中play-services-base)。


您能再解释一下吗?我如何看待当前依赖关系以及如何添加更多依赖关系?
哈桑·古尔扎

撰写此答案时,我都是通过手动操作并通过反复试验来完成所有操作。使用gradle使事情变得容易得多。
goobliata

0

Windows 10下的Android Studio 3.3.2

File-> Invalidate Caches / Restart, 然后invalidate and Restart在对话框中选择按钮。


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'    
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.