将我的项目升级到最新版本的 Google Play 服务(v4.0,于 2013 年万圣节发布)时,您现在应该在AndroidManifest.xml文件中添加一个新标签。
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并查看该符号的原始整数:
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" />
这样做绝对没问题,然后我可以编译并运行项目和应用程序就好了。但这绝对是一个不受欢迎的解决方案,具有明显的可升级性问题。
有任何想法吗?
请注意,此修复可能仅适用于 IntelliJ 用户!! (这篇文章底部的更多信息应该适用于所有人。)
修复了这个问题!我使用IntelliJ,结果发现我只是错误地配置了将google- play-services_lib模块包含为依赖项的方式。
google- play-services_lib
由于我完全通过 GUI 解决了这个问题,而不是通过编辑任何文件,这里有几个屏幕截图:
所以我的项目结构开始看起来像这样......
然后我google-play- services通过选择它然后单击底部的减号按钮从我的依赖项列表中删除了该库。注意对话框底部的错误,因为我的项目确实需要这个库。但别担心,我们很快就会重新添加它!
google-play- services
接下来我添加google-play- services_lib为模块依赖项而不是库依赖项。然后我点击底部的向上箭头按钮几次,将此依赖项移至列表顶部。但请注意底部的错误(我们还没有完成!)
google-play- services_lib
然后,我单击错误消息区域对话框底部的灯泡,弹出这个小弹出窗口,提供两个选择( 添加到依赖项… 或 删除库 )。单击 添加到依赖项… 选项!
应该会弹出一个新的小对话框窗口。它给了我两个选择,一个用于我的主要项目(它的名称已模糊),然后另一个用于google-play- services_lib项目。根据您的项目,您的可能会有更多(就像您可能看到actionbarsherlock的那样)。选择google-play- services_lib并单击确定!
actionbarsherlock
最后,你完成了!我希望这对其他人有帮助!
我相信这个问题开始发生的原因是因为我 认为 我已经将整个项目正确地包含在google-play- services_lib我的整个项目中......但我实际上没有,而是只正确地包含了它的 jar 文件(google-play- services_lib/libs/google-play-services.jar)。该 jar 文件仅包含代码,而不包含 Android 资源值,因此该@integer/google_play_services_version值从未 真正 存在于我的项目中。但是代码能够在我的项目中使用,所以看起来一切都很好。
google-play- services_lib/libs/google-play-services.jar
@integer/google_play_services_version
附带说明一下,解决这个问题似乎也解决了GooglePlayServicesUtil.getErrorDialog(...).show()我曾经遇到的崩溃问题。但这也可以通过更新修复,并不是 100% 确定。
GooglePlayServicesUtil.getErrorDialog(...).show()