我有一个使用谷歌地图Android v2 API的应用程序。我已经添加了google-play-services_lib库项目到我的工作空间,并从我的应用程序项目中添加了对它的引用,按照这些页面上的说明:

http://developer.android.com/google/play-services/setup.html。 https://developers.google.com/maps/documentation/android/start

一切似乎都很正常:应用程序显示地图和覆盖默认标记。所以我很确定我已经正确地设置了谷歌播放服务和谷歌地图API。

然而,我在ADT LogCat窗口中看到这条消息每当地图视图初始化(在第二代Nexus 7上):

The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.

消息级别是Error,标记是GooglePlayServicesUtil。

这似乎是良性的,因为我的应用程序运行良好。但是我能做些什么来解决问题呢?


进一步的信息:每次“谷歌播放服务资源未找到”消息出现在LogCat中,它前面是这些消息,这是警告和标记ResourceType:

getEntry failing because entryIndex 906 is beyond type entryCount 3

Failure getting entry for 0x7f0b038a (t=10 e=906) in package 0 (error -2147483647)

FWIW,当我搜索项目时,我找不到常量0x7f0b038a,包括gen/R.java文件。

我检查了生成的.apk的内容,它包括了google-play-services_lib/res目录下的所有资源。


另一个更新:添加ActionBarSherlock和更新targetSdkVersion在我的清单从8到17,我现在看到另一个错误在LogCat输出:

Could not find class 'maps.af.k', referenced from method 'maps.ag.an.a'

关于这个问题的更多细节可以在这里找到:谷歌地图在Android上工作正常,但我仍然得到一个错误“无法找到类的Maps . I。K ',引用自方法maps.z.ag.a"

这款应用似乎又一次运行良好。也许忽略这些“错误”是安全的?


当前回答

适用于IntelliJ IDEA用户

经过几天的努力,让它在IntelliJ IDEA 13中工作的唯一方法是导入库。以下是所有的步骤:

Update Android SDK so the latest Play Service is installed. Go to the android-sdk-root/extras/google/google_play_services/libproject directory. Copy google-play-services_lib and paste it next to your IntelliJ IDEA project (some recommend using this directory directly, but I advise to keep this code clean!). Open IntelliJ IDEA project properties and add new Module google-play-services_lib. Check if it's marked as a Library. Add google-play-services_lib library project as a dependency to the main project. Add google-play-services library as a dependency library as well.

在我下面提供的链接中,你可以看到它在我的IntelliJ IDEA 13中的样子。如果不加上这两个中的一个,它就不能工作。

PS.我问了一个问题,为什么IntelliJ IDEA 13需要库项目和库本身(google-play-service)作为依赖项添加?为什么它在IntelliJ IDEA 13中是必须的,以及为什么我们不能只导入库或项目。

其他回答

我相信这是当前谷歌Play Services库的一个bug,修订版15,因为底层原因似乎是由于未能读取资源文件造成的:

W/ResourceType(25122):请求资源0x7f0c000d失败,因为它很复杂 E/GooglePlayServicesUtil(25122): The谷歌Play services resources were not found。检查您的项目配置,以确保资源包括在内。

谷歌Play Services库似乎试图读取资源文件,并在资源加载失败时显示此错误消息的通用catch-all。这与kreker设法从库反编译的内容相对应,并将解释日志消息。

我这里也有同样的问题。正如Magnus上面所说,对我来说,这是因为SDK更新到22.0.5版本。

在我的Android SDK(包括谷歌Play Services)和Eclipse中的Android插件中执行了完整的更新后,我能够在我的应用程序中使用Play Services lib。

我也有同样的问题,我创建了自己的API来检查谷歌播放服务是否安装,它对我来说很好。只要传递谷歌播放服务的包信息,它就会给你值

下面是代码:

公共静态boolean isGooglePlayServicesInstalled() { 试一试 { ApplicationInfo info = NativeActivity.CURRENT.getPackageManager(). getapplicationinfo ("com.google.安卓。Gms ", 0);

LOG.d(LOG_IDENTIFIER, "info : "+ info); return true; } catch(PackageManager.NameNotFoundException e) { e.printStackTrace(); LOG.e(LOG_IDENTIFIER, "NameNotFoundException : "+ e.getMessage()); } return false; }

至于我,我已经通过下一种方式解决了这个问题-正如developer.android.com所说,在添加google-play-services_lib之后,你应该添加<meta-data android:name="com.google.android.gms.version" android: value = " / google_play_services_version " / > 在你的清单,但在新的SDK,你总是会得到一个错误:

错误:没有找到与给定名称匹配的资源(at 'value'与value' @integer/ google_play_services_version”)。

为了解决这个错误,许多人建议使用原始值4030500,而不是@integer/google_play_services_version,但这只适用于谷歌服务版本13。

如果你使用任何旧版本或版本的Froyo(像我),你应该在它里面放另一个值。要知道你应该放什么值,只需打开谷歌播放服务清单,并复制粘贴一个version_code值。Froyo服务是3265130。添加这个后,我已经停止得到这个错误,我已经开始在我的应用程序中接收坐标。

为我删除以下代码修复它!

mLocationClient.setMockMode(true);