com.google.android.gsf包无法找到。

72

我正在尝试使用新的Google云消息传递系统,但遇到了一些问题。

我已经阅读了入门文档并查看了演示应用程序。在此之后,我将要求应用于我的应用程序,然后创建了一个带有API 16的新虚拟设备。

但是当我尝试将我的设备注册到GCM时,由于这行代码而失败:


```java GCMRegistrar.checkDevice(this); ```
GCMRegistrar.checkDevice(getApplicationContext()); 

我在logcat中看到这些错误:

07-05 07:06:31.925: E/AndroidRuntime(691): FATAL EXCEPTION: main
07-05 07:06:31.925: E/AndroidRuntime(691): java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf
07-05 07:06:31.925: E/AndroidRuntime(691):  at com.google.android.gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:83)
07-05 07:06:31.925: E/AndroidRuntime(691):  at aero.tav.mobile.genel$4.onClick(genel.java:201)
07-05 07:06:31.925: E/AndroidRuntime(691):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
07-05 07:06:31.925: E/AndroidRuntime(691):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-05 07:06:31.925: E/AndroidRuntime(691):  at android.os.Looper.loop(Looper.java:137)
07-05 07:06:31.925: E/AndroidRuntime(691):  at android.app.ActivityThread.main(ActivityThread.java:4745)
07-05 07:06:31.925: E/AndroidRuntime(691):  at java.lang.reflect.Method.invokeNative(Native Method)
07-05 07:06:31.925: E/AndroidRuntime(691):  at java.lang.reflect.Method.invoke(Method.java:511)
07-05 07:06:31.925: E/AndroidRuntime(691):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-05 07:06:31.925: E/AndroidRuntime(691):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-05 07:06:31.925: E/AndroidRuntime(691):  at dalvik.system.NativeStart.main(Native Method)

我已经将 gcm.jar 添加到了我的类路径中,但我不知道出了什么问题。


6
你是否在使用模拟器?如果是,那么它是Google API模拟器吗?如果不是,那可能就是你的问题所在。 - thepoosh
2
这是Google API模拟器吗? - thepoosh
2
我现在检查了一下,我认为不是Android 4.3 API 18,而是Android 4.1 API 16。对于API 16有两个不同的模拟器可用,我应该使用哪一个呢? - bahadir arslan
3
Google APIs (Google Inc) 的翻译文本。 - thepoosh
从这里开始http://developer.android.com/guide/google/gcm/index.html - bahadir arslan
显示剩余3条评论
2个回答

140

看起来你正在使用错误的模拟器。

默认模拟器使用普通的Android模拟器,没有任何谷歌包,并且无法运行所有类型的内容,例如地图、c2dm等各种东西。

你需要创建一个新的模拟器,以支持Google API。

然后,在运行项目时,选择运行目标名称为Google APIs (Google Inc)的模拟器。

祝你好运。


2
如果您在Android SDK Manager中找不到适用于您的API级别的Google APIs包,则可以使用以下链接:https://dev59.com/c2sz5IYBdhLWcg3whIM8#7860557。 - mjama

11

这可能是因为设备不支持GCM,所以调用GCMRegistrar.checkDevice( this ); 时会引发异常。请检查您的logcat以确保。

如果您正在模拟器上测试,请确保已设置模拟器使用Google APIs。在创建新AVD窗口时,有一个“目标”框。选择该框中某个带有“Google APIs”的选项。

输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接