简体   繁体   中英

getting error java.lang.NoClassDefFoundError: com.google.android.gms.common.GooglePlayServicesUtil

I know it'a already many questions was like this, I read all of them, and can't find solution anyway. What i did:

I did all this steps fine from http://developer.android.com/google/play-services/setup.html#Install to install google play sdk In my project property in Android tab I have "google play service library" ok, in Java Builder Path: "Android Private Libraries" i have google-play-service.jar, and this library are selected. I did Import lib project also.

Code for testing i took from http://developer.android.com/google/gcm/client.html . My manifest file:

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="19" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.intent.RECEIVE" />

<permission
    android:name="lt.vaziouju.vaziuoju.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="lt.vaziouju.vaziuoju.permission.C2D_MESSAGE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="api key here" />

    <receiver
        android:name="lt.vaziouju.vaziuoju.GcmBroadcastReceiver"
        android:permission="lt.vaziouju.vaziuoju.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="lt.vaziouju.vaziuoju.c2dm.intent.RECEIVE" />

            <category android:name="lt.vaziouju.vaziuoju" />
        </intent-filter>
    </receiver>

    <service android:name="lt.vaziouju.vaziuoju.GcmIntentService" />

    <activity
        ...
    </activity>
</application>

My java code: package lt.vaziouju.vaziuoju;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;


public class Test_GCM extends Activity {

private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
private static final String TAG = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test__gcm);

    TextView mDisplay = (TextView) findViewById(R.id.display);

    Context context = getApplicationContext();

    // Check device for Play Services APK.
    if (checkPlayServices()) {
        // If this check succeeds, proceed with normal processing.
        // Otherwise, prompt user to get valid Play Services APK.
    }
}

// You need to do the Play Services APK check here too.
@Override
protected void onResume() {
    super.onResume();
    checkPlayServices();
}

/**
 * Check the device to make sure it has the Google Play Services APK. If
 * it doesn't, display a dialog that allows users to download the APK from
 * the Google Play Store or enable it in the device's system settings.
 */


private boolean checkPlayServices() {
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this, PLAY_SERVICES_RESOLUTION_REQUEST).show();
        } else {
            Log.i(TAG, "This device is not supported.");
            finish();
        }
        return false;
    }
    return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.test__gcm, menu);
    return true;
}

}

If you have any idea how I can it, it will be grate. I know I'm not good enough in android programming, and just started learning GCM but I'm already spend 6h to reading a google, and nothing.

Thanks for any idea.

Are you using Eclipse? If Eclipse sees a jar file for compilation, it does not necessarily include it into the apk. (You have to mention the jar in several places, and usually people do not remember in how many places.)

ritht-click on the project name -- build path -- configure build path -- order and export.

The same dialog has a Projects tab, this is where you specify projects you depend on.

If that does not work, put the jar into the libs subdirectory of your project.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM