LogCat消息:找不到Google Play服务资源。检查项目配置以确保包含资源

时间:2013-08-05 22:08:59

标签: android google-maps google-play-services

我有一个使用Google Maps Android v2 API的应用程序。我已将google-play-services_lib库项目添加到我的工作区,并按照这些页面上的说明从我的应用程序项目添加了对它的引用:

一切似乎都运行良好:应用程序使用默认标记显示地图和叠加层。所以我很确定我已经正确设置了Google Play服务和Google Maps API。

但是,每当地图视图初始化时(在第二代Nexus 7上),我都会在ADT LogCat窗口中看到此消息:

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

消息级别为“错误”,标记为GooglePlayServicesUtil

这似乎是良性的,因为我的应用程序运行正常。但我该怎么做或检查以试图解决可能出现的问题?


更多信息:每次在LogCat中显示“未找到Google Play服务资源”消息时,都会显示这些消息,即警告并标记为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'

有关该问题的更多详细信息,请访问:Google Maps works fine on Android but I still get an error "Could not find class 'maps.i.k', referenced from method maps.z.ag.a"

再次,该应用程序似乎工作得很好。也许忽略这些“错误”是安全的吗?

22 个答案:

答案 0 :(得分:88)

Google Mobile Ads SDK FAQ声明:

  

我一直收到错误'Google Play服务资源没有   找到。检查您的项目配置以确保资源   包括在内。'

     

您可以安全地忽略此消息。您的应用仍然会抓取并投放横幅广告。

因此,如果你正确地包含了google-play-services_lib,并且你正在获得广告,那么你就没什么可担心的了(我猜......)

答案 1 :(得分:48)

这是Google Play服务库中的一个错误,它在issue 755下提交。

不幸的是,目前还没有任何解决方案。

答案 2 :(得分:36)

我今天早上遇到了这个问题,看起来很奇怪,因为我的应用程序工作正常,直到今天。我得到了完全相同的“未找到Google Play服务资源...”消息。

我尝试打开常规Google地图应用程序以查看我是否可以获取我的位置,但它找不到它。即使在等待5分钟之后,这也是通常从服务提供商通过手机信号塔获得位置的足够时间。所以我检查了位置服务。

无论如何,问题原来是在位置服务下的我的S3上 - > Google位置服务。它没有被检查。检查了其他两个位置选项( VZW位置服务独立GPS服务),但最后一个,Google位置服务不是。打开后,常规Google地图可以找到我的位置,我的应用程序可以找到我的位置,问题就消失了。

由于以下原因弹出错误消息:

mMap.setMyLocationEnabled(true);

未启用Google位置服务时。

在做了一些测试后,看起来当前位置是否为空(无法从所有来源确定),那么在尝试打开setMyLocationEnabled时会出现此错误。

答案 3 :(得分:32)

我已反编译Google Play服务修订版14库。我认为com.google.android.gms.common.GooglePlayServicesUtil.class中存在一个错误。上述字符串仅出现在一个地方:

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.");
    }
....

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

有一个import com.google.android.gms.R.string;,但没有使用string.something,所以我猜这是错误 - 应该有import com.google.android.gms.R;

然而isGooglePlayServicesAvailable方法按预期工作(除了记录该警告),但该类中还有其他方法,它使用无导入R.class,因此可能存在其他一些错误。虽然我的应用中的横幅效果很好......

答案 4 :(得分:20)

您必须将google-play-services-lib添加为库项目。他们更新了SDK。有几个教程。对Eclipse来说很简单:

Right click project -> properties -> Android

Enter image description here

有关更详细的演练:

Importing the library-project

How to get GoogleMaps running on emulator

答案 5 :(得分:12)

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

  1. 删除google-play-services_lib库项目。
  2. 删除[您的项目]中的(现在无效)google-play-services_lib参考>属性>机器人。
  3. android-sdk-x/extras/google_play_services/libproject导入了google-play-services_lib库项目。导入项目时,会出现“将项目复制到工作区”选项。 UNCHECK IT。
  4. 使用[您的项目]>将(现在有效的)google-play-services_lib参考添加到您的项目中属性>机器人。
  5. 这对我有用。我希望它对你有帮助!

答案 6 :(得分:4)

当我使用Admob时,我遇到了这个问题,因为我忘记将我的广告单元ID写入@string

答案 7 :(得分:3)

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

  

错误:找不到与给定名称匹配的资源(在'value'处,值为'@ integer /        GOOGLE_PLAY_SERVICES_VERSION')。

要解决该错误,许多人建议使用原始值 4030500 ,而不是@integer/google_play_services_version,但这仅适用于Google服务修订版13。

如果您使用Froyo的任何旧版本或版本(与我一样),您应该在其中添加其他值。要知道应该放什么价值,只需打开Goog​​le Play服务清单并复制粘贴version_code值即可。对于Froyo服务,它 3265130 。添加完之后我就停止了这个错误,最后我开始在应用程序中接收坐标。

答案 8 :(得分:3)

我有同样的问题。在Google API控制台中,您应该检查是否只为该应用生成了一个密钥。我有一段时间将我的代码从一台PC迁移到另一台PC等等(它变得凌乱),并为我的一个项目提供了多个密钥。旧的密钥在API控制台页面上都列为非活动状态,但由于某种原因导致冲突。完全删除后,我再次运行它并且有效。

答案 9 :(得分:3)

对我来说,唯一可行的解​​决方案是添加android-support-v7-appcompat库。看来这个库也是需要的,以便摆脱那条消息。从那以后我的申请一直很好!

我希望它有所帮助!

答案 10 :(得分:2)

我在这里遇到了同样的问题。正如Magnus上面所说,对我来说,由于SDK更新到22.0.5版本,它正在发生。

在我的Android SDK(包括Google Play服务)和Eclipse中的Android插件中执行完整更新后,我可以在我的应用程序中使用播放服务lib。

答案 11 :(得分:2)

对于IntelliJ IDEA个用户

经过几天的努力,使其在IntelliJ IDEA 13中运行的唯一方法是导入库。以下是所有步骤:

  1. 更新Android SDK,以便安装最新的Play服务。
  2. 转到android-sdk-root/extras/google/google_play_services/libproject目录。
  3. 复制google-play-services_lib并将其粘贴到IntelliJ IDEA项目旁边(有些人建议直接使用此目录,但我建议保持此代码清洁!)。
  4. 打开IntelliJ IDEA项目属性并添加新模块google-play-services_lib
  5. 检查它是否标记为库。
  6. google-play-services_lib库项目添加为主项目的依赖项。
  7. 同时添加google-play-services库作为依赖库。
  8. 在我下面提供的链接中,您可以看到它在IntelliJ IDEA 13中的外观图像。如果不添加这两个中的一个,它将无法工作。

    PS。我问了一个问题, Why does IntelliJ IDEA 13 require both lib project and lib itself (google-play-service) to be added as a dependency? ,为什么它是IntelliJ IDEA 13必须的,以及为什么我们不能只导入库或项目。

答案 12 :(得分:1)

我也有同样的问题。我也试图寻找解决方案,但在我找不到任何解决方案后,我尝试重启我的手机(Android设备),它解决了这个问题。

请试一试!重新启动您的移动设备,然后Eclipse保持安全并检查其是否有效。

答案 13 :(得分:1)

我也有同样的问题。在开始时,它工作正常,但不久之后我完全从我的设备上卸载了我的应用程序(我在我的手机上运行它)并再次运行它,它显示了同样的错误。

我已经包含了所有的lib和资源,因为它正在工作,但我仍然收到此错误,所以我从我的项目构建中删除了所有引用和lib,更新了google服务播放到修订版10,从设备中完全卸载了应用程序然后再次添加所有资源和库并运行它,它又开始工作了。

这里要注意的一件事是在运行时我仍然在我的LogCat中看到此错误消息,但在我的设备上它现在正常工作。

答案 14 :(得分:0)

我遇到了同样的问题,我创建了自己的API来检查是否安装了Google Play服务,它对我来说很好。只需传递谷歌播放服务的包裹信息,它将为您提供值

下面是代码:

public static boolean isGooglePlayServicesInstalled() { try { ApplicationInfo info = NativeActivity.CURRENT.getPackageManager().getApplicationInfo("com.google.android.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; }

答案 15 :(得分:0)

你知道,我不认为这是来自sdk的错误。 &#34;未找到Google Play服务资源。检查您的项目配置,以确保包含资源&#34;是完全正确的。放入/ libs的jar文件不包含任何资源,如* xml,* png等。错误日志意味着这一点。如果您曾经添加过支持库,例如 v4 v7-appcompat v7-cardview v7-recyclerview v7-pallete v7-gridlayout ,有时会记录暗示资源短缺的日志。所有这些都是因为项目中的资源没有被导入。因此,尽快将支持项目导入为库。当然,您首先通过 SDK管理器 extras

项下下载此支持项目

答案 16 :(得分:0)

我遇到了同样的问题。正如Kristopher Johnson所说,我引用了google-play-services_lib,但它并没有起作用。 我在项目属性/ java构建路径/ libraries / android依赖项下添加了google_play_services_lib.jar(查看你的SDK / google文件夹),错误消失了。

答案 17 :(得分:0)

LE:我记得这是关于使用谷歌地图,所以我的回答并没有真正回答最初的问题,但我希望如果他们遇到同样的问题,有些人会节省数小时/几天的时间。玩游戏服务。

我也有这种令人难以置信的神秘错误。这与我的位置服务没有任何关系,但是没有正确阅读documentation,更准确地说是第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在这里)。但是上面那条小线修正了一切。

答案 18 :(得分:0)

我认为这是当前Google Play服务库修订版15中的一个错误,因为潜在原因似乎是由于未能读取资源文件引起的:

  

W / ResourceType(25122):请求资源0x7f0c000d失败,因为它很复杂   E / GooglePlayServicesUtil(25122):找不到Google Play服务资源。检查项目配置以确保包含资源。

Google Play服务库似乎尝试读取资源文件,并且在资源无法加载时具有显示此错误消息的通用catch-all。这与库中的kreker managed to decompile相对应,并会解释日志消息。

答案 19 :(得分:0)

在我的情况下,这意味着,我的实现中存在某种错误,并且它表示无法找到错误消息的资源以在LogCat中正确显示。当我在实现中修复了这个错误时,LogCat的问题也消失了。所以实际上,除非你缺少一些非常必要的资源,否则你不应该集中精力修复缺少的资源,而是修复你的实现。

错误,BTW,是我在调试模式下运行广告而没有进入广告测试模式。

答案 20 :(得分:0)

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

mLocationClient.setMockMode(true);

答案 21 :(得分:0)

与多个开发人员合作时,我遇到了完全相同的问题。如果我从我的ADT运行该项目它运作良好,但从他们的运作不是..

答案是将SHA-1密钥与软件包名称放在Google API console以及我的密码中。我们是三个开发人员,所以我们需要输入三个SHA-1密钥..

我希望它会给你一些启发......