web-dev-qa-db-ja.com

com.google.Android.gsfパッケージが見つかりませんでした

新しいGoogle Cloud Messagingシステムを使用しようとしていますが、いくつかの問題があります。

入門ドキュメントを読み、デモアプリを確認しました。その後、要件をアプリケーションに適用し、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を追加しました。何が悪いのか分かりません。

72
bahadir arslan

間違ったエミュレータを使用しているようです。

デフォルトのエミュレーターは、通常のAndroidエミュレーターを使用します。このエミュレーターは、Googleパッケージを持たず、マップ、c2dmなどのあらゆる種類のものを実行できません。

やりたいことは、Google APIをサポートできる新しいエミュレーターを作成することです。

次に、プロジェクトを実行するときに、ターゲット名Google APIs (Google Inc).を実行するエミュレーターを選択します

幸運を。

140
thepoosh

おそらくGCMをサポートしていないデバイスで実行されているため、GCMRegistrar.checkDevice(this);例外をスローしています。 logcatを確認してください。

エミュレーターでテストする場合は、エミュレーターがGoogle APIを使用するように設定されていることを確認してください。エミュレータを作成するとき、新しいAVDの作成ウィンドウには「ターゲット」ボックスがあります。そのボックスで「Google API」と書かれているものを選択します。

enter image description here

11