我有一个使用谷歌地图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"

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


当前回答

我也有这个问题。我的解决方法如下:

删除google-play-services_lib库项目。 删除[你的项目]>属性> Android中的google-play-services_lib引用(现在无效)。 从android-sdk-x/extras/google_play_services/libproject中导入google-play-services_lib library-project。当您导入一个项目时,您会看到“将项目复制到工作区”选项。取消它。 使用[your project] > Properties > Android添加(现在有效)google-play-services_lib引用到你的项目。

这招对我很管用。我希望它也能帮助到你!

其他回答

我相信这是当前谷歌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。

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

mLocationClient.setMockMode(true);

LE:我只记得这是关于使用谷歌地图,所以我的回答并不能真正回答最初的问题,但我希望如果有些人在使用Play Game Services时遇到同样的问题,他们能够省下数小时或数天的时间去敲桌子。

我也犯了这个难以置信的神秘错误。对我来说,这与位置服务无关,但没有正确阅读文档,更准确地说是第3步,它说要将以下内容添加到您的AndroidManifest.xml:

<meta-data android:name="com.google.android.gms.games.APP_ID"
    android:value="@string/app_id" />

显然,在AndroidManifest.xml中还应该有以下内容

<meta-data android:name="com.google.android.gms.version"
   android:value="@integer/google_play_services_version"/>

当你想要实现游戏服务时,我使用了他们建议使用的BaseGameActivity,所以我有点惊讶它不能立即工作。我确实为google-play-services_lib的副本创建了一个专用的模块,我确实有它的最新版本(4323000编写时),我确实将其设置为我的主模块的模块依赖(此处使用Android Studio)。但上面的那句话决定了一切。

我已经反编译谷歌播放服务修订版14库。我认为com.google.android.gms.common.GooglePlayServicesUtil.class有一个bug。前面提到的字符串只出现在一个地方:

public static int isGooglePlayServicesAvailable(Context context) {
    PackageManager localPackageManager = context.getPackageManager();
    try {
        Resources localResources = context.getResources();
        localResources.getString(R.string.common_google_play_services_unknown_issue);
    } catch (Throwable localThrowable1) {
        Log.e("GooglePlayServicesUtil", "The Google Play services resources were not found. "
                + "Check your project configuration to ensure that the resources are included.");
    }
....

在com.google.android.gms.common包中没有R.class。

有一个导入com.google.android.gms.R.string;,但没有使用string。什么,所以我猜这是错误-应该有导入com.google.android.gms.R;。

尽管如此,isGooglePlayServicesAvailable方法仍能正常工作(除了记录该警告),但该类中还有其他方法,它们使用未导入的R.class,因此可能会出现其他一些错误。虽然横幅在我的应用程序工作得很好…