将我的项目升级到最新版本的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" />
这样做非常好,我可以编译并运行项目和应用程序就好了。但它肯定是一个不可取的解决方案,具有明显的可升级性问题。
有什么想法吗?
答案 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修复了这一点,而根本没有通过编辑任何文件,这里有几个屏幕截图:
所以我的项目结构开始看起来像这样......
然后,我从依赖项列表中删除google-play-services
库,方法是选择它,然后单击底部的减号按钮。注意对话框底部的错误,因为我的项目绝对需要这个库。但不要担心,我们很快就会重新添加它!
接下来,我添加了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 :(得分: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)
compile 'com.google.android.gms:play-services:4.1.32@aar'
添加到build.gradle
。@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
)。
/bin
和/gen
个文件夹(类似于clean选项)并再次构建我的项目。答案 9 :(得分:6)
为Eclipse解决
按照后续步骤操作:
答案 10 :(得分:5)
Google的Android开发者网站提供了有关如何向您的项目添加Google Play服务的说明,以及它们与如何升级Play服务版本相关。甚至还有一个下拉菜单可以查看Eclipse,Android Studio或其他&#34;其他内容的说明。如果指令发生变化,这将是查看指令的最佳位置。页面在这里:
http://developer.android.com/google/play-services/setup.html
但由于此处的大多数答案都是针对Eclipse的,因此以下是使用Android Studio升级Play服务的简短摘要
您可以在\ 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 中不再出现编译错误。
答案 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服务时避免很多错误的主要措施:
答案 17 :(得分:1)
在我的情况下,我需要将google-play-services_lib文件夹复制到我的应用源代码的相同DRIVE中
答案 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)
对我来说问题是图书馆项目和使用游戏服务的项目位于不同的目录中。所以只是:
答案 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'
}