Com.google.android.gsf 包找不到

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

我阅读了《入门》文档并回顾了演示应用程序; 之后我将需求应用到我的应用程序中,然后我用 API 16创建了一个新的虚拟设备。

但是,当我尝试注册我的设备到 GCM,它失败了,因为这一行:

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; 我不知道哪里出错了。

50037 次浏览

我觉得你用错模拟器了。

默认模拟器使用一个普通的 Android 模拟器,它没有任何 Google 软件包,不能运行各种类型的东西,比如地图、 c2dm 等等。

你想要做的,是创建一个新的模拟器,可以支持 GoogleAPI。

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

祝你好运。

它可能运行在不支持 GCM 的设备上,因此对 GCMRegistrar.checkDevice (this)的调用将引发异常。确认一下你的日志。

如果您正在模拟器上测试它,请确保已经将模拟器设置为使用 GoogleAPI。当你创建模拟器,创建新的 AVD 窗口有一个“目标”框。在那个框中选择一些写有“ GoogleAPI”的内容。

enter image description here