建立一個應用程序,將推動通知enabled.when我運行它在真正的設備應用程序崩潰開始讓我給你看我的代碼。 MainActivity.javaGCM在Android設備和應用程序崩潰
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.content.SharedPreferences;
import static com.my.app.CommonUtilities.SENDER_ID;
import android.util.Log;
import android.widget.TextView;
import com.google.android.gcm.GCMRegistrar;
import com.my.app.R;
public class MainActivity extends Activity {
private String TAG = "** pushAndroidActivity **";
private TextView mDisplay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkNotNull(SENDER_ID, "SENDER_ID");
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
setContentView(R.layout.activity_main);
mDisplay = (TextView) findViewById(R.id.display);
final String regId = GCMRegistrar.getRegistrationId(this);
Log.i(TAG, "registration id ===== "+regId);
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
} else {
Log.v(TAG, "Already registered");
}
mDisplay.setText("ffffff"+regId);
}
和外面的onCreate我有
private void checkNotNull(Object reference, String name) {
if (reference == null) {
throw new NullPointerException(
getString(R.string.error_config, name));
}
}
@Override
protected void onPause() {
super.onPause();
GCMRegistrar.unregister(this);
}
但是當我編譯和設備的應用程序運行它甚至加載MainActivity讓我在這裏發表的logcat前突然死機。
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gcm.GCMRegistrar
com.my.app.MainActivity.onCreate(MainActivity.java:28)
android.app.Activity.performCreate(Activity.java:5008)
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
android.app.ActivityThread.access$600(ActivityThread.java:130)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:4745)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
dalvik.system.NativeStart.main(Native Method)
和我的Manifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.my.app.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
<receiver android:name=".MyC2dmReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.my.app" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.my.app" />
</intent-filter>
</receiver>
你在使用庫項目嗎?如果是,那麼一定要確保它用綠色標記表示。如果您使用的是jar文件,那麼它必須位於** libs **文件夾中。最後,一切都很完美,然後清理你的項目並重建它。 – Piyush
看看這裏http://stackoverflow.com/questions/11273938/gcm-java-lang-noclassdeffounderror-com-google-android-gcm-gcmregistrar –
檢查:[this](http://stackoverflow.com/questions/11273938/gcm-java-lang-noclassdeffounderror-com-google-android-gcm-gcmregistrar),[this](http://stackoverflow.com/questions/12734303/gcm-java-lang-noclassdeffounderror-com-google- android-gcm-gcmregistrar),[this](http://stackoverflow.com/questions/16824143/java-lang-noclassdeffounderror-com-google-android-gcm-gcmregistrar)和[this](http:// stackoverflow。 COM /問題/ 15055351 /獲取-的NoClassDefFoundError與 - 谷歌雲的消息-GCM-ON-NEXUS-4)。 –